【用語集に記載の内容について】

用語集に記載されているメソッドや関数の引数は、VBAエキスパート試験の試験範囲に基づいており、すべての引数を網羅しておりません。 また、書式は公式テキストの記載に準じています。
試験範囲外の引数や詳細については、ヘルプ機能やオブジェクトブラウザーをご参照ください。

【コードをコピーして実行する場合の注意】

文字コードの関係上、半角の「¥」は「/」で表示されるため、当サイトでは全角の「¥」で記載しています。当サイトのコードをコピーして実行する場合は、全角の「¥」を半角の「¥」に変換してください。

ThisWorkbook

名称ThisWorkbook
説明
マクロが記述されているブックを表します。
コード例①
【マクロが記述されているブックのシートを操作】
Sub Macro1()
    Dim ws As Worksheet
 
    Set ws = ThisWorkbook.Sheets("Sheet1")
    MsgBox ws.Range("A1").Value
End Sub

ThisWorkbookを使用して、マクロが記述されているブックのシート「Sheet1」を指定しています。

マクロを実行すると、マクロが記述されているブック「Book1.xlsm」のシート「Sheet1」のセルA1の値が10の場合は、「10」がメッセージボックスに表示されます。
コード例②
【アクティブブックが切り替わっても影響を受けない例】
Sub Macro1()
    Dim F As String, i As Long

    For i = 1 To 3
        F = ThisWorkbook.Sheets("Sheet1").Cells(i, 1) & ".xlsx"
        Workbooks.Open "C:¥Test¥" & F
    Next i
End Sub

ブックのOpenメソッドで、指定したパスのブックを開くと、開いたブックがアクティブブックとなります。

しかし、「F = ThisWorkbook.Sheets("Sheet1").Cells(i, 1) & ".xlsx"」で、ThisWorkbookを使用して、マクロが記述されているブックのシート「Sheet1」のセルを指定しているので、アクティブブックが切り替わっても操作の対象は切り替わりません。

マクロを実行すると、マクロが記述されているブック「Book1.xlsm」のシート「Sheet1」のセルの値が以下の場合、For…Nextステートメントは以下のように処理されます。

i = 1 →「Book1.xlsm」のシート「Sheet1」のセルA1 = "実績1" & 「.xlsx」
 →「C:¥Test¥実績1.xlsx」を開き、アクティブブックとなる
i = 2 →「Book1.xlsm」のシート「Sheet1」のセルA2 = "実績2" & 「.xlsx」
 →「C:¥Test¥実績2.xlsx」を開き、アクティブブックとなる
i = 3 →「Book1.xlsm」のシート「Sheet1」のセルA3 = "実績3" & 「.xlsx」
 →「C:¥Test¥実績3.xlsx」を開き、アクティブブックとなる。

【ブック「Book1.xlsm」のシート「Sheet1」】
A
1 実績1
2 実績2
3 実績3
カテゴリスタンダード