【VBA】複数のシートを同時に選択する

Excel VBAでは、複数のシートをまとめて選択することが可能です。複数シートを同時に操作したい場合や、印刷範囲を複数シートで一括設定する場合などに便利です。

本記事では、複数のシートを同時に選択する方法をサンプルコード付きで解説します。


1. 基本構文

複数のシートを同時に選択するには、Sheets.Select メソッドを使います。

Sheets(Array("シート名1", "シート名2", "シート名3")).Select

ここで、Array関数を利用して複数のシート名を配列で指定します。


2. 使用例:シートを同時に選択

以下のコードは、3つのシート「Data」「Report」「Summary」を同時に選択します。

Sub SelectMultipleSheets()
Sheets(Array("Data", "Report", "Summary")).Select
End Sub

3. 1つのシートを基準に他シートを追加選択する

既にアクティブになっているシートを基準に、追加で他のシートを選択することもできます。

Sub AddSelectSheets()
Sheets("Data").Select 'まずDataシートを選択
Sheets("Report").Select False 'Dataシートに加えてReportシートを選択
End Sub

Select False とすることで、既に選択されているシートを維持したまま追加で選択が可能です。


4. すべてのシートを一括選択する

すべてのシートをまとめて選択する場合は、以下のようにします。

Sub SelectAllSheets()
Sheets.Select
End Sub

5. エラー対策:存在しないシートが含まれる場合

複数シート選択では、配列内に存在しないシート名があるとエラーが発生します。以下のように、存在するシート名だけを配列に追加すると安全です。

Sub SafeSelectSheets()
Dim arrSheets() As String
Dim tmp() As String
Dim i As Long

tmp = Split("Data,Report,Summary", ",") '選択したいシート名
ReDim arrSheets(0)

For i = LBound(tmp) To UBound(tmp)
If SheetExists(tmp(i)) Then
arrSheets(UBound(arrSheets)) = tmp(i)
If i < UBound(tmp) Then

ReDim Preserve arrSheets(UBound(arrSheets) + 1)
End If
End If
Next i

If UBound(arrSheets) >= 0 Then Sheets(arrSheets).Select
End Sub

'シートが存在するかを確認すための関数
Function SheetExists(ByVal sheetName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(sheetName) Is Nothing
On Error GoTo 0
End Function

6. まとめ

  • Sheets(Array("A", "B")).Select で複数シートを同時に選択可能
  • Select False を使うと現在選択されているシートに追加できる
  • 存在しないシートを指定するとエラーになるため、必要に応じてチェックが必要

コメント

タイトルとURLをコピーしました