ExcelでVBAを使用するための最初のステップは、Visual Basicエディター(VBAエディターまたはVBエディターとも呼ばれます)に慣れることです。
このチュートリアルでは、VBAエディターについて知っておく必要のあるすべてのことと、ExcelVBAでコーディングするときに知っておくべきいくつかの便利なオプションについて説明します。
内容
ExcelのVisualBasic Editorとは何ですか?
Visual Basic Editorは、Excelの一部であり、Excelブックを開くたびに開く別のアプリケーションです。デフォルトでは非表示になっています。アクセスするには、アクティブにする必要があります。
VBエディターは、VBコードが保存される場所です。
VBエディターでコードを取得するには、いくつかの方法があります。
- マクロを記録すると、VBエディターに新しいモジュールが自動的に作成され、そのモジュールにコードが挿入されます。
- VBエディタでVBコードを手動で入力できます。
- 他のワークブックまたはインターネットからコードをコピーして、VBエディターに貼り付けることができます。
VBエディターを開く
ExcelでVisualBasicEditorを開くにはいくつかの方法があります。
- キーボードショートカットを使用する(最も簡単、最速)
- 開発者タブを使用します。
- ワークシートタブを使用します。
それぞれを簡単に見てみましょう。
VisualBasicエディタを開くためのキーボードショートカット
Visual Basicエディタを開く最も簡単な方法は、キーボードショートカットを使用することです– Alt + F11(Altキーを押しながらF11キーを押します)。
これを行うと、VisualBasicエディター用の別のウィンドウが開きます。
このショートカットはトグルとして機能するため、再度使用すると、(VBエディターを閉じずに)Excelアプリケーションに戻ります。
Mac版のショートカットキーは次のとおりです。Opt+F11或Fn + オプション + F11
開発者タブを使用する
リボンからVisualBasic Editorを開くには:
- [開発者]タブをクリックします([開発者]タブが表示されない場合は、入手方法をお読みください)。
- コードグループで、[VisualBasic]をクリックします。
ワークシートタブを使用する
これは、Vbエディターを開くためのあまり使用されていない方法です。
任意のシートタブに移動し、右クリックして、[コードの表示]を選択します。
このメソッドは、VBエディターを開くだけでなく、そのシートオブジェクトのコードウィンドウに移動します。
これは、特定のシートにのみ適用されるコードを記述したい場合に便利です。これは通常、ワークシートイベントの場合です。
ExcelでのVisualBasicEditorの構造
VBエディターを最初に開いたときは、少し圧倒されるように思われるかもしれません。
最初は真新しいように見えるかもしれないさまざまなオプションとセクションがあります。
また、それはまだ古いExcel97日の外観を持っています。Excelは、長年にわたってデザインと使いやすさを大幅に向上させてきましたが、VBエディターの外観はまったく変わっていません。
このセクションでは、Visual BasicEditorアプリケーションのさまざまな部分について説明します。
注:数年前にVBAを使い始めたとき、これらすべての新しいオプションとウィンドウに圧倒されました。しかし、VBAに慣れれば、そのほとんどに満足するでしょう。ほとんどの場合、すべてのオプションを使用する必要はなく、片手で使用できます。
以下は、VBエディターのさまざまなコンポーネントの画像です。これらについては、このチュートリアルの次のセクションで詳しく説明します。
次に、各コンポーネントを簡単に見て、その機能を確認しましょう。
メニューバー
これは、VBエディターで使用できるすべてのオプションです。これは、各タブにタブとオプションがあるExcelリボンに似ています。
各メニュー要素をクリックすると、使用可能なオプションを調べることができます。
VBエディタのほとんどのオプションの横にキーボードショートカットが表示されます。いくつかのキーボードショートカットに慣れれば、VBエディタの使用は非常に簡単になります。
ツールバー
デフォルトでは、VBエディターには、最も頻繁に必要になる可能性のあるいくつかの便利なオプションを備えたツールバーがあります。これは、Excelのクイックアクセスツールバーのようなものです。それはあなたにいくつかの便利なオプションへの迅速なアクセスを提供します。
オプションを削除または追加することで(ツールバーの端にある小さな下向き矢印をクリックして)、少しカスタマイズできます。
ほとんどの場合、VBエディターを使用する場合はデフォルトのツールバーのみが必要です。
(ツールバーの先頭にある)XNUMXつの灰色の点をクリックしてメニューバーの上にドラッグすると、ツールバーをメニューバーの上に移動できます。
注:VBエディターには、標準、デバッグ、編集、ユーザーフォームのXNUMXつのツールバーがあります。上の画像(およびデフォルト)に表示されているのは、標準ツールバーです。[表示]オプションに移動し、[ツールバー]オプションにカーソルを合わせると、他のツールバーにアクセスできます。必要に応じて、XNUMXつ以上のツールバーをVBエディターに追加できます。
プロジェクトブラウザ
プロジェクトエクスプローラは左側のウィンドウで、現在Excelで開いているすべてのオブジェクトを表示します。
Excelを使用する場合、開いている各ブックまたはアドインはプロジェクトです。これらの各アイテムには、オブジェクトのセットを含めることができます。
たとえば、次の画像では、プロジェクトエクスプローラーに1つの開いているワークブック(Book2とBook1)と各ワークブックのオブジェクト(ワークシート、ThisWorkbook、およびBookXNUMXのモジュール)が表示されています。
オブジェクトの左側にプラスアイコンがあり、これを使用してオブジェクトのリストを折りたたんだり、オブジェクトの完全なリストを展開して表示したりできます。
次のオブジェクトをプロジェクトエクスプローラーの一部にすることができます。
- 開いているすべてのワークブック–各ワークブック(プロジェクトとも呼ばれます)内には、次のオブジェクトを含めることができます。
- 工作本の各ワークシートで作業するテーブルオブジェクト
- ThisWorkbookオブジェクト、ブック自体を表します
- 各チャートシートのチャートシート 物体(これらはワークシートほど一般的ではありません)
- モジュール-これは、マクロレコーダーを使用して生成されたコードが存在する場所です。ここにVBAコードを記述またはコピーアンドペーストすることもできます。
- すべてのオープンアドイン
プロジェクトエクスプローラーは、特定の時間にExcelで開いているすべてのオブジェクトの輪郭を描く場所と考えてください。
プロジェクトエクスプローラを開くためのキーボードショートカットは次のとおりです。Ctrl + R(Ctrlキーを押しながら、Rを押します)。これを閉じるには、プロジェクトエクスプローラウィンドウの右上隅にある閉じるアイコンをクリックするだけです。
注:プロジェクトエクスプローラーのすべてのオブジェクトには、コードを記述できる(またはどこかからコピーアンドペーストできる)コードウィンドウがあります。オブジェクトをダブルクリックすると、コードウィンドウが表示されます。
プロパティウィンドウ
[プロパティ]ウィンドウでは、選択したオブジェクトのプロパティを表示できます。[プロパティ]ウィンドウがまだない場合は、キーボードショートカットF4を使用して(または[表示]タブに移動して[プロパティ]ウィンドウをクリックして)取得できます。
[プロパティ]ウィンドウは、VBエディターにドッキングできるフローティングウィンドウです。以下の例では、プロジェクトエクスプローラーの下にドッキングしています。
プロパティウィンドウでは、選択したオブジェクトのプロパティを変更できます。たとえば、シートを非表示(または非常に非表示)にする場合は、選択したシートオブジェクトのVisibleプロパティを変更することでこれを行うことができます。
コードウィンドウ
プロジェクトエクスプローラにリストされている各オブジェクトには、コードウィンドウがあります。プロジェクトエクスプローラー領域でオブジェクトをダブルクリックすると、オブジェクトのコードウィンドウを開くことができます。
コードウィンドウは、コードを記述したり、他の場所からコードをコピーして貼り付けたりする場所です。
マクロを記録すると、そのコードはモジュールのコードウィンドウに入ります。マクロを記録すると、Excelはコードを挿入するモジュールを自動的に挿入します。
イミディエイトウィンドウ
イミディエイトウィンドウは、主にコードのデバッグに使用されます。イミディエイトウィンドウを使用するXNUMXつの方法は、コードでPrint.Debugステートメントを使用してから、コードを実行することです。
コードをデバッグし、コードがスタックしている場所を特定するのに役立ちます。イミディエイトウィンドウでPrint.Debugの結果を取得した場合、コードは少なくともその行まで有効であることがわかります。
VBAコーディングを初めて使用する場合は、イミディエイトウィンドウを使用してデバッグするのに時間がかかる場合があります。
デフォルトでは、イミディエイトウィンドウはVBエディターに表示されません。キーボードショートカットのControl + Gを使用して取得できます(または、[表示]タブに移動して[イミディエイトウィンドウ]をクリックします)。
VBエディターでコードを追加する場所
これで、VBエディターとそのすべての部分の基本を理解できたと思います。
チュートリアルのこの部分では、VisualBasicエディターでVBAコードを追加する場所を示します。
ExcelでVBAコードを追加する場所はXNUMXつあります。
- オブジェクトのコードウィンドウ。これらのオブジェクトには、ワークブック、ワークシート、ユーザーフォームなどがあります。
- モジュールのコードウィンドウ。
モジュールコードウィンドウとオブジェクトコードウィンドウ
まず、モジュールにコードを追加することと、ターゲットコードウィンドウにコードを追加することの違いを簡単に理解しましょう。
任意のオブジェクトにコードを追加する場合、それはコードをトリガーするそのオブジェクトに対する何らかのアクションに依存します。たとえば、ブックを開いたらすぐにワークブック内のすべてのワークシートを再表示する場合、コードはThisWorkbookオブジェクト(ブックを表す)に入ります。
この場合、トリガーはブックを開くことです。
同様に、別のシートをアクティブ化した直後にシートを保護する場合、コードはシートコードウィンドウに移動します。
これらのトリガーはイベントと呼ばれ、イベントが発生したときに実行されるコードを関連付けることができます。
代わりに、モジュール内のコードを手動で実行する必要があります(または、他のサブルーチンから呼び出すこともできます)。
マクロを記録すると、Excelは自動的にモジュールを作成し、記録されたマクロコードをそのモジュールに挿入します。このコードを実行する必要がある場合は、マクロを手動で実行する必要があります。
モジュールにVBAコードを追加します
マクロを記録すると、モジュールが自動的に作成され、そこにコードが挿入されますが、マクロレコーダーを使用する場合はいくつかの制限があります。たとえば、ループやIf ThenElse条件を使用することはできません。
この場合、コードを手動でコピーして貼り付けるか、自分で作成することをお勧めします。
モジュールは、次のタイプのVBAコードを保持するために使用できます。
- ステートメント:モジュールで変数を宣言できます。変数を宣言すると、変数が保持できるデータのタイプを指定できます。変数は、サブルーチンに対してのみ、またはモジュール内のすべてのサブルーチン(またはすべてのモジュール)に対して宣言できます。
- サブルーチン(手順):これは、VBAで実行する手順を含むコードです。
- 機能的なプロセス:これは、カスタム関数(VBAではユーザー定義関数またはUDFとも呼ばれます)を作成するために使用できる単一の値を返すコードです。
デフォルトでは、モジュールはワークブックの一部ではありません。使用前に挿入する必要があります。
VBエディターでモジュールを追加する
モジュールを追加する手順は次のとおりです。
- ワークブックの任意のオブジェクト(モジュールを配置する場所)を右クリックします。
- 挿入オプションにカーソルを合わせます。
- モジュールをクリックします。
これにより、Moduleという名前のフォルダーがすぐに作成され、Module1という名前のオブジェクトが挿入されます。すでにXNUMXつのモジュールを挿入している場合は、上記の手順で別のモジュールを挿入します。
モジュールを挿入した後、プロジェクトエクスプローラーでモジュールオブジェクトをダブルクリックすると、そのコードウィンドウが開きます。
これで、コードをコピーして貼り付けるか、自分で作成できます。
モジュールを取り外します
ExcelVBAでモジュールを削除する手順は次のとおりです。
- 削除するモジュールを右クリックします。
- [モジュールの削除]オプションをクリックします。
- 開いたダイアログで、[いいえ]をクリックします。
注:モジュールを削除する前に、モジュールをエクスポートできます。他のプロジェクトにインポートできる.basファイルとして保存されます。モジュールをエクスポートするには、モジュールを右クリックして[ファイルのエクスポート]をクリックします。
オブジェクトコードウィンドウにコードを追加する
オブジェクトのコードウィンドウを開くには、オブジェクトをダブルクリックするだけです。
開いたら、手動でコードを入力するか、他のモジュールまたはインターネットからコードをコピーして貼り付けることができます。
一部のオブジェクトでは、コードを記述したいイベントを選択できることに注意してください。
たとえば、ワークシートで選択が変更されたときに何が起こるかを示すコードを記述したい場合は、最初にコードウィンドウの左上隅にあるドロップダウンリストからワークシートを選択してから、[イベントの変更]を選択する必要があります。ドロップダウンリスト-右側。
注:これらのイベントはオブジェクトに固有です。ワークブックのコードウィンドウを開くと、ワークブックオブジェクトに関連するイベントが表示されます。ワークシートのコードウィンドウを開くと、ワークシートオブジェクトに関連するイベントが表示されます。
カスタムVBエディター
Visual Basicエディタのデフォルト設定はほとんどのユーザーにとって十分ですが、インターフェイスと一部の機能をさらにカスタマイズすることもできます。
チュートリアルのこの部分では、VBエディターをカスタマイズする際のすべてのオプションを紹介します。
VBエディター環境をカスタマイズするには、メニューバーの[ツール]をクリックし、[オプション]をクリックします。
これにより、[オプション]ダイアログが開き、VBエディターのすべてのカスタマイズオプションが表示されます。[オプション]ダイアログボックスには、Visual Basicエディターのさまざまなカスタマイズオプションを備えたXNUMXつのタブ(以下に表示)があります。
各タブとそれぞれの重要なオプションを簡単に見てみましょう。
エディタタブ
組み込みの設定はほとんどの場合正常に機能しますが、それでもこのタブのオプションを参照します。
ExcelでVBAに習熟するにつれて、これらのオプションのいくつかを使用してVBエディターをカスタマイズすることをお勧めします。
自動文法チェック
ExcelでVBAを使用している場合、構文エラーが発生するとすぐに、ダイアログボックスがポップアップ表示されます(エラーの説明が表示されます)。以下に示すように:
このオプションを無効にすると、構文エラーがあってもこのポップアップは表示されません。ただし、コードテキストの色は、エラーを示すために変更されます。
初心者の場合は、このオプションを有効にすることをお勧めします。コーディングの経験を積むにつれて、これらのポップアップが煩わしいと感じるようになる可能性があり、このオプションを無効にすることができます。
変数宣言が必要です
これは、有効にすることをお勧めするオプションです。
VBAを使用する場合は、変数を使用してさまざまなデータ型とオブジェクトを保持します。
このオプションを有効にすると、コードウィンドウの上部に「OptionExplicit」ステートメントが自動的に挿入されます。これにより、コードで使用するすべての変数を宣言する必要があります。変数を宣言せずにコードを実行しようとすると、エラーが発生します(以下を参照)。
上記の例では、変数Varを使用しましたが、宣言していません。したがって、コードを実行しようとすると、エラーが表示されます。
このオプションは、多くの変数がある場合に役立ちます。宣言されていないものとして扱われ、エラーが表示されるため、通常、スペルミスのある変数名を見つけるのに役立ちます。
注:このオプションを有効にすると、既存のモジュールには影響しません。
自動リストメンバー
このオプションは、オブジェクトメソッドのプロパティのリストを取得するのに役立つため便利です。
たとえば、シート(Sheet1)を削除する場合は、Sheet1.Delete行を使用する必要があります。
コードを入力すると、ドットを入力するとすぐに、Worksheetオブジェクトに関連付けられているすべてのメソッドとプロパティが表示されます(以下を参照)。
自動リスト機能は、次のことができるので優れています。
- リストからプロパティとメソッドをすばやく選択して時間を節約する
- あなたが知らないかもしれないすべてのプロパティとメソッドを表示します
- スペルミスを避ける
このオプションはデフォルトで有効になっているので、そのままにしておくことをお勧めします。
自動クイック情報オプション
Excelワークシートに関数を入力すると、関数が取る引数など、関数に関する情報が表示されます。
同様に、VBAで関数を入力すると、いくつかの情報が表示されます(以下を参照)。ただし、これを行うには、[自動クイック情報]オプションが有効になっていることを確認する必要があります(デフォルト)。
自動データチップオプション
コードをXNUMX行ずつステップ実行し、変数名の上にカーソルを置くと、変数の値が表示されます。
コードをデバッグしたり、ループを含むコードをステップスルーしたりするときに便利です。
上記の例では、変数(var)にカーソルを置くとすぐに、保持している値が表示されます。
このオプションはデフォルトで有効になっているので、そのままにしておくことをお勧めします。
自動インデント
VBAコードは冗長で乱雑になる可能性があるため、インデントを使用するとコードの可読性が向上します。
コードを書くときは、Tabキーを使用してインデントできます。
このオプションにより、インデントされた行を終了してEnterキーを押すと、次の行は最初から開始されませんが、前の行と同じインデントになります。
上記の例では、Debug.Print行を記述してEnterキーを押すと、そのすぐ下から開始されます(同じインデントレベルで)。
このオプションは便利だと思います。オフにすると、インデントしたいコードブロック内のすべての行を手動でインデントすることになります。
必要に応じて、インデント値を変更できます。デフォルトのままにしておきます。
テキスト編集をドラッグアンドドロップします
このオプションを有効にすると、コードのブロックを選択してドラッグアンドドロップできます。
最初にカットアンドペーストする必要がないため、時間を節約できます。選択してドラッグするだけです。
このオプションはデフォルトで有効になっているので、そのままにしておくことをお勧めします。
デフォルトはフルモジュールビュー
このオプションを有効にすると、モジュール内のすべてのプロシージャをスクロール可能なリストで表示できるようになります。
このオプションが無効になっている場合、一度に表示できるモジュールはXNUMXつだけです。コードウィンドウの右上隅にあるドロップダウンリストから、表示するモジュールを選択する必要があります。
このオプションはデフォルトで有効になっているので、そのままにしておくことをお勧めします。
これを無効にする理由のXNUMXつは、かさばるプログラムが複数あり、それらをスクロールするのに時間がかかる場合や、プログラムがたくさんあり、スクロール中に時間を無駄にするのではなく、すばやく見つけたい場合です。
プログラムセパレータ
このオプションを有効にすると、XNUMXつのプロセスの間に線(一種の仕切り)が表示されます。
これは、あるプロセスがいつ終了し、別のプロセスがいつ開始するかを視覚的に示すので便利です。
デフォルトで有効になっているので、そのままにしておくことをお勧めします。
[エディター形式]タブ
エディタの[フォーマット]タブのオプションを使用して、コードウィンドウでのコードの外観をカスタマイズできます。
個人的には、元気なので、すべてのデフォルトオプションを保持します。必要に応じて、お好みに合わせて調整できます。
変更を加えるには、最初にコードのカラーボックスでオプションを選択する必要があります。オプションを選択した後、前景色、背景色、およびインジケーターの色を変更できます。
フォントタイプとフォントサイズもこのタブで設定できます。コードを読みやすくするため、CourierNewなどの固定幅フォントをお勧めします。
フォントタイプとサイズ設定は、すべてのコードタイプ(つまり、コードカラーボックスに表示されるすべてのコードタイプ)で同じままであることに注意してください。
以下は、ブレークポイントが選択された画像であり、その形式を変更できます。
注:マージンインジケーターバーオプションを有効にすると、コードの左側に小さなマージンバーが表示されます。これは、コードの実行中に有用なメトリックを表示するので便利です。上記の例では、ブレークポイントを設定すると、マージンバーの線の左側に赤い点が自動的に表示されます。または、ブレークポイントを設定するには、ブレークポイントを設定するコード行の左側にあるマージンバーをクリックするだけです。
デフォルトでは、マージンインジケーターバーは有効になっているので、そのままにしておくことをお勧めします。
私のVBAクラスの生徒のXNUMX人は、このカスタムオプションが便利で、色覚異常であることに気づきました。ここのオプションを使用して、彼女はVBAを簡単に使用できるように色と形式を設定することができました。
[一般]タブ
[全般]タブには多くのオプションがありますが、それらを変更する必要はありません。
すべてのオプションをそのままにしておくことをお勧めします。
このタブで理解する重要なオプションは、エラー処理です。
デフォルトでは、「未処理のエラーを中断する」が選択されているので、そのままにしておくことをお勧めします。
このオプションは、コードでエラーが発生し、コードでそのエラーを処理していない場合、コードが壊れて停止することを意味します。ただし、エラーを解決した場合(たとえば、On Error ResumeNextまたはOnError Gotoオプションを使用して)、エラーは発生しません(エラーが処理されないため)。
ドッキングタブ
このタブでは、ドッキングするウィンドウを指定できます。
ドッキングとは、ウィンドウ(プロジェクトエクスプローラーやプロパティウィンドウなど)が浮かないように配置し、すべての異なるウィンドウを同時に表示できることを意味します。
ドッキングしない場合は、一度にXNUMXつのウィンドウを全画面モードで表示でき、別のウィンドウに切り替える必要があります。
デフォルト設定のままにしておくことをお勧めします。