VBAの基礎知識 複数ワークシートを選択する、Array関数を使って
ここでは複数のワークシートを同時に選択するケースとして Array 関数を使用する場合をご紹介します。 Array関数を使用して参照したいワークシート配列にして指定することができます。
VBAの基礎知識 004回
複数のシートを一度に選択する VBA、Arrayを使って
今回は複数のワークシートを同時に選択するケースとして Array 関数を使用する場合をご紹介します。
Sheet1,Sheet3,Sheet5,Sheet7,などといくつもシートを選択する場合にそれぞれのシートに対して SELECT メソッドを使ってコードを記述していくのは大変です。
Array関数を使用して参照したいワークシート配列にして指定することができます。
Sheets(Array("Sheet1", "Sheet2", "Sheet4")).Select
複数のシートを一度に選択する VBA
1.複数のシートを対象に一度に選択したい場合は、 関数を使って複数のインデックス番号をやシート名を同時に指定することができます。
マクロの記録で操作した場合にも、Array 関数が使われて次のように記述されます。
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
【まとめ】複数のワークシートを参照するときは、Worksheetsプロパティの引数に、参照したいワークシート名、またはインデックス番号をArray関数を使っで指定します。
Array関数は、引数で指定した要素を配列にして返す関数です。
しかし全てのワークシートを参照する場合は、配列に全てのワークシートを入れて指定する必要はありません。
この場合はワークシートコレクションを指定してやればいいのです。
Worksheets.Select