VBA Excel:mac 2011 で Applicationイベントを宣言
Mac版の MS Excel「Excel:mac 2011」でも Windows版と同様にVBAが使えます(一時期実装されなくなりましたが、強い要望により復活)。それはそうと、今回は Application イベントを拾うための宣言方法です。
コードを先に書くと以下の様になります。
Option Explicit ' Excelアプリケーションのイベントを拾うための宣言 Private WithEvents MSExel As Application ' ワークブック(アドイン)を開いた際の処理 Private Sub Workbook_Open() ' イベントを拾うExcelアプリケーションを定義 Set MSExel = Application End Sub ' ワークブック(アドイン)を閉じる直前の処理 Private Sub Workbook_BeforeClose(Cancel As Boolean) ' 開いた際に設定した値を開放 Set MSExel = Nothing End Sub
最初の「Private WithEvents MSExel As Application」が Event を拾える様に宣言するコードです。”WithEvents”がポイントです。添付の画像を見るとイベントを拾う対象をプルダウンから選択できますが、この宣言を行うことでプルダウン中に”MSExcel”と宣言した名前が列挙されます。
他の「Workbook_Open」と「Workbook_BeforeClose」には、上で宣言したMSExel変数に実際のオブジェクトを設定/設定解除するコードです。”Application”というのはこのファイルが実行されているExcelになるので、これをワークブックを開いた際に設定し、閉じる時に設定解除(開放)してやります。
これでExcelアプリケーションのイベント処理を記述する準備が整ったので、後は書くのみです。