複数ワークシートを選択する、Arrayを使って VBAの基礎知識

VBAの基礎知識 複数ワークシートを選択する、Array関数を使って

ここでは複数のワークシートを同時に選択するケースとして Array 関数を使用する場合をご紹介します。 Array関数を使用して参照したいワークシート配列にして指定することができます。


複数ワークシートを選択する、Arrayを使って

VBAの基礎知識 004回

複数のシートを一度に選択する VBA、Arrayを使って

今回は複数のワークシートを同時に選択するケースとして Array 関数を使用する場合をご紹介します。
Sheet1,Sheet3,Sheet5,Sheet7,などといくつもシートを選択する場合にそれぞれのシートに対して SELECT メソッドを使ってコードを記述していくのは大変です。 Array関数を使用して参照したいワークシート配列にして指定することができます。

Sheets(Array("Sheet1", "Sheet2", "Sheet4")).Select

複数のシートを一度に選択する VBA

1.複数のシートを対象に一度に選択したい場合は、 関数を使って複数のインデックス番号をやシート名を同時に指定することができます。
マクロの記録で操作した場合にも、Array 関数が使われて次のように記述されます。


シフトキーを押しながら3枚のシートを選択する操作をマクロの記録で記録してみた
Sub 複数のシートを一度に選択する()
' 記録のマクロによるコード
    Sheets(Array("1番目", "2番目", "3番目")).Select
    Sheets("1番目").Activate
End Sub

2. 上記コードはこのようにシート名で指定してもよいし、インデックス番号を用いて次のように指定することもできます。
 Sheets(Array(1, 2, 3)).Slect
 Worksheets(Array(1, 2, 3)).Select

3. それではこのサンプルのシート1回目と2回目を選択してそれをコピーして、他のブックにコピーするというような時にはどのように書いたらいいのでしょうか?
その場合bookがアクティブになっていれば特に事前にセレクトする必要はありません。
Sheets(Array("1番目", "2番目")).Copy でOKです。

コピー先を指定しないと新規ブックが作成されてそこにコピーされます。コピー先をアクティベイトしましょう。

    Sheets(Array("1番目", "2番目")).Copy
    ActiveWorkbook.Worksheets("2番目").Select

複数ワークシートを選択する、Arrayを使って3

【まとめ】複数のワークシートを参照するときは、Worksheetsプロパティの引数に、参照したいワークシート名、またはインデックス番号をArray関数を使っで指定します。
Array関数は、引数で指定した要素を配列にして返す関数です。

しかし全てのワークシートを参照する場合は、配列に全てのワークシートを入れて指定する必要はありません。
この場合はワークシートコレクションを指定してやればいいのです。  Worksheets.Select