今回はシートを取得する方法についてご説明します。ExcelのシートはWorksheetオブジェクトで取得することができます。
それでは具体的なコードについて確認していきましょう。
Worksheetオブジェクトの取得
<コード①>
Dim WS As Worksheet 'Worksheetオブジェクトの定義' Set WS = Sheets("Sheet1") 'シートの取得'
1行目でWorksheetオブジェクトをWSという名前で定義し、2行目でSheet1の情報をWorksheetオブジェクトにより取得しています。(=の右側のオブジェクトが左側に格納されます。)
また、オブジェクトの格納を行う場合は行頭にSetと表記するようにします。
インデックス番号によるシートの取得
シートには左から順に1・2・3・・・とインデックス番号が振られていますが、これを使用してシートを取得することもできます。
そして、取得したWorksheetオブジェクトは通常のシートの様にアクティブにするなどの操作を行うことができます。
<コード②>※以降1行目のWorksheetオブジェクトの定義は省略します。
Set WS = Sheets(2) 'インデックス番号でシートの取得' WS.Activate '取得したシートをアクティブにする' MsgBox "2番目のシートをアクティブにしました。"
<実行例>
ちなみに、シートの数はSheets.Countで取得することができます。コード②を次の様に書き換えてみましょう。
<コード③>
Set WS = Sheets(Sheets.Count) '最終シートの取得' WS.Activate '取得したシートをアクティブにする' MsgBox "一番右側のシートをアクティブにしました。"
<実行例>
コード③の2行目に注目してください。インデックス番号としてシートの総数を指定することにより最後のシートが取得できます。
アクティブシート・選択したシートの取得
ActivateやSelectで指定したシートの取得は次の様に行います。例ではNameプロパティでシート名を変更しています。
<コード④>
Sheets("Sheet1").Activate Set WS = ActiveSheet 'アクティブシートの取得' WS.Name = "Sample1" Sheets("Sheet2").Select Set WS = ActiveWindow.SelectedSheets(1) '選択されたシートの1番目を取得' WS.Name = "Sample2"
<実行例>
まとめ
シートをWorksheetオブジェクトで取得すると取得元のオブジェクトと同じように操作することができるようになります。
作業対象のシートが複数存在する場合・シート名が長くて扱いづらい場合などVBAのコード内で作業しやすい名前をつけておくと便利ですね。