これが解ると、他シートや他ブックの参照もできる。

個々の記述はマクロの記録でよく出てきますね。 「オブジェクト」「メソッド」「プロパティ」などというと何やら難しいことを覚えなければならないのか、と構えてしまうかも知れません。
ですが、これらはマクロの記録で記録されるコードに既に頻繁に使われているもので、知らずに使っているのです。記録されたままで済んでいるならそれでも良いかも知れませんが、 コードに手を入れるようなことがあるなら、ある程度は頭にいれておいた方が良いと思います。

Excelの場合「オブジェクト」は、Excel自身や、ワークブック、ワークシート、セルやセル範囲、さらには貼り付けたテキストボックスや画像など、単純な変数以外の全てに近いものを指します。「オブジェクト」は広義であって、実際に使用する場合は「オブジェクト」の中の「何」かを明示して宣言します。



オブジェクト型変数
古い話ですが、Excel95までは、これらは「Object型」1種類でまとめられていましたが、Excel97以降ではこのように何の「オブジェクト」かを明示できるようになりました。しかも、そのオブジェクト変数をVBE上で利用する場合に、「自動メンバ表示」の機能によりピリオドを打った瞬間から使用されるプロパティやメソッドがプルダウンリストに表示されますので、記述が楽になり、かつ間違いがなくなるという利点があります。

'***************************************************************************************************
'   オブジェクト型変数                                              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 >>--------------------------------------
一般の変数は、「変数 = 値」で値をセットしますが、オブジェクト変数は、値をセットするのではないので、必ず「Set」ステートメントでオブジェクトの実体(の参照)を掴ませてからでないと利用できません。ここで、宣言しているのが「オブジェクト」です。下の2行が「プロパティ」のサンプルです。
「オブジェクト」は処理のターゲットとなる目的物です。ここでは登場しませんが、「メソッド」は「オブジェクト」が持つ関数であり、「プロパティ」は「オブジェクト」の設定項目になります。
実際問題、「メソッド」と「プロパティ」は区別がしにくい点もあります。VBEでは「オブジェクト」が明確に宣言されているとピリオドを打った瞬間に「メソッド」や「プロパティ」がリスト表示されるようになっていて、区別をきちんと知らなくても使えてしまいます。

「オブジェクト」自体は、変数を宣言しないと参照できないわけではありません。
オブジェクト変数に取得しようとする「オブジェクト」自体は、いちいち宣言しなければ利用できないわけではありません。

'***************************************************************************************************
'   オブジェクト操作のサンプル                                      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

'***************************************************************************************************
'   ■■■ 説明用サンプル ■■■
'***************************************************************************************************
'* 処理名 :TEST3
'* 機能  :オブジェクト操作のサンプル
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月27日
'* 作成者 :井上 治
'* 更新日 :2003年06月27日
'* 更新者 :井上 治
'* 機能説明:これはオブジェクト変数を宣言せず直接利用する例です。
'* 注意事項:
'***************************************************************************************************
Sub TEST3()
    '-----------------------------------------------------------------------------------------------
    Application.Cursor = xlWait             ' マウスカーソルが「砂時計」になる
    Application.StatusBar = "あああああ"    ' ステータスバーに文字を表示する

    ' このブックのシート数を表示
    MsgBox ThisWorkbook.Worksheets.Count

    Application.Cursor = xlDefault          ' マウスカーソルをデフォルトに戻す
    Application.StatusBar = False           ' ステータスバーを元に戻す
End Sub

'------------------------------------------<< End of Source >>--------------------------------------
このように、その場で実際のオブジェクトを直接書いてしまえば済みます。ですが、これは例の「自動記録マクロ」と同じような状況となります。実際の動作はExcelがその都度オブジェクトを生成するとのことで、事前に1回「Set」ステートメントでオブジェクトの実体を掴ませるより効率が悪いことや、構文が長くなる等の問題があります。
また、マクロの記述自身でワークシートを切り替えたりする処理では、ある時から「ActiveSheet」は違うものに変わってしまうなどの問題も発生します。
一度きりしか利用しないオブジェクト変数であれば、わざわざ変数に格納するのは無駄かもしれません。しかし、そうでなければ宣言して利用すべきでしょう。

Withステートメントの利用
もうひとつ、オブジェクトの記述を1回にまとめてしまう方法もあります。頻度が一番多いもの1つに限られますが、この方法も良いでしょう。
但し、記述上の効率は良くなりますが、実行速度が上がることはないようです。

'***************************************************************************************************
'   オブジェクト操作のサンプル②                                    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

'***************************************************************************************************
'   ■■■ 説明用サンプル ■■■
'***************************************************************************************************
'* 処理名 :TEST3
'* 機能  :オブジェクト操作のサンプル②
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年06月27日
'* 作成者 :井上 治
'* 更新日 :2003年06月27日
'* 更新者 :井上 治
'* 機能説明:これはオブジェクト変数を宣言せず直接利用する例②です。
'* 注意事項:
'***************************************************************************************************
Sub TEST3()
    '-----------------------------------------------------------------------------------------------
    ' Excel.Applicationのオブジェクトを1つにまとめる
    With Application
        .Cursor = xlWait            ' マウスカーソルが「砂時計」になる
        .StatusBar = "あああああ"   ' ステータスバーに文字を表示する

        ' このブックのシート数を表示
        MsgBox ThisWorkbook.Worksheets.Count

        .Cursor = xlDefault         ' マウスカーソルをデフォルトに戻す
        .StatusBar = False          ' ステータスバーを元に戻す
    End With
End Sub

'------------------------------------------<< End of Source >>--------------------------------------
これで、「Application」の記述が1つにまとまりました。こうすると、いきなりピリオドから始まる場合は、「With」でくくられた「Application」が前につくものとして処理されます。

プロパティ・メソッドの操作
プロパティは「設定情報」なので「=」で受け取ったり設定したりします。(取得のみで設定できないプロパティもあります)
これに対してメソッドの場合は、記述方法が違います。メソッドは昔のBASICで呼んでいた「コマンド」と同様の「命令」です。オブジェクトごとに違ったメソッドを持っています。メソッドには命令の内容を示す「引数」を付け加えられます。「引数」はないこともあり、複数個あることもあります。

'***************************************************************************************************
'   ワークシートを追加するサンプル                                  Module1(Module)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev  変更履歴内容------------------------------------------------------------------------>
'03/07/16(1.00)新規作成
'16/11/19(1.10)*.xlsm化
'20/01/17(1.11)記述整理等
'***************************************************************************************************
Option Explicit

'***************************************************************************************************
'   ■■■ シート上のボタン起動処理 ■■■
'***************************************************************************************************
'* 処理名 :TEST4
'* 機能  :ワークシートを追加する例①
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月16日
'* 作成者 :井上 治
'* 更新日 :2020年01月17日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub TEST4()
    '-----------------------------------------------------------------------------------------------
    Dim cntSh As Long                                               ' シート数カウンタ
    With ThisWorkbook
        ' 本ブックのシート数を取得
        cntSh = .Worksheets.Count
        ' 新しいシートを最後に追加する
        .Worksheets.Add After:=.Worksheets(cntSh)
    End With
End Sub

'***************************************************************************************************
'* 処理名 :TEST5
'* 機能  :ワークシートを追加する例②
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数  :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月16日
'* 作成者 :井上 治
'* 更新日 :2020年01月17日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub TEST5()
    '-----------------------------------------------------------------------------------------------
    Dim objSh As Worksheet                                          ' 追加したワ-クシート
    Dim cntSh As Long                                               ' シート数カウンタ
    With ThisWorkbook
        ' 本ブックのシート数を取得
        cntSh = .Worksheets.Count
        ' 新しいシートを最後に追加する
        Set objSh = .Worksheets.Add(After:=.Worksheets(cntSh))
        ' シート名を設定する
        objSh.Name = "新シート(" & cntSh & ")"
    End With
End Sub

'------------------------------------------<< End of Source >>--------------------------------------
これはどちらもワークシートの「Addメソッド」のサンプルです。の方はシート名を特定しないので追加されたシートのオブジェクト取得を行ないません。この場合は「Addメソッド」の後ろにカッコを付けずに「引数」を書きます。「引数」は通常、名前の後ろに「:=」を付けて値を指定します。複数の「引数」がある場合は「,」で区分けをします。
メソッドが使いこなれていおり「引数」の発生順位が判っている場合、「引数」の名前と「:=」を省略してしまうことがありますが、後でソースを見たときに明確になるように省略せずに書いた方が良いでしょう。 複数の引数があるメソッドで指定する引数が限られている場合も同様です。

一方、のサンプルは「Addメソッド」で追加されたシートの名前を変えるためにワークシートオブジェクトを取得する例です。「Addメソッド」の行にそのままこのように「Setステートメント」を書いてやれば、追加されたシートがオブジェクト変数に格納されます。
この場合は、「Addメソッド」の後ろは「引数」の全てをカッコで囲みます。

このマクロを実際に動かすと、(TEST4)の方はExcelが認知しているシート名が割り符られます。サンプルは「Sheet1」しかありませんが、動作後にそのシートを削除したりすると、次は飛んだ番号が付いた名前になったりします。
(TEST5)では、シート名は自分で編集してしまいますので、自在な名前が可能です。