====== VBA (Visual Basic for Applications)の使い方 ====== このページでは、VBA (Visual Vasic for Applications)の使い方についてまとめる。VBAは、Microsoft Officeで動作するプログラミング言語である。Word, Excel, Accesse等のアプリケーションを操作することができる。VBAは「マクロ」と混同されるが、マクロはアプリケーション動作を自動実行する「機能」である。このマクロをつくるのに必要なプログラミング言語がVBAである。 ===== - VBAの開発環境 ===== VBAは、Visual Basic Editor(VBE)で開発を行う。 ==== VBE (Visual Basic Editor) ショートカットキー ==== ^キー^内容^ |Alt + F11|Visual Basic Editor起動| |Alt + F8|マクロダイアログボックスの起動| |F7|コードウィンドウに移動| |Ctrl + G|イミディエイトウィンドウの表示、または、移動| |F5|Visual Basic Editor上の選択したマクロを実行| |Ctrl + Space|Visual Basic Editor上で自動メンバー表示| |Ctrl + ↑|Visual Basic Editor上で1つ前のプロシージャに移動| |Ctrl + ↓|Visual Basic Editor上で1つ後のプロシージャに移動| |Ctrl + Home|モジュールの先頭に移動| |Ctrl + ←|前の単語に移動| |Ctrl + →|後の単語に移動| |Ctrl + Shift + ←|単語のカーソル以前を選択| |Ctrl + Shift + →|単語のカーソル以降を選択| |Shift + F2|選択している変数、プロシージャが定義されている行に移動| |Ctrl + Shift + F2|Shift + F2で移動した行から元の位置に戻る| |Tab|インデント(字下げ)を追加。| |Shift + Tab|インデント(字下げ)を戻す。| ===== Excel VBAの基礎 ===== ==== 変数の宣言 ==== Dim num As Long ==== 変数宣言の強制 ==== Excel VBAのソースコードの先頭に「Option Explicit」と記述することで、変数の宣言が強制される。 Option Explicit Dim num As Long ===== VBAのコメント挿入 ===== VBAのソースコード上にコメントを挿入するには、「’ (シングルクォーテーション)」の後に続けて記載する。 ===== Excel VBA テクニック ===== - [[office:excel:vba:select cells|Excel VBAでセルを指定する方法]] ==== Excel VBAでセルの背景色を変える方法 ==== Excel VBAでセルの背景色を変えるには、InteriorオブジェクトのColorプロパティを使用する。 Option Explicit Sub sample() sheet1.Range("A1:A3").Interior.Color = RGB(255,0,0) End Sub ==== Excel VBAでセルのフォント設定を変える方法 ==== Excel VBAでセルのフォント設定を変えるには、Fontオブジェクトのフォントプロパティを使用する。 Option Explicit Sub sample() With Sheet1.Range("A1").Font 'Withを使用してプロパティの記述をまとめる。 .Color = RGB(255,0,0) '文字色を赤色にする。 .Size = 18 'フォントサイズを18ptにする。 .Bold = True 'フォントを太字にする。 End Sub ===== Excel VBAのデバッグ方法 ===== ここではExcel VBAのコードを記述するVBE画面でのデバッグ方法を解説します。 VBEには、「イミディエイト」という記述したコードの実行結果を出力する画面が用意されています。初期設定では表示されていない為、VBE画面を起動したらメニューの表示 -> イミディエイト ウィンドウ(Ctrl + G)から表示します。イミディエイトウィンドウに結果を出力するには「Debug.Print」を使用します。 イミディエイトウィンドウ内でコマンドを直接入力することもできます。 * 式の計算 * 変数・プロパティの入出力 * プロシージャの実行 式の計算、変数・プロパティの入出力を行うには「?」に続けてコマンドを記述します。 ==== 式の計算例 ==== === コマンド === ?1+1 === 実行結果 === ?1+1 2 ==== 変数・プロパティの入出力例 ==== === コマンド === ?ActiveSheet.Name === 実行結果 === ?ActiveSheet.Name Macro1 ===== Excel VBA 記述ルール ===== |< 100% 30% 70%>| ^ルール^内容^ | [半角スペース]_ |行連結文字。半角スペースと_で、便宜上の改行とする。長いコードの視認性を上げたい場合に挿入して活用する。| |"String"|文字列はダブルクォーテーションで囲む| |"String" & "String"|文字列の連結は&(アンパサンド)を挿入する。アンパサンドの前後には半角スペースを入力すること。| |vbnewline|改行を行いたい場合、「vbnewline」と入力する。| |#date#|日付はハッシュタグで囲む。| |Const [定数名] As [データ型] = [値]|定数の宣言と代入。定数の場合は、宣言と代入を同時に行う。| |Dim [変数名] As [データ型]|変数の宣言| |[変数名] = [値]|変数への値の代入| |Dim [配列名(インデックス)] As [データ型]|配列の宣言| |[配列名(インデックス)] = [値]|配列への値の代入| |[変数名] = Array([値1], [値2], [値3])|配列へ値をまとめて代入。変数のデータ型は「Variant」とすること。| |Dim [配列名(インデックス1, インデックス2)] As [データ型]|2次元配列の宣言| |Dim [オブジェクト名] As [オブジェクト型]|オブジェクトの宣言| |Set [オブジェクト名] = [オブジェクト]|オブジェクト変数へのオブジェクトの格納| ===== VBA 演算子 ===== ==== 代入演算子 ==== ^演算子^内容^ | = |右辺を左辺に代入する。| ==== 算術演算子 ==== ^演算子^内容^ | + |足し算| | - |引き算| | * |掛け算| | / |割り算| | Mod |剰余| |\|割り算の結果を整数で返す| | %%^%% |べき乗| ==== 比較演算子 ==== ^演算子^内容^ | = |左辺と右辺が等しい時、Trueを返す。| | < |左辺が右辺より小さい時、Trueを返す。| | <= |左辺が右辺以下の時、Trueを返す。| | > |左辺と右辺より大きい時、Trueを返す。| | >= |左辺が右辺以上の時、Trueを返す。| | <> |左辺と右辺が等しくない時、Trueを返す。| |Is|左辺と右辺のオブジェクトの参照を比較する。| |Like|文字パターンによる比較を行う。| ==== 文字列連結演算子 ==== ^演算子^内容^ | & |左辺と右辺の文字列を連結する。| ==== 論理演算子 ==== ^演算子^内容^ |And |全ての条件が一致する場合| |Or |一方の条件が一致する場合| |Not|指定条件が異なる場合| ===== 主な Excel VBA 関数 ===== ^関数^内容^ |Now()|現在の日時を返す。| | Ucase() | 小文字アルファベットを大文字にする。 | |Mid(引数1, 引数2, 引数3)| 引数1(文字列)を引数2と引数3で指定した範囲で抽出する。 |