Excelでは、表示されているすべてのワークシートを選択するのは、任意のシートタブを右クリックして、[すべてのシートを選択]を選択するのと同じくらい簡単です。ただし、VBAコードを使用して同じタスクを実行することはより困難です。

Excelのオンラインヘルプでは、Sheetsコレクションで配列関数を使用してシートを名前で選択することを提案しています。これは、ブックの各シートの名前がわかっている場合に役立ちます。これは、任意のワークブックのすべてのシートを選択する一般的なコードを作成する場合に問題を引き起こします。幸いなことに、Microsoftの手法の変形を使用して、インデックス番号でシートを参照できます。以下はコードです:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     For i = 1 To Sheets.Count         ReDim Preserve myArray(i - 1)

myArray(i - 1) = i     Next i     Sheets(myArray).Select End Sub

ブックに非表示のシートが含まれていない限り、これはうまく機能します。Sheets(i).Visible = Falseです。もちろん、上記のコードは、非表示のワークシートを無視するように適合させることができます:

Sub SelectSheets()

Dim myArray() As Variant     Dim i As Integer     Dim j As Integer     j = 0     For i = 1 To Sheets.Count         If Sheets(i).Visible = True Then             ReDim Preserve myArray(j)

myArray(j) = i             j = j + 1         End If     Next i     Sheets(myArray).Select End Sub

ただし、Selectメソッドにはほとんど知られていないパラメーターであるReplaceパラメーターがあります。 [置換]パラメーターを使用すると、表示されているすべてのシートを簡単に選択できます。

Sub SelectSheets1()

Dim mySheet As Object     For Each mySheet In Sheets         With mySheet             If .Visible = True Then .Select Replace:=False         End With     Next mySheet End Sub

mySheetは、ワークシートデータ型ではなく、オブジェクトデータ型として定義されていることに注意してください。これは、テスト中にグラフシートで問題が発生したためです。グラフシートはワークシートタイプではなかったため、選択されませんでした。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3058)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。