
MicroSoft の解説
MicroSoft のホームページ Learn > Office VBA リファレンス > Excel > 概念 > ブックとワーク の中の「複数のシートを参照する」の解説によりますと
複数のシートを同時に指定するには、 Array 関数を使います。
とあります。
そして次のコードが掲載されています。
Sub Several()
Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select
End Sub
このようにできれば次のようにもできます。
Sub Several1()
Dim Target As Variant
Target = Array("Sheet1", "Sheet2", "Sheet4")
Worksheets(Target).Select
End Sub
データがある複数のシートの選択
考えの方向は、前のコードの配列「 Target 」にデータがあるシートの名前を格納する方法を検討することになります。
シートの設定
シート「 sheet1 」「 sheet3 」「 sheet4 」のセル「 A1 」に 1 をセットし、他のシートには何もセットしていません。

この設定で、シート「 sheet1 」のセルをダブルクリックしてみます。
想定とおりシート「 sheet1 」「 sheet3 」「 sheet4 」が選択状態になりました。

シート「Sheet1」のコード
コードは、シート「 sheet1 」にVBエディターで次のコードを書いています。
Option Explicit
'---------------------------------------
'
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Call Several2
End Sub
'---------------------------------------
'
Sub Several2()
Dim Sh As Worksheet
Dim iCount As Long
Dim Target() As Variant
'データがあるシートの名前を格納します。
'とりあえずシートの数だけ確保
ReDim Target(Worksheets.Count - 1)
For Each Sh In Worksheets
'データの有無の判定
'この例のシートでは UsedRange 左上のトップで判定しています。
If Sh.UsedRange.Cells(1, 1) <> "" Then
Target(iCount) = Sh.Name
iCount = iCount + 1
End If
Next Sh
If iCount > 0 Then
'余分な配列の除去
ReDim Preserve Target(iCount - 1)
'シートの一括選択
Worksheets(Target).Select
End If
End Sub
データなしの定義
使用範囲の取得に UsedRange を使っていますが、取得する範囲は表面上「空」の状態でも計算式のあるセルも含みますので、どういう状態をデータがないと定義するかにかかわります。
したがって、データがない判定は書式など状況に応じて決める必要があります。