VBAによるマクロ開発の流れ
C言語など多言語を習得した方に、VBA(Visual Basic for Application)でマクロを作りExcelの作業を自動化する流れを説明したいと思います。
Excelを起動したら、リボンのなにもないところで右クリックをして、「リボンのユーザー設定」を選択します。
開いたウィンドウで「開発」にチェックを入れて「OK」します。これで開発タブを表示できます。
Alt+F11を押すと画面が開きます。それがVBEです。
開発を行うにはこの画面の機能を使います。インテリセンスなど基本的な機能を持っています。
「ツール」「オプション」をクリックし、「変数の宣言を強制する」にチェックを入れます。
これにより新しいモジュールを開いた時に自動的にOption Explicitが挿入され、変数の宣言忘れを防止することが出来ます。
この効果については別のページで説明します。
ここを右クリックして、「挿入」「標準モジュール」で新しいモジュールを作成します。モジュールはC言語で言うところのファイルと思えばよいかと思います。
基本的には、このモジュールにプログラムを書いていくことになります。
試しに次のSubプロシージャーを書いて、プロシージャー内にカーソルを置き、F5を押せば、画面に"Hello World"を表示することが出来ます。
Public Sub gHelloWorld()
MsgBox "Hello World"
End Sub
「開発」タブの「挿入」をクリックし、左上の「ボタン(フォームコントロール)」をクリックします。
マウスポインターが+になるので、ワークシート上にボタンを配置する四角を描きます。
このときAltキーを押しながら配置すると、罫線に沿ってきれいに配置できます。
配置する場所を指定するとマクロを選択する画面が開くので、先程書いたgHelloWorldを選択します。
これで、マクロの登録が完了し、ボタンをクリックすればメッセージを表示できるようになります。
ここまでで基本的なマクロ作成の流れを説明したことになります。開発は基本的にはこれの繰り返しで、後はプロシージャに機能を足していくだけです。
マクロはショートカットキーで呼び出すことも可能で、そちらのほうが便利なこともあります。しかし、次の点からボタンを配置したほうが良いと思います。
開発タブ
まず最初に開発タブを表示します。Excelを起動したら、リボンのなにもないところで右クリックをして、「リボンのユーザー設定」を選択します。
開いたウィンドウで「開発」にチェックを入れて「OK」します。これで開発タブを表示できます。
VBE
VBAの開発環境はVBE(Visual Basic Editor)です。Alt+F11を押すと画面が開きます。それがVBEです。
開発を行うにはこの画面の機能を使います。インテリセンスなど基本的な機能を持っています。
Option Explicit
VBAでは変数の宣言がデフォルトでは必須ではないため、強制するためのオプションを有効にします。「ツール」「オプション」をクリックし、「変数の宣言を強制する」にチェックを入れます。
これにより新しいモジュールを開いた時に自動的にOption Explicitが挿入され、変数の宣言忘れを防止することが出来ます。
この効果については別のページで説明します。
標準モジュールの挿入
左上のペインが「プロジェクトエクスプローラ」です。ここを右クリックして、「挿入」「標準モジュール」で新しいモジュールを作成します。モジュールはC言語で言うところのファイルと思えばよいかと思います。
基本的には、このモジュールにプログラムを書いていくことになります。
試しに次のSubプロシージャーを書いて、プロシージャー内にカーソルを置き、F5を押せば、画面に"Hello World"を表示することが出来ます。
Public Sub gHelloWorld()
MsgBox "Hello World"
End Sub
ボタンの配置
作成したプロシージャを実行するには、シート上にボタンを配置します。「開発」タブの「挿入」をクリックし、左上の「ボタン(フォームコントロール)」をクリックします。
このときAltキーを押しながら配置すると、罫線に沿ってきれいに配置できます。
配置する場所を指定するとマクロを選択する画面が開くので、先程書いたgHelloWorldを選択します。
これで、マクロの登録が完了し、ボタンをクリックすればメッセージを表示できるようになります。
ここまでで基本的なマクロ作成の流れを説明したことになります。開発は基本的にはこれの繰り返しで、後はプロシージャに機能を足していくだけです。
マクロはショートカットキーで呼び出すことも可能で、そちらのほうが便利なこともあります。しかし、次の点からボタンを配置したほうが良いと思います。
- 一般の人にはボタンのほうが操作が簡単
- ページごとに必要なボタンを配置できるため使いやすい
- 実行されたシートを特定できるためコードが簡単になる
案外世の中の人はショートカットキーを使わないものです。
複数のシートを使って段階的な操作をする場合、シートごとに必要なボタンを配置しておくとナビゲーション代わりになって便利です。老化してくると、あれ、このページで何するんだったっけ?、となってしまいます。
ショートカットキーからの実行だと、まずアクティブシートが何なのか、そのシートで実行してよいのかどうかといったチェックを行う必要があります。
シートに配置したボタンなら、そのシートから呼び出されたことが明らかなので、そのような処理も要りません。
もちろんマクロ呼出し画面から実行すればどこのシートからでも呼び出せてしまいますがそこまでは考えません。
コメント
コメントを投稿