HOME > 即効テクニック > Excel VBA > シート操作関連のテクニック > 複数シートの選択(引数にFalseを指定する)

複数シートの選択(引数にFalseを指定する)|Excel VBA

シート操作関連のテクニック

複数シートの選択(引数にFalseを指定する)

(Excel 97/2000/2002/2003/2007/2010)

ワークシートを選択するには、Selectメソッドを使用します。
複数のシートを選択するには、シート名を配列で指定する方法が一般的ですが、配列を使わずに選択する方法もあります。
ここでは、WorksheetオブジェクトのSelectメソッドの引数にFalseを使用する方法をご紹介します。

Selectメソッドには引数Replaceがあります。
既に選択されているシートを解除して指定したシートのみを選択する場合、引数ReplaceにTrueを指定し、既に選択されているシートと指定したシートを選択する場合はFalse を指定します。省略するとTrueとみなされます。

次のサンプルは、ブック内にある"売上"で始まるすべてのシートを選択します。

Sub Sample()
    Dim Flg As Boolean
    Dim Sh As Worksheet

    Flg = True
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name Like "売上*" Then
            Sh.Select Replace:=Flg 
            Flg = False    
        End If
    Next Sh
    
    If Flg Then MsgBox "対象のシートはありません"
End Sub

現在アクティブなシートが選択対象のシートとは限らないので、条件を満たす最初のシートを、引数ReplaceにTrueを設定して選択するところがポイントです。2つ目以降のシートは引数にFalseを指定し、選択シートを追加します。
条件を満たすシートが1つもなかった場合は、選択シートはマクロ実行前のままとなります。