4-2.アクティブシート以外の処理

対象オブジェクトの記述について

VBAの構文は、処理対象のオブジェクト.プロパティ/メソッドの形式ですので、処理対象のオブジェクトを明確に記述する必要があります。

本来コードには、”対象となるブック”.”対象となるシート”.”対象となるセル”を記述する必要がありますが、アクティブなブックやアクティブなシートの場合は、ブックやシートの指定を省略できます。

これまでに紹介したサンプルコードの多くは、アクティブなブックやシートを前提としていたので、ブックやシートの指定は省略していました。

ただし、アクティブでないブックやシートを処理する場合は、オブジェクトの指定は必須ですし、処理の途中で、意図せずアクティブなシートが切り替わってしまうと、間違った処理が実行される可能性があります。

また、以前作成したコードを振り返るときや、他人が作成したコードを解読する場合は、対象オブジェクトの記述がないと、解読性が非常に低下しますので、アクティブなシートを処理する場合でも、対象のオブジェクトを記述すると解読性が向上します。

別シートの記述の仕方

前述の通り、アクティブなシートのみを処理する場合は、コード内に対象のシートを記述する必要はありません。

ただし、アクティブなシート以外の別シートを処理する場合は、対象シートのオブジェクトを明確に記述する必要があります。

シートの指定は、Worksheet.Rangeの形式で記述します。

例えば、選択しているセルに別シートのセルの値をコピーする場合は、
 Selection.Value = Worksheets(“別シート”).Range(“A1:C5”) と記述します。

また、別ブックを処理する場合は、Workbook.Worksheet.Rangeの形式で記述します。

別シート処理のサンプルコード

Sub サンプルコード()
    
    'セルのコピぺ(Copyメソッド)
    Worksheets(1).Range("A1:C5").Copy Worksheets(2).Range("A1:C5")
    '全てのセルをコピペ(Valueプロパティ)
    Worksheets(1).Cells.Value = Worksheets(2).Cells.Value    
    '別ブックへコピペ(Valueプロパティ)
    Workbooks("別ブック").Worksheets(1).Range("A1:C5").Value = Selection.Value
    
End Sub

コメント