オブジェクト型変数

上記で説明したデータ型は、マクロ(VBA)内部で使用する変数のデータ型です。これをマクロ内部ではなく、ワークシートやフォームなどとやりとりをする場合、やりとりの相手を認知しなければなりません。

マクロ(VBA)内部から見た「やりとりの相手」がここで説明する「オブジェクト」です。


'***************************************************************************************************
'   オブジェクト型変数                                              Module1(Module)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/06/27(1.00)新規作成
'16/11/19(1.10)*.xlsm化
'20/01/17(1.11)記述整理等
'***************************************************************************************************
Option Explicit

'***************************************************************************************************
'   ■■■ 説明用サンプル ■■■
'***************************************************************************************************
'* 処理名 :TEST2
'* 機能  :オブジェクト型変数
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月27日
'* 作成者 :井上 治
'* 更新日 :2020年01月17日
'* 更新者 :井上 治
'* 機能説明:※プロシージャレベルで説明しますが、モジュールレベルでも同じです。
'*       これはExcel特有のオブジェクトデータ型です。
'* 注意事項:カーソルが砂時計になる
'***************************************************************************************************
Sub TEST2()
    '-----------------------------------------------------------------------------------------------
    Dim A As Application                ' Excel.Application自身
    Dim B As Workbook                   ' ワークブック
    Dim C As Worksheet                  ' ワークシート
    Dim D As Window                     ' ウィンドウ
    Dim E As Range                      ' セル及びセル範囲

    ' 各Object変数に実体(実際は参照)をセットする
    Set A = Excel.Application
    Set B = ThisWorkbook
    Set C = ActiveSheet
    Set D = ActiveWindow
'    Set E = Selection.Range

    ' 実体をセットしてからプロパティやメソッドを扱う
    A.Cursor = xlWait               ' マウスカーソルが「砂時計」になる
    A.StatusBar = "あああああ"      ' ステータスバーに文字を表示する

    ' TEST2を動かした場合は砂時計にままになるので、「砂時計の解除(TEST2_Clear)」を実行して下さい。
End Sub

'------------------------------------------<< End of Source >>--------------------------------------

古い話ですが、Excel95までは、これらは「Object型」1種類でまとめられていました。
Excel97以降ではこのように何の「オブジェクト」かを明示できるようになりました。
内容の説明はExcel特有のオブジェクト、メソッド、プロパティの理解」に譲ります。