マクロ内のすべての表示可能なワークシートの選択(Microsoft Excel)
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以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。