【Excel VBA】シートの選択(Selectメソッド)

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、シートの選択について解説していきます。
はじめに

今回は、シートの選択について解説します。
サンプルコードや引数、複数のシートを参照する場合の注意点、Activeとの違いなどを画像付きで詳しく説明しますので最後までお付き合いください。

この記事を読むメリット
  • シートの選択について、サンプルコードや画像付きで解説します
  • アクティブシートと選択済みシートの違いが分かります
  • 複数のシートを選択(グループ化)する方法が分かります
  • 応用的なソースコードを掲載しています

前提

選択済みシートとアクティブシートの違い

アクティブシート(ActiveSheet)というコードをよく見かけると思いますが、選択とアクティブの違いをご存知でしょうか?
以下画像は、Sheet2とSheet3が選択されています。
この場合、青枠が選択済みシート、赤枠がアクティブシートとなります。

選択とアクティブの違い
  • 選択済みシート:選択されているシートすべて
  • アクティブシート:最前面に表示されているシート
めい
アクティブシートは必然的に単一となります。

使用例

本項では、Selectメソッドのサンプルコード、引数などの基本的な使用方法を解説します。

サンプルコード

以下ソースコードでは、ブックの先頭のシートを選択した後、追加で隣のシートを選択します。

サンプルコード
Public Sub selectSheet()

    ' 先頭のシートを選択
    ThisWorkbook.Worksheets(1).Select

    ' シートを追加で選択
    ThisWorkbook.Worksheets(2).Select Replace:=False

End Sub

実行結果

実行前

実行後

選択とアクティブの違い
  1. Sheet1が選択され、Sheet3が非選択状態となる
  2. Sheet2が追加で選択される
りゅう
Selectメソッドの引数にFalseを指定すると、既に選択されているシートの選択状態を保持したまま追加でシートを選択することが出来ます。
引数の詳細は次項にて解説します。

詳細解説

Selectメソッドの構文や引数、注意点などについて解説します。

構文

構文

WorksheetObject.Select(Replace)

引数

# 引数 必須 詳細
1 Replace 既に選択されたシートの選択を解除するかどうかを指定します。
Trueの場合:選択状態を解除
Falseの場合:選択状態を維持
※デフォルト値はTrueです。

応用編

複数のシートを選択する

複数のシートを選択する際は、配列(Array)にインデックス番号 もしくは シート名を指定します。

サンプルコード

サンプルコード
Public Sub selectSheetMultiple()

    ' インデックス番号 1と2のシートを選択
    ThisWorkbook.Worksheets(Array(1, 2)).Select

    ' Sheet1とSheet2をを選択
    ThisWorkbook.Worksheets(Array("Sheet1", "Sheet2")).Select

    ' Sheet1とSheet2をを選択
    ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select

End Sub

実行結果

ワークシートでなく、グラフシートも含めて選択する場合はSheetsプロパティを使用します。

すべてのシートを選択する

サンプルコード

サンプルコード
Public Sub selectAllSheet()

    ' ブック内の全てのシートを選択
    ThisWorkbook.Worksheets.Select

End Sub

実行結果

選択シートをループする

サンプルコード

サンプルコード
Public Sub loopSelectSheet()
    Dim wsObj As Worksheet  ' Worksheetオブジェクト

    ' インデックス番号 1と2のシートを選択
    ThisWorkbook.Worksheets(Array(1, 2)).Select

    ' 選択されたシート単位でループする
    For Each wsObj In ActiveWindow.SelectedSheets

        ' シートの見出しを黄色にする
        wsObj.Tab.ColorIndex = 6
    Next wsObj

End Sub

実行結果

めい
上記の例では見出しの色変更を行っています。
それ以外の処理について、参考になる記事をご紹介しますので、もしよろしければご参照ください。

あわせて読みたい
【Excel VBA】シートの色変更(Colorプロパティ) はじめに 今回は、シート見出しの色を変更する方法について解説します。 シート見出しとは以下、赤枠箇所のことです。 この記事を読むメリット シート見出しの色変更の...
あわせて読みたい
【Excel VBA】シートのコピー(Copyメソッド) はじめに 今回は、シートをコピーする方法について解説します。 コピーにおける注意点も解説しますので、ぜひ最後までご覧ください。 この記事を読むメリット シートの...
あわせて読みたい
【Excel VBA】シートの移動(Moveメソッド) はじめに 今回は、シートを移動する方法について解説します。 移動における注意点も解説しますので、ぜひ最後までご覧ください。 この記事を読むメリット シートの移動...

シートが複数選択されているかを確認する(グループ化の判定)

サンプルコード

サンプルコード
Public Sub checkSheetGrouping()

    ' 複数シート選択(グループ化)判定
    If ActiveWindow.SelectedSheets.Count > 1 Then

        MsgBox "グループ化されています。", vbInformation
    Else

        MsgBox "グループ化されていません。", vbInformation
    End If

End Sub

実行結果

グループ化されている場合

グループ化されていない場合

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA