VBA最終章まで+α

おはようございます!今日もいい天気ですが寒い!

VBAの続きを書いていきます。

Replace(文字列,検索文字列,置換文字列) 

引数に指定した文字列の中で、

検索文字列で指定した文字列を置換文字列に置き換える  関数

InStr(文字列,検索文字列)

引数に指定した文字列の中で、検索文字列がある位置を数値で返す 関数

 

ではいつも通りプログラム作成からやっていきます。

このようにできました。実行してみます。

 

 

また、Replace関数は文字列の中から不要な部分を除去するときに便利な関数です。

上記の例で(株)の部分を” ”にすればALIS と表示されます。

続いてInStr関数

単独で使用するケースは稀です。検索文字列がないときは0を返すので文字列にある文字が含まれているかどうか調べるときにも使われます。

プログラムがこんな感じです。

続いて実行結果

続いて

StrConv(文字列,文字種)

引数で指定した文字列の文字種を変換する     関数です。

引数 文字種・・・・・・・・・・・・・・・・・・・・・・

プログラムができました。

デワ実行してみましょう。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Format(元の値,書式) 関数

引数に指定した数値や日付などを引数(書式)に適用した結果を返す

書式記号は見にくいかもしれませんが

いまいち上手くいきませんでしたので

 Ctrl + マウスか ズームしてみてください_(._.)_ 申し訳ありません。

ではいつも通りにプログラムを組んでいきます。

正しければ値段もそうですが2540円と出て

そのあと令和と出るはずです。さっそく実行してみます。

 

この通り 令和と出ましたね。ほかにもいろいろありますが・・・

続いて数値を操作する関数を2つ見ていきたいと思います。

Int(数値)

数値の小数部分を切り捨てて整数部分を返す    関数

Abs(数値)

数値の絶対値を返す      関数

早速プログラムを作ってみます。

実行してみます。

 

次にユーザと対話する関数についてやっていきます。

MsgBox関数

引数に指定した文字列を画面に表示します。

ユーザーが操作できるボタンやアイコンを指定できます。

ユーザーがどのボタンを押したか返します。

MsgBox(文字列,ボタンとアイコン,タイトル)

 

では、作っていきます。

出来ました。実行していきますwww

ここはどちらも一緒です

はいの場合はこう出てきます

 

 

 

 

 

 

いいえを押せばこう表示されますね

 

 

 

 

 

 

今回は最後にもう一つ関数を紹介します。

InputBox(メッセージ,タイトル,最初に表示する文字列)

ユーザーが入力した文字列を返す関数です。

デワやっていきます。

出来たので実行していきます。

実行するとこのように箱が出てきます。

なので白いところに入力したい文字を入れて Enter を押せば

このように入力されます。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dir(ファイル名)

引数に指定したファイル名が存在するとき、そのファイル名を返し、存在しないときはからの文字列を返します。

Val(文字列)

文字列形式の数値を、数値形式に変換した結果を返す。

 

では、プログラムをまとめて作っていきます。

これで二つとも完成です。それぞれ実行してみます。

Dirの実行結果

Valの実行結果です。

続いて関数のくみあわせに移ります

VBAの関数も組み合わせて使うのが一般的なので・・・

では、InStr、Left Midを組み合わせたやつをやってみます。

ハイwww 半角スペースで区切られた名前をスペースの前と後ろで分けるプログラムです。

名前は適当ですがすいません。_(_^_)_

実行するとこんな感じになります。

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

今日は9章ブックの操作からはじめていきます。

まず、EXCELでは複数のブックを同時に開くことができる。

1つのブックは Workbookオブジェクト です。

現在EXCELで開いているすべてのブックは、Workbookコレクションです。

また、空の新規ブックを挿入するには Addメソッドを実行します。

既に存在するものを開くときは Openメソッドを実行します。

では試してみましょうwww

上のほうは新規のブックの挿入

下は名前のブックが存在したら開くプログラムです。

(今回は当然存在しません(笑))

結果はこんな感じです

新しくもう1枚開かれます

もう一つのはこう表示されます。

続いてブックを保存するプログラムに移ります。

ブックを上書き保存するときは Saveメソッド

名前を付けて保存の場合は SaveAsメソッド

今回は実行するとこのような画面が出ますが、終了ボタンを押してください。

デバッグボタンを押してしまった場合は実行→メニュー→リセットを

 

また、どのボタンがクリックされるかは誰にも予測はできないのでエラーを防げませんが、エラーを無視することはできます。

それには On ErrorステートメントにResumeNextというキーワードを付けた命令ですが それについてはVBAスタンダードで学習します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ブックを閉じるときは Closeメソッド を実行します。

 

 

こんな感じにプログラム完成です。

実行するとこのような表示が出ますが今回は保存しないをクリック

 

そうするとEXCELのワークシートも閉じられますね。

続いて複数のブックの操作です。

任意のブックを開くときは Activateメソッドを実行。

書式は 表示したいブック.Activate です。

次にワークシートについてやっていきます。

挿入するときはブックの時と同じように Addメソッドを実行します。

シートを挿入するとその挿入したシートがアクティブシートとなります。

 

 

で、これを実行するとこうなります。

ハイ( ^ω^)・・・間違えて二回も実行してしまったのでこうなりますwww

まだまだ続きますが、シートを開く方法は2つあります。

Selectメソッド と Activateメソッド です。

書式は

開きたいワークシート.Select

開きたいワークシート.Activate                デス。

 

シートの名前を変える

ワークシートの名前を変えるには Nameプロパティを使います

対象のワークシート.Name="名前"

任意のワークシートにどんな名前が設定されているかを次のように所得することもできます。

MsgBox 対象のワークシート.Name

ここでちょっと補足~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

名前に設定できない文字は、

:コロン ¥円記号 /スラッシュ ?疑問符 

*アスタリスク [左角括弧 ]右角括弧

です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

今回最後にこんなプログラムを‥‥

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

書式としては、 

ワークシート.Copy Before, After

Beforeで指定したワークシートの左、Afterで指定したワークシートの右にコピーされます。

ワークシートの名前は便宜的に Sheet1(2)などとつけられます。

Before, Afterを同時に指定はできません。

とりあえずこんな感じのプログラムに・・・

実行するとこのようになります。

Moveメソッドもやってみます。

 

動かしてみると…

こうなりますwww

続いてシートの表示と非表示

ワークシートを非表示するには、Visibleプロパティ にFalseを設定する

再表示するにはTrueを設定します。

先ほどの Sheet1 を非表示にしてみます。

これを実行すると・・・・・

 

Sheet1がなくなりましたね。

再表示もしてみます。

続けて削除に移ります。

削除はDeleteメソッドです。

アラートが出るとめんどくさいのでDisplayAlertsプロパティに Falseを設定します。

実行すると・・・・・・・

Sheet3が削除されましたwww

ここまでで9章終了です。

======================================

遂にデバッグ

 

プログラムの初心者の方のために一応説明を書いておこうと思います。

デバッグとは、

プログラムに潜むミスを見つけ出してそのミスを修正する作業

1.文法エラー・論理エラー

文法エラーは、VBAの書式や構文が誤っているエラーです。

例えば

Range("A1)=164 などです。

論理エラーは、VBAの文法的には正しいけど論理的に間違ってるというミス。

例えば次のプログラム

____________________________________________________________

Sub Sample()

      Dim i As Long

      For i = 1 To 3 

                 Cells(i,1)= Worksheets(i).Name

     Next

End Sub

______________________________________________________________

ワークシートが2枚しかない状態で実行するとエラーになります。

エラーが発生すると上のような表示が出てきます。

デバックする場合はデバックボタンをしない場合は終了ボタンを押してください。

デバックボタンを押した場合

黄色の部分が実行できなかった部分で、マクロが一時停止します。

こうした状態をデバックモードといいエラーの原因を調べられます。

続いて

イミディエイトウィンドウ?

プロパティ、変数の内容 実行途中のマクロに関する情報を表示したり、任意の命令を実行できるウインドウです。

補足~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

イミディエイトウインドウはVBAの初期状態ではコードウインドウの下部に表示されてます。ダブルクリックすれば移動できますよ(*^。^*)

あと、イミディエイトウインドウは、大文字と小文字は区別されません。

以上 補足でした~~~~~~~~~~~~~~~~~~~~~~~~~~

実際こんな風に表示されますね。

次にマクロを一時停止する機能を見ていきます。

ブレークポイント

設定の仕方

設定した位置にカーソルを移動し、デバックメニューからブレークポイント設定/解除をクリックすると下の画像のように茶色に反転!!

マクロを再び実行すると

マクロの実行を中止する場合は 実行 → メニュー → リセットを実行するか上の四角い青色のリセットボタンを押してください。

ブレークポイントの解除は設定されている行にカーソルを合わせて

デバック → メニュー → ブレークポイント設定/解除 かF9を押します。

Stopステートメント

マクロを一時停止させデバックモードにする命令です。

?i の下には実行するとiに格納されている数が入ります。

自分が予想するとおそらく3が入る気がしますが‥‥

そもそもウォッチウインドウとは何か?

マクロ実行中に変数やプロパティの内容などを監視できる機能。

いわゆる人間社会の監視カメラ・・・・・・・!

では、はじめていきます。

プログラムはできたので ウォッチウインドウ を開いてみましょう。

表示→ウォッチウインドウで表示されます。

イミディエイトウインドウと同じくダブルクリックでフローティングに切り替えることができます。

ウォッチの追加をクリックするとこのような画面が出るので、

式のところに i=6  プロシージャを先ほど作ったプログラムを選択

式がTrueの時に中断を選択してOK

するとこのようになります↓

で、ウォッチを削除するときは右クリックでウォッチの削除を選択するだけです。

続いてステップ実行

ステップ実行とはマクロを1行ずつ実行する機能です。

先ほどのプログラムを使います。F8を押すと1行目が黄色くなりますね

 

続けて何回かF8を押していき黄色いのが表示されなくなるまで実行します。

 

補足講座~~~~~~~~~~~~~~~~~~

ステップ実行には3つあります

ステップイン ステップオーバー ステップアウト

 

以上補足講座でした( ^)o(^ )

======================================

まず、マクロの実行の仕方は3つ

●実行 メニュー → Sub/ユーザフォームの実行 をクリック

ツールバーの Sub/ユーザフォームの実行 ボタンをクリック 👈これが一番楽

●F5 キーを押す

 

補足①~~~~~~~~~~~~~~~~~~

引数を受け取るプロシージャーは直接実行できない。

例えば

__________________________________

Sub Sample()

         Cell SampleN("WWW")

End Sub

Sub Sample0(tmp As String)

       MsgBox tmp

End Sub

___________________________________

Sub Sample()のプログラムは実行できますが、

Sub Sample0内にカーソルを置いて実行することはできません。

~~~~~~~~~~~~~~~~~以上補足

続いてマクロダイアログボックス

EXCELのワークシートを表示している状態でマクロを実行したい場合は

クロダイアログボックス を使います。

表示の仕方は、表示 タブ⇒マクロ グループ⇒マクロの表示 ボタンをクリックするか Alt +F8  キーを押します。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

EXCEL2003では・・・ツール メニュー マクロ マクロをクリックするか、

Alt +F8 を押します。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 

こんな画面が出てきます。

実行ボタン

リストで選択したマクロを実行します。

ステップインボタン

リストで選択したマクロをステップ実行します。

編集ボタン

VBEを起動してリストで選択したマクロを表示します。

作成ボタン

ボックスに入力した名前のプロシージャを作成します。

削除ボタン

リストで選択したマクロを削除

オプションボタン

ダイアログボックスを開いてプロシージャーのコメントやショートカットキーを編集します。

マクロ保存先

選択したブック内に保存されているプロシージャーがリストに表示されます。

補足②~~~~~~~~~~~~~~~~~~

マクロオプション ダイヤログボックスでマクロにショートカットキーを設定できます。

EXCELに設定されているのと同じのを設定するとEXCELの標準キーよりもマクロに設定したショートカットキーが優先されます。

解除するには、マクロオプション ダイヤログボックスでショートカットキーボックスを空欄にしてOKボタンをクリック

~~~~~~~~~~~~~~~~以上補足②

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

まずはEXCELを立ち上げて・・・・・・・・

開発タブ ⇒ コントロールグループ ⇒ 挿入をクリック

補足~~~~~~~~~~~~~~~~~~~

ハイ、初タブが表示されてないという人は、Office ボタンをクリックして

EXCELのオプション ボタンをクリックし、基本設定の開発タブをリボンに表示する

オプションをオンにする。

詳しくはこちらに表示の仕方が載せてありますのでご覧ください。

続けてフォームコントロールクリック

クリックするとマウスが+の形になるのでドラッグしてボタンを作成します。

同時にマクロ登録のダイアログボックスが表示され今配置したボタンにマクロを登録できます。

例えばこんなボタンを作ってみました。

登録方法はボタンを右クリック マクロの登録 プロシージャーを選択 マクロの保存先を選びOKをおします。

では、ボタンをクリックしてみます。

正しく動けばセルAの10段目までにoooと入力されるはず・・・・・

ハイ。出てきましたね。

次にボタンのサイズなどの変更について。

右クリックで編集できます。

ここで、ボタンにマクロを登録するメリットとデメリットについて

メリット

①操作が簡単

マウスでボタンをクリックすることはパソコンの初心者でもできますね。

②マクロの内容を伝えやすい

例えば このシートを印刷 というボタンがあれば 押せば何が起こるかわかりますね。

処理に合わせてボタンを配置することでユーザーは目的のマクロを確実に実行できます。

③アクティブシートを特定しやすい

ボタンが配置されているワークシートは必ずアクティブシートになります。

デメリット

①ボタンを配置するスペースが必要

②大量のボタンは操作性が悪くなります

大量のボタンを配置する場合は、ボタンの大きさや色をを変えるなどして、グループ分けを検討しましょう。

③他のワークシートから実行できない

ボタンを操作するには、ボタンが配置されているワークシートを開かなければいけません。

ワークシートの数が多いときなど、マクロを実行するためにワークシートを切り替えるのは面倒ですね。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

メニュー/ツールバーに登録(EXCEL2003)からはじめていきます。

EXCEL2003までのバージョンにはメニューバーとツールバーがあり、

メニューバーやツールバーからマクロを実行できます。

補足~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EXCEL2007ではメニューバーとツールバーは廃止されました。

登録の仕方は後程説明します。

 

続いてツールバーへの登録の仕方をやっていきます。

基本的にメニューへの登録と一緒です。

画像がきれいに撮れてなくてすみません(´;ω;`)

 

次にブックにツールバーを添付する

新しく作成したツールバーはブックに添付ができます。

マクロを記述したブックに、そのマクロの実行するためのツールバーを添付しておけば、どのEXCELでブックを開いてもマクロを実行できます。

方法は、

 

メニューやツールバーにマクロを登録するメリット&デメリット

メリット

①どのブックでも利用できる。

②マクロで操作できる

 メニューやツールバーをマクロ操作することもできます。

ブックを開いたときに専用のメニューを追加し、ブックを閉じるときに専用メニューを除去するような仕組みもできます。

デメリット

①マクロの実態と切り離されます。

メニューバーやツールバーEXCELが管理している。

メニューバーやツールバーはBook1.xls開いてなくても操作可能なので、

開いてないときに実行するとマクロが記述されたブックを開いて実行しようとします。

②うっかり消されてしまう

ワークシート上に配置されたボタンは明示的な命令でない限り削除できません。

一方メニューバーに追加したメニューはユーザー設定ダイアログボックスのリセットを押すとすべて初期化されます。

ユーザーがうっかり消してしまうこともありますので・・・

最後にクイックアクセスツールバーに登録する方法

自分の下手な説明よりここを見たほうがわかりやすいと思います・・・・

===   まとめ & 問題 & +α ======

ではこんなプログラムを作ってみます

☆もしセルにALISと入力されていたらCells(i,1)にマんタと入力し

 それ以外だったらCells(i,2)にエラーと入力しましょう。

そしてそのプログラムをボタンで 動くようにしようという問題。

ちなみに IFステートメント For.....NEXTステートメントを使います。

で、プログラムはこんな感じになりました

 

EXCELのほうはこんな風に記述しておきます。

 

ボタン名は今回マンタのボタンとでもしておきますwww

では、押してみます。

こんな結果になりますねwwww

さて、ここまで EXCELVBAベーシック を公開してきましたがどうでしたか?

======================================

ここからは自分がVBAを学んで得たものや勉強の仕方を書いていきます。

で試験があるのですが試験の内容は、

①問題数は、40問前後

②選択式問題

③時間は50分

④合格基準は650~800点(1000点満点)以上の正解率 

 ⁂問題の難易度により変動WWWW(なんでやねん!)

受験料は

一般  12000円 税抜き 今はもう少し高いかも?

割引 10800円 ⁂VBAエキスパート割引受験制度を利用した場合

これが合格証書デス

で、勉強の仕方はひたすらテキストを読み直し

模擬テスト問題を何回もやり直し、3回目ぐらいでようやく合格しましたね。

1年ぐらいかかりましたがしかもクリスマスイブ前日!!!!!

この時思いました。自分にとって最高のクリスマスプレゼントだったなぁ・・・・・と。

(自分は富士○○○○で勉強してこの資格を取得しましたね)

合格証書は合格してから2週間後に来るということなので・・・年明けでしたね。

でしばらく休んで就活を何件かやったんですが・・・効果なし( ^ω^)・・・

50件ぐらいやって0

何のために・・・何のために・・・

とったんやああああああああああああああああああああああああああああああああ

と、当時は思いましたね。

今思えばブログとかに公開するため?

(いやいやいやいや・・・・そんなはずはない気がする。( ´艸`))

そのあとしばらくしてJavaを学びましたね。

まあ今回の話はここらへんでしまいにしておきましょうかね。

ここまでVBAシリーズの記事をご覧くださった皆様ありがとうございました。

VBAシリーズは今回でおしまいですがまた何らかの記事を書く予定なのでよかったらそちらもご覧ください。

ここまでご覧いただき本当にありがとうございました。

 

 BY MT