目次
概要
開発環境(VBE)に関するVBAのTIPS。
VBEとは
VBEは、「Visual Basic Editor」の略。マクロを作成・編集するためのソフト。
Excel/Word/Access/Powerpoint等のMicrosoft Office製品に標準で同梱されている。
VBEの起動
- Excelの開発タブ*1から、「Visual Basic」を選択。
- [Alt]+[F11]キーでショートカットも可能。もう一回押すとExcelに戻る。
- [Alt]+[Q]キーで「Visual Basic」を終了。
VBEの画面
- メニューバーの[表示]から各ウィンドウの表示/非表示が切替可能。
プロジェクト エクスプローラー
- プロジェクト、およびプロジェクトに格納され、各プロジェクトから参照されるすべての項目の階層リストを表示。
- メニューバーの[表示]→[プロパティウィンドウ]で表示。
- Ctrl + R で表示。
コード ウィンドウ
- コードの記述、表示、および編集を行うテキストエディタ。
- プロジェクト エクスプローラでフォーム/モジュールをダブルクリックするか、選択して[コードの表示] ボタンをクリックすると表示される。
- キーワードやコメントなどの文字色は変更可能。
- メニューバーの[ツール]→[オプション]の[エディタの設定]タブで変更する。
- メニューバーの[表示]→[コード ウィンドウ]で表示。
- F7 で表示。
プロパティ ウィンドウ
- 左側の各設定項目に関して、右側で選択/入力して設定。
- メニューバーの[表示]→[プロパティウィンドウ]で表示。
- F4 で表示。
イミディエイト ウィンドウ
- コンソールの役割。
- メニューバーの[表示]→[イミディエイト ウィンドウ]で表示。
- Ctrl + G で表示。
- コードを入力して、Enter キーを押すと、そのコードを実行できる。
- VBA実行中は、実行中のプロシージャー内で実行される。
- 実行していない時は、新規の標準モジュール(Option Explicitがない)上で実行される。
- ?に続けて変数を書いてEnterすることで値を表示。
- プロシージャーを直接起動することも可能。
- コード中の「Debug.Print」文の内容を出力。
Debug.Print 変数・定数・式 Debug.Print xxx; xxx Debug.Print xxx, xxx
「;」(セミコロン)に続けて書かれた変数・定数・式の値は、改行されずに表示される。
「,」(カンマ)に続けて書かれた変数・定数・式の値は、一定も字数間隔をあけて表示される。
セミコロンやカンマは、イミディエイトウィンドウで?で表示する場合でも使える。
ウォッチ ウィンドウ
- デバッグの作業中に変数の値を「継続的に値を監視する」という必要がある場合に使用。
- メニューバーの[表示]→[ウォッチ ウィンドウ]で表示。
- デバッグを中断したところで「ウォッチウィンドウ」を表示させて、右クリックから「ウォッチ式の追加」を選択して変数やプロパティを登録すると、値の参照が可能になる。
- コードウィンドウから、ドラッグ&ドロップで追加も可能。
ローカル ウィンドウ
- ローカルウィンドウを表示させておくと変数の値と型をまとめて確認できる。
- メニューバーの[表示]→[ローカル ウィンドウ]で表示。
- オブジェクトは、+をクリックして展開し、オブジェクトのプロパティを表示可能。
- メソッドは表示されない。
- 引数を指定しないと値が表示できないプロパティは表示されない。
オブジェクトブラウザ
- オブジェクトに対するプロパティやメソッドを実際にライブラリから参照して確認するツール。
- F2 で表示。
環境設定
背景色・フォントを調整
- 「ツール」→「オプション」を選択し、「エディターの設定」タブを開く。
- 「コードの表示色」を選択して、「背景」の色を選択。
- 「キーワード」の「前景」で文字色を「赤」に指定。
- 「識別子」の「前景」で文字色を「青」に指定。
編集ツールバーを表示
- 「表示」→「ツールバー」→「編集」を選択して編集ツールバーを表示。
選択している範囲を一気にコメントアウトできる「コメント ブロック」とコメントの解除ができる「非コメント ブロック」が使えるようになる。
コンパイルエラー時にポップアップが出ないようにする
- 「ツール」→「オプション」を選択し、「編集」タブの「コードの設定」にある「自動構文チェック」のチェックを外す。
変数の明示的な宣言を強制するために、「Option Explicit」を自動で挿入
- 「ツール」→「オプション」を選択し、「編集」タブの「コードの設定」にある「変数の宣言を強制する」にチェック。
- Excel2013以降では、最初からチェックが外れている。
ショートカットを設定する
- ツールバーを右クリックして、[ユーザー設定]を選択。
- 「ユーザー設定」ダイアログが開くので、そのままツールバーのコメントブロックのアイコンをクリックする。
- 「選択したボタンの編集」を選択して、「名前」の末尾に (&C) と入力する。
- 「イメージとテキストを表示」または「テキストのみ表示」を選択する。
- 「閉じる」ボタンで「ユーザー設定」ダイアログを閉じる。
- これで、 Alt + C でコメントブロックを実行できるようになる。
- C 以外のキーに設定したい場合は、 (&T) とか (&K) といった感じで設定。
- 注意:ツールバーにボタンが表示されていないと、ショートカットが働かない。
もし、設定したのにショートカットがきかない場合は、ツールバーにボタンが表示されているか確認する。
オプション設定の詳細
「メニュー」→「ツール」→「オプション」で表示されるオプションの詳細。
タブ | カテゴリ | 項目 | 説明 |
編集 | コードの設定 | 自動構文チェック | コード記述時に1ステートメント確定時(Enterやカレント行をずらした時)に、都度文法チェックを行うかどうかの指定。 チェックを付けておくと、確定されたそのステートメントを都度チェックを行い、構文エラー(赤字エラー)があると、警告メッセージが表示される。 Excel2013以降はデフォルトでチェックが外れている。 |
変数の宣言を強制する | 新規にモジュール作成時、自動的にモジュールの先頭に、「Option Explicit」を挿入するかどうかの指定。 デフォルトでチェックが外れている。 | ||
自動メンバー表示 | オブジェクトに続けて「.」(ピリオド)を入力した時に、オブジェクトのメンバーを入力候補として表示するかどうかの指定。 プロパティの設定値が列挙値の場合にも表示される。デフォルトでチェックされている。 | ||
自動クイック ヒント | オブジクトのプロパティ・メソッド、関数の入力時に、どのような引数になっているかのヒントを表示するかどうかの指定。 デフォルトでチェックされている。 | ||
自動データ ヒント | VBAをステップ実行(F8)やデバッグ等で一時停止しているとき、マウスポインタを変数やプロパティに合わせる(その上で停止させる)事で、その中身の値をヒント表示するかどうかの指定。 デフォルトでチェックされている。 | ||
自動インデント | 直前の行の先頭と同じ位置まで自動でインデントするかどうかの指定。 チェックが付いていないと、インデントされずに常に先頭になる。デフォルトでチェックされている。 | ||
タブ間隔 | タブ(Tab)キーでインデントされる間隔を文字数で指定。デフォルトは4。 | ||
ウィンドウの設定 | テキスト エディターでのドラッグアントドロップ | VBAコードの選択部分をドラッグ アンド ドロップで移動可能とするかどうかの指定。 実際には、イミディエイト ウィンドウや、ウォッチ ウィンドウへのドラッグで使用。デフォルトでチェックされている。 | |
モジュール全体を連続表示 | モジュール内の全てのプロシージャーを連続して表示するかどうかの指定。 チェックを外すと、選択しているプロシージャのみが表示されるようになる。デフォルトでチェックされている。 VBEの左下のアイコンで、表示切替え可能。 | ||
プロシージャの区分線 | モジュール全体を連続表示した場合に、プロシージャー間に区分線を表示するかどうかの指定。デフォルトでチェックされている。 | ||
エディターの設定 | コードの表示色 | (全般) | VBAを記述するエディタ部分の体裁を設定。 前景は、文字色。背景は、文字の背景。 インジケーターは、コードの左の縦のグレー部分。 |
標準コード | これ以降で設定できるコード以外のすべて。コードの無い行の背景もここでの指定が有効となる。 | ||
選択された文字 | 選択された文字。 | ||
構文エラー | 構文エラー、つまり、文法的に書き方としてエラーがある場合。 | ||
次のステートメント | VBAをステップ実行(F8)やデバッグ等で一時停止しているとき、次に実行されるステートメント。 | ||
ブレークポイント | VBAの実行を一時的に中断することができるブレークポイントを設定(F9)しているステートメント。 | ||
コメント | '(シングルクォーテーション)から始まるコメント。 | ||
キーワード | VBAに用意されているステートメント等の予約語。 | ||
識別子 | 変数、定数、プロシージャー、プロパティ、メソッド。 | ||
ブックマーク | ブックマークを設定したステートメント。この設定は、インジケーターに対してのみ有効。 | ||
呼び出し元 | FunctionやSubプロシージャーが他のプロシージャーから呼ばれている場合の呼び出し元のプロシージャー。 インジケーターの緑の右三角のステートメント。この設定は、インジケーターに対してのみ有効。 | ||
フォント、サイズ | - | コードのフォントとサイズを指定。 | |
インジケーターバー | - | コードの左側グレーの余白部分を表示するかどうかの指定。 | |
全般 | グリッドの設定 | - | ユーザーフォームのグリッド(点々)表示を指定。 グリッドの間隔(はば、高さ)と、コントロールをドラッグで配置した時に、グリッドに合わせるかどうかの指定が可能。 |
ツールヒントの表示 | - | ツールバーのアイコンにマウスポインターを置いたときにツールヒントを表示するかの指定。 | |
編集後の継続 | 状態の破棄を通知 | モジュールレベル変数は、Endステートメントや「デバッグ」で終了しない限り、値を保持するが、そもそものモジュールレベル変数の記述を変更をした場合は、変数が変更になるので、保持していた値は破棄される。 このような編集によりモジュールレベル変数の値が破棄される場合に通知するかどうかの指定。 | |
エラートラップ | エラー発生時に中断 | On Errorにかかわらず、エラー発生時に中断。全てのモジュールが対象。 デバッグをしていると、On Errorがあるために、本来のエラー発生個所の特定に窮する場合がある。そのような場合に、ここにチェックを付けることで、On Errorにかかわらず、エラー発生箇所で中断させることができる。 | |
クラス モジュールで中断 | ハンドルされない(On Errorがない)エラーがクラスモジュールで発生すると、エラーが発生したコード行でプロジェクトを中断。 | ||
エラー処理対象外のエラーで中断 | エラー処理対象外とは、具体的にはOn Error対象外ということ。 エラー発生時、On Errorの制御範囲であればそれに従い、On Errorの制御範囲外では中断する指定。 デフォルトで選択されている。 | ||
コンパイル | 順次コンパイル | 開始前にプロジェクトを完全にコンパイルするか、必要に応じてコードをコンパイルするかを指定。 | |
バックグラウンド コンパイル | 実行時にアイドル時間を使用して、バックグラウンドでのプロジェクトのコンパイルを完了。 | ||
ドッキング | ドッキング可能 | - | それぞれのウィンドウをドッキングさせるかを指定。 ここでチェックの付いているウィンドウはドッキング可能となる。 |
操作
標準モジュールの追加
- Visual Basic Editorのメニューで[挿入]-[標準モジュール]を選択。
- または、プロジェクト内を右クリックで[挿入]→[標準モジュール]。
- [Alt]→[I]→[M]の順にキー操作でも実行可能。
- 初期名は「Module[n]」。[n]は数字。
標準モジュールの名称変更
- プロパティウインドウで行う。
- 「(オブジェクト名)」を編集。半角全角使用可能。ただし、先頭に数字は使えず、記号はアンダーバー(_)のみ。
標準モジュールの削除
- プロジェクト内の削除したい標準モジュールを右クリック→「XXXの解放」(XXXはモジュール名)。
- [Alt]→[F]→[R]の順にキー操作でも実行可能。
プログラムの実行
Visual Basic Editorで以下のいずれかを行う。
- メニューバーで[実行]-[マクロの実行]を選択
- ツールバーの[マクロの実行]ボタンを押下
- F5ボタンを押下
コンパイルチェック
- Visual Basic Editorのメニューバーで[デバッグ]-[VBAProjectのコンパイル]を選択
- [Alt]→[D]→[L]の順にキー操作でも実行可能
- 「コンパイル」はVBAでは事前に行なうものではなく、実行時に動的に行なわれる。 これを利用してチェックだけ行うのが「コンパイルチェック」。
- 実行時に何もメッセージが表示されなければ構文エラーなし。
デバッグ
ブレークポイントを設定する
- エディターの左端をクリックすると、ブレークポイントを設定できる
デバッグ中の操作
キー | 操作 |
F8 | ステップイン |
Shift + F8 | ステップオーバー |
F5 | 再開 |
変数に代入されている値を確認する
- 変数の上にマウスカーソルを乗せると、変数に代入されている値が表示される
「表示」→「ウォッチウィンドウ」でウォッチウィンドウを表示できる
「ウォッチウィンドウ」上で右クリックして、「ウォッチ式の追加」を選択すると、ダイアログが表示されるのでウォッチしたい変数の名前を入力して「OK」をクリックする
ウォッチウィンドウで変数の中身を見れるようになる - イミディエイトウィンドウで変数の値を出力させることもできる
? の後ろに確認したい変数名を記述して Enter で、内容を確認できる
デバッグ中にVBAが途中終了した場合の表示設定を元に戻す
デバッグ中にVBAが途中終了した場合、Application.ScreenUpdatingがTrue状態に戻らない場合や、イベント処理の中で、Application.EnableEventsがFalseとしている場合等に、設定を戻す方法。
イミディエイトウィンドウで以下を入力。
Application.ScreenUpdating = True Application.EnableEvents = True
ショートカットキー
- 全般
VBEの起動(ワークシート) Alt + F11 キー VBEの終了(VBE) Alt + Q キー
- 表示切替
コードウィンドウの表示 F7 キー イミディエイトウィンドウの表示 Ctrl + G キー プロパティウィンドウの表示 F4 キー プロジェクトエクスプローラの表示 Ctrl + R キー
- コードウィンドウ内でのカーソル移動
モジュールの先頭に移動 Ctrl + Home キー モジュールの最後に移動 Ctrl + End キー 前のプロシージャに移動 Ctrl + 上方向 キー 次のプロシージャに移動 Ctrl + 下方向 キー 1画面上に移動 Ctrl + PageUp キー 1画面下に移動 Ctrl + PageDown キー 行頭に移動 Home キー 行末に移動 End キー 右の単語に移動 Ctrl + 右方向 キー 左の単語に移動 Ctrl + 左方向 キー
- コード編集関連
入力候補の表示 Ctrl + Space キー 行の削除 Ctrl + Y キー 単語の最後まで削除 Ctrl + Delete キー インデントを付ける Tab キー インデントを戻す Shift + Tab キー クイックヒントの表示 Ctrl + I キー オブジェクトブラウザの表示 F2 キー 定義の表示 Shift + F2 キー 直前の場所に戻る Ctrl + Shift + F2 キー 次を検索 F3 キー 前を検索 Shift + F3 キー
- プロシージャ実行関連
マクロの実行(ワークシート) Alt + F8 キー プロシージャの実行 プロシージャ内でF5 キー ステップインの実行 F8 キー ブレークポイントの実行 F9 キー すべてのブレークポイントのクリア Ctrl + Shift + F9 キー 無限ループ時の強制中断 Ctrl + Pause キー、 Ctrl + Break キー、 Esc キー
VBEを使いこなす
えくせるちゅんちゅんのことりちゅん氏の使いこなしっぷりがすごいので、以下のサイトを参考にする。
TIPS
別ページの一覧を入れる。
'IT系/VBA/基本/開発環境(VBE)/' には、下位層のページがありません。
リンク集
重複を恐れないリンク集。
- Excel(エクセル)VBA入門:VBE(Visual Basic Editor/VBエディタ)の使い方
- Excel VBA 入門講座 Visual Basic Editorの起動
- VBエディタについて - You.Activate
- VBEのオプション設定(Option Explicit)|VBA入門
- マクロはどこに書くの(VBEの起動)|VBA入門
- マクロを実行するには(F5)|VBA入門
- マクロを書く準備をする(VBAとVBE)|VBA再入門
- ローカルウィンドウの使い方|VBA技術解説
- VBA基本(デバッグトレースの開始方法)
- VBA基本(変数値の参照)
- VBA基本(お勧めの初期設定)
- VBA基本(コードペイン)
- VBA基本(イディミエイト・ウォッチ・ローカルウィンドウ)
- VBA基本(参照設定)
- VBA基本(オブジェクトブラウザ)
- VBA基本(コメントブロック)
- VBA基本(セル選択範囲の取得)
- VBEの使い方:VBE画面の全体説明|VBA入門
- VBEの使い方:ツールのオプション設定|VBA入門
- VBEの使い方:ツールバー|VBA入門
- VBEの使い方:右クリックメニューとヘルプ|VBA入門
- VBEの使い方:ショートカットキーとコード編集|VBA入門
- VBEの使い方:イミディエイト ウィンドウ|VBA入門
- VBEの使い方:ローカル ウィンドウ|VBA入門
- VBEの使い方:ウォッチ ウィンドウ|VBA入門
- VBEの使い方:オブジェクト ブラウザー|VBA入門
- VBEの使い方:デバッグ|VBA入門
- VBE(Visual Basic Editor) - EXCEL-VBA開発講座
- Visual Basic Editorの起動 - VBA基礎知識 - Excel VBA入門
- VBA の使い方、開発環境を整える
- Excel VBAのエディタ画面の使い方と標準モジュールの追加/削除 | ITSakura
- VBEの構造 | ExcelのVBA入門
- VBE(Visual Basic Editor)
- 【エクセルVBA】初心者にオススメのVBEの7つのコード設定とその機能について
- 初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法:Excelマクロ/VBAで始める業務自動化プログラミング入門(2) - @IT
- 行番号表示 Excel VBE(Visual Basic Editor)覚書 | リボンのブログ
- Excel VBE(Visual Basic Editor)に行番号を表示させる方法: 小粋空間
- VBAのデバッグにおける真のイミディエイトウィンドウの使い方 - えくせるちゅんちゅん
- (90) 【VBA】VBEの使い方 - 変数の宣言や呼び出し先プロシージャへジャンプする方法 - YouTube
動画
- #02 Visual Basic Editorを使おう | Excel VBA入門 - プログラミングならドットインストール
- Visual Basic Editorの基本用語と使い方 - 標準モジュールとコードウィンドウ
- #0_6 Visual Basic Editor(VBE)の使い方 | 3分動画でVBA完全マスター
- (いつも隣にITのお仕事) エクセルVBA超入門!たった10分でスタート地点に立つための方法 - YouTube
- (いつも隣にITのお仕事) 【エクセルVBA】VBEの背景色や文字色を変更して画面を見やすくしよう - YouTube
- (いつも隣にITのお仕事) 【エクセルVBA】初心者にオススメのVBEのコード設定とその機能について - YouTube
- (いつも隣にITのお仕事) 【エクセルVBA】イミディエイトウィンドウを使って色々な値を出力する - YouTube
- (いつも隣にITのお仕事) 【エクセルVBA】初心者にとっても便利なVBEの自動メンバー表示とその使い方 - YouTube
- (しろ_) VBEの概要・使い方 & マクロの作り方 - YouTube
- (Office TANAKA) 【VBA】VBEの使い方1 - キー操作だけで複数行を一気にコメントアウトする方法 - YouTube
- (Office TANAKA) 【VBA】VBEの使い方2 - 変数の宣言や呼び出し先プロシージャへジャンプする方法 - YouTube
- (Office TANAKA) 【VBA】VBEの使い方3 - コードウィンドウの分割 からの 複数モジュールを同時に表示する方法 - YouTube
- (Office TANAKA) 【VBA】VBEの使い方4 - モジュールを別ファイルにエクスポートしておくと超絶便利だよ - YouTube
- (EverydayVBA/English) Excel VBA Visual Basic Editor (VBE) - YouTube
- (codekabinett.com/English) Better VBA 1 - VBA Editor Settings - YouTube
開発環境・開発ツール
VBE
- VBE | ExcelWork.info
- Excel VBA のオブジェクト ブラウザの使い方メモ - 元「なんでもエンジニ屋」のダメ日記
- VBEをカスタマイズしてコメントアウトを効率的に行う - えくせるちゅんちゅん
- Orator's IO [VB6] 複数の行を一括してコメントにする
- VBAのデバッグにおける真のイミディエイトウィンドウの使い方 - えくせるちゅんちゅん
- イミディエイトウィンドウのクリア:VBE(Visual Basic Editor)
- イミディエイトウィンドウ内をクリアする: やむえむのExcel VBAメモ
- Excel2016 : イミディエイトウィンドウをクリアする|ハシクレ
- VBAでExcelデータ間引きwithイミディエイトウィンドウ - Qiita
- [VBA]スタックトレース(呼び出し履歴)を使う - Qiita
- [VBA]クラスモジュールの中でブレークする - Qiita
- Visual Basic エディタのバグ、検索ダイアログの文字化け修正手順 - Qiita
- ExcelのVBA開発画面が文字化けしているとき
- vba【無限ループの止め方】 - Qiita
- VBAの「ソースコードをロック」ではソースコードをロックできない - Qiita
- Visual Basic Editor の見た目をどうにかする (フォントと色の変更と行番号表示) - Qiita
- Excel VBA Excel VBAショートカットキー一覧
- Excel VBAのショートカットとTips - Qiita
- イミディエイトウィンドウでdictionaryのデバッグプリントを行う - Qiita
- MS Office の VBA エディタでも Source Code Pro 使いたい - Qiita
開発補助ツール
- VBAのソースコードオートインデンター(いわゆるprettier)をVBAで作ってみた - Qiita
- ExcelVBAの開発用アドインをGithubで公開してみた - t-hom’s diary
- ActiveX EXE や DLL, OCX(いわゆるCOM)が公開している Type Library 情報をダンプするスクリプト - 今日もスミマセン。
- ■VBA TLI.TLIApplication - 半角チルダ
- 【ExcelVBA】サブプロシージャを[マクロ]ダイアログに表示させない設定 - Qiita
- VBAの各モジュールの数と行数を調べる方法 - Qiita
ソース管理
- ExcelVBAモジュールをブックと切り離す - Qiita
- Excel VBAのソースコードをバージョン管理しやすくする - Qiita
- vbacを使ってExcel VBAのソースコードを保守しやすくしよう - Qiita
- vbacの改造 - Qiita
- ExcelファイルのVBAをExportするためのVBScript - Qiita
- Excel VBA を外部エディタで開発するための怠惰な私の import/export ツール - Qiita
- ExcelVBAのバージョン管理方法 - Qiita
- Excelの個人用マクロブックをテキストファイルでアップデートするマクロ - Qiita
- Excel VBAのgit diffを簡単に取れるgit-xltrailがすばらしい - あるSEのつぶやき・改
ソース暗号化(VBScript)
- スクリプトエンコーダの所在
- VBScriptの暗号化 | VBScript さんま屋
- VBScriptを暗号化する方法で気付いた注意点 - Qiita
- EncodeScriptFile Method
- Script Encode 後 某ツールでデコードできないスクリプトファイル - Windows 2000 Blog
- screncによるエンコードの意義 - 赤羽橋日記
- Encode a Script
- web工房(javascript) Windows Script Encoderを用いる