こんにちは、Ryoです。
VBAでワークシートを選択する処理はかなり頻度も多いのではないかと思いますが、単独のシートだけでなく複数選択することも出来ます。また、ワークシートをアクティブにする指定や、複数選択したシート見出しの色を変えることも出来ますので、今回はその方法について書いてみたいと思います。
1.サンプル概要
以下画像のようにSheet1~Sheet5まであるブック(ファイル)があるとします。
現在は「Sheet1」が選択されアクティブ状態となっていますが、Sheet5を選択するように記述し実行すれば、当然こうなります。
次に、Sheet1とSheet3を選択した場合は以下の通りです。
2シート選択していますが、アクティブシートは「Sheet1」になります。
この2シート選択した状態で「Sheet3」をアクティブ指定する記述をすることで、アクティブ状態のシートを切り替えることも出来ます。
また全シートを選択し、シート見出しカラーを指定して変えることも可能です。
サンプルでは見出しを青色に変えています。
全シート選択状態なので薄い青色になっていますが、Sheet1だけを選択してみれば、この通りシート見出しが青色になっています。
2.サンプルコード
◆ワークシートの選択(単独シート)
Sub Sample1() Worksheets("Sheet5").Select End Sub
ワークシートを選択するにはSelectメソッドを使います。
オブジェクト.Select(replace)
このオブジェクトは当然ながらワークシートなので、Worksheetsプロパティを使用して指定しますが指定の際には「ワークシート名」または「インデックス番号」で指定します。
私の経験上、「インデックス番号」は管理しにくい面があるので、シート名で指定する方が後々楽だと思います。
このSelectにはreplaceという引数がありますが、True=省略と同じなので使う場合はFalseを用いることになります。使い方としては以下のサンプルで説明します。
◆ワークシートの選択(複数)とアクティブにする
Sub Sample2() Worksheets("Sheet1").Select Worksheets("Sheet3").Select False Worksheets("Sheet3").Activate End Sub
このサンプルを実行すると「Sheet1」と「Sheet3」が選択されますが、Sheet3を選択する際にWorksheets(“Sheet3”).Select Falseと指定しています。
False指定は上述の引数replaceの部分で、「現在選択されているワークシート選択状態を解除せずに指定したワークシートを選択する」という形になるので、複数選択出来るということになります。
またWorksheets(“Sheet3”).Activateとしているのは、アクティブとなっているSheet1からSheet3へ切り替える為で、ワークシートをアクティブにするにはActivateメソッドを使えばOKです。
オブジェクト.Activate
ワークシートに対してなので、当然ながらWorksheetsプロパティを使用します。
◆全ワークシートの選択と見出し色の変更
Sub Sample2() Dim i, Cnt As Integer 'ワークシート数をカウントする Cnt = Worksheets.Count For i = 1 To Cnt With Worksheets("Sheet" & i) If i <> 1 Then .Select False 'RGB関数を使い、見出し色を指定 .Tab.Color = RGB(0, 0, 255) Else .Select 'RGB関数を使い、見出し色を指定 .Tab.Color = RGB(0, 0, 255) End If End With Next i End Sub
このサンプルではWorksheets.Countを使って、現在アクティブとなっているブックの全シート数をカウントし、その数値でFor~Nextでループ処理しています。
Withを使っているのはWorksheets(“Sheet” & i)がコード内で重複する為、記述が面倒にならないように使っているものなので、.Select FalseはWorksheets(“Sheet” & i).Select Falseとなっており、.Tab.Color = RGB(0, 0, 255)はWorksheets(“Sheet” & i).Tab.Color = RGB(0, 0, 255)ということです。
If文を使ってiが1とそれ以外で処理を分けているのは、最初にワークシートを選択して次のシート以降は.Select Falseと指定する為です。
見出し色の指定はシート見出しを表すTabプロパティにColorプロパティを組み合わせることで変更しています。ColorプロパティにはRGB関数を使って指定すればOKです。
3.まとめ
ワークシートの選択は.Selectを使うという点はご存知かもしれませんが、そこにFalseを指定することで複数選択する手段もありますから、知っておくと何かの折に役に立つのではないかと思います。
アクティブ状態の切替はブックのアクティブ化などと同様になりますから、特に問題ないと思いますが、.Selectは単独シートを選択した場合にアクティブとなり、追加で選択したシート(複数選択)では.Selectを使っても追加選択したシートがアクティブにはならないという点にご注意ください。
シート全選択や見出しカラーについては一例として書いていますので詳細な解説は割愛していますが、このような方法もあるということで参考にしていただければ良いと思います。
以上、ワークシートの選択(単独/複数)、アクティブにする方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo