Applicationオブジェクトとは?
そのころ会社では、残業した岬さんと森川くんが絶賛勉強中です。
「このApplication.Callerの"Application"って、一体なんなんです?」
「いいところに目をつけたわね。
それはApplicationオブジェクトと言って、VBAを実行しているアプリケーションを参照しているの。
ここではExcel VBAだから、Applicationオブジェクトは、実行しているExcelそのものよ」
そう言うと、岬さんはVBEにカタカタと何やら打ち込み始めました。
「…っと。
Applicationオブジェクトには、便利なメソッドやプロパティがいーっぱいあるの。
よく使うのは、こんなトコロね」
'特定の警告やメッセージを表示しない
Application.DisplayAlerts = False
'計算方法のモードを手動にする
Application.Calculation = xlCalculationManual
'イベントの発生を許可しない
Application.EnableEvents = False
'ステータスバーの文字列を設定する
Application.StatusBar = "表示したい文字列"
'画面表示の更新を停止する
Application.ScreenUpdating = False
「見てわかるように、全てアプリケーションそのものに対する命令でしょ?
マクロの実行時に、これらの動作をExcelにさせたいケースが多々あるの。
そんなときに使う、いわゆる"定番"のコードよ」」
「すごい……VBAって、こんな細かい制御もできるんっスね」
森川くんがキラキラと目を輝かせながら、画面を見つめます。
「Applicationオブジェクトには、まだまだ便利な命令がたくさんあるんだけど…、
あまりいっぺんにやっても混乱するから。
…あ、ちなみにDisplayAlertsとScreenUpdating以外は、マクロの終了後も変更が有効になったままだから、こんな感じで戻しておくのよ」
'計算方法のモードを自動にする
Application.Calculation = xlCalculationAutomatic
'イベントの発生を許可する
Application.EnableEvents = True
'ステータスバーの表示を既定に戻す
Application.StatusBar = False
「はあぁ~~~」 森川くんが、うっとりとした表情で岬さんを見つめます。