4-1.Worksheetオブジェクト

今回は、シートを表すWorksheetオブジェクトシートの選択について説明します。
シートに対する処理を行う際は、処理対象にWorksheetオブジェクトを指定します。
また、セルを処理する際に、対象のシートを指定するため、親オブジェクトにWorksheetオブジェクトを指定します。

Worksheetオブジェクトの取得

Worksheetオブジェクトを取得するには、Worksheetsプロパティ/Sheetsプロパティを使用します。

Worksheetプロパティ / Sheetsプロパティ

○構文
Worksheets(index / name) / Sheets(index / name)

○処理
指定したWorksheet/Sheetsオブジェクトを取得します。
Worksheetsプロパティはワークシートのみ対象とし、Sheetsプロパティはグラフシートなどのワークシート以外のシートも対象に含みます。

引数にインデックスやシート名を指定することで、操作したいシートを取得することができます。
シートのインデックスは、シートの並び順で左から1番2番…となります。
引数を指定しない場合は、Worksheetsコレクションを取得します。

アクティブなシートを取得する場合は、ActiveSheetプロパティで取得できます。

例)最初のワークシート(シート名がSheet1)を取得する場合は、以下のいずれかで取得できます。
 Worksheets(1)
 Worksheets(“Sheet1”)
 Sheets(1) ※最初のシートがワークシート以外の場合、そのシートを取得
 Sheets(“Sheet1”)

Worksheetsコレクション

コレクションとは、同一のオブジェクトの集合体のことです。
Worksheetsコレクションは、Worksheetオブジェクトの集まりになります。

シートの枚数を数えるなど、シート全体に関する処理を行う場合や、シートを追加する場合などは、処理対象としてWorksheetsコレクションを指定します。

WorksheetsコレクションとWorksheetオブジェクトの関係性

シートの選択

シートを選択する場合は、SelectメソッドかActivateメソッドを使用します。

Selectメソッド

○構文
Worksheet.Select Replace:=True / False

○処理
指定したWorksheetを選択します。

○引数
引数を省略またはTrueを指定すると、既に選択しているシートの選択を解除して、新たにシートを選択します。
Falseを指定すると、既に選択しているシートの選択を解除せず、グループとして選択します。

Activateメソッド

○構文
Worksheet.Activate

○処理
指定したWorksheetをアクティブにします。
複数シートが選択されている場合、選択を解除せず、指定したシートをアクティブにします。

SelectとActivateの違いですが、単一のシートを選択する場合は、SelectとActivateどちらを使用しても同じ結果となります。
単に複数のシートを選択する場合は、Selectメソッドで引数をFalseに指定します。
複数のシートを選択している時にアクティブシートを切り替える場合は、Activateメソッドを使用します。

サンプルコード

Sub シートの選択()
    
    '1つ目のシート(一番左のシート)を選択
    Worksheets(1).Select
    
    '2つ目のシートを選択
    Worksheets(2).Select
    Worksheets(1).Next.Select   'Next:1つ次(右)のシート
    Worksheets(3).Previous.Select   'Previous:1つ前(左)のシート
    
    '1つ目と2つ目のシートを選択
    Worksheets(1).Select
    Worksheets(2).Select Replace:=False
    
    '複数シートを一括選択 :引数に配列(Array)を指定することで一括取得
    Worksheets(Array(1, 2)).Select
    Worksheets(Array("Sheet1", "Sheet2")).Select
    
    '最後(一番右のシート)のシートを選択
    Worksheets(Worksheets.Count).Select
    'Workssheets.Count = ワークシートの枚数=最後のワークシートのインデックス
        
End Sub

コメント