目標
ExcelVBAのActiveSheetプロパティを理解して操作できる
ExcelVBAではプロパティを知るとかなり多くの処理を自動で行わせることができます。加えて、VBAのプログラミング学習では変数や制御構造を学ぶ前にいろいろな設定を経験すると制御構造や様々なデータ構造の学習に入ったときに、オブジェクトやプロパティについて悩まなくてもよくなるので学習効率が良くなります。
ExcelVBAでよく使う「9つのプロパティ」
プロパティ(アルファベット順) |
ActiveSheet ※今回の記事で扱うプロパティです。 |
ActiveCell |
Cells |
End |
Offset |
Range |
Sheets |
Value |
Worksheets |
ActiveSheetプロパティの概要と利用方法
ActiveSheetプロパティとは
ActiveSheetプロパティは、現在アクティブとなっているワークシートを取得します。
「アクティブ」とは、現在利用している、または利用できる状態にあるオブジェクトを指します。例えばいくつかのExcelファイルを開いている場合、入力や操作が可能なファイルは必ずひとつとなります。この状態にあるものが「アクティブ」なオブジェクトとなります。
ActiveSheetプロパティの利用方法
Excelの準備
Excelでシートを追加して「Sheet2」の名前を「sample1」に変更します。
使い方のパターンを確認
❶ ActiveSheetプロパティでシートを操作する時は必ず事前に、
シートを選択するか、
Worksheets(“sample1”).Select
アクティブにします。
Worksheets(“sample1”).Activate
❷ 操作したいワークシートが選択できたらActiveSheetプロパティを利用します。
例:アクティブなワークシート上の任意のセルへの文字列の入力(下の記述では、❶でワークシートsample1をアクティブとしているので、ワークシートsample1のセルA1に「文字列」が設定されます。)
ActiveSheet.Range(“A1”).Value = “文字列”
ActiveSheetプロパティの「Previous」と「Next」
ActiveSheetの「右隣のシート」や「左隣のシート」を操作する場合やアクティブシートに変更する場合などに利用します。
アクティブなシートから1つ左のシートをアクティブにする時。
ActiveSheet.Previous.Select
アクティブなシートから1つ右のシートをアクティブにする時。
ActiveSheet.Next.Select
ActiveSheetプロパティの「Index」
アクティブシートがマクロブック内のワークシートで左から何番目に存在するかを確認できます。
サンプルプロシージャ
Option Explicit
Sub practiceAS()
'事前に予めシートを選択するかアクティブにします。
Worksheets("sample1").Select
'######ここはコメントにしています#####
'アクティブにする場合
'Worksheets("sample1").Activate
'######ここはコメントにしています#####
ActiveSheet.Range("A1").Value = "ここはシートsample1のセルA1である"
MsgBox "1つ左は" & ActiveSheet.Previous.Name
MsgBox "1つ右は" & ActiveSheet.Next.Name
MsgBox "シートは左から" & ActiveSheet.Index & "番目です"
ActiveSheet.Previous.Select
End Sub
実行結果
プログラムの動きを示すと以下のようになっています。
sample1のシートを選択してアクティブシートに指定します。
Worksheets(“sample1”).Select
‘######ここはコメントにしています#####
‘Worksheets(“sample1”).Activate
‘######ここはコメントにしています#####
アクティブシートとなった「sample1」のセルA1に「ここはsample1.xlsmのセルA1である 」が入力されます。
ActiveSheet.Range(“A1”).Value = “ここはシートsample1のセルA1である”
次にメッセージボックスでsample1のシートの左側のシート名が表示されます。
MsgBox “1つ左は” & ActiveSheet.Previous.Name
メッセージボックスの「OK」を押下すると2つ目のメッセージボックスでsample1のシートの右側のシート名が表示されるます。
MsgBox “1つ右は” & ActiveSheet.Next.Name
先ほど同様にメッセージボックスの「OK」を押下すると3つ目のメッセージボックスが現れてアクティブシートが左から2番目であることが表示されます。
MsgBox “シートは左から” & ActiveSheet.Index & “番目です”
更に続けてメッセージボックスの「OK」を押下すると現在のアクティブシート(sample1)から1つ左のSheet1にアクティブシートが変更さます。
ActiveSheet.Previous.Select
ActiveSheetプロパティはアクティブなシートに対して様々な設定を行うための便利なプロパティです。アクティブなシートの任意のセルに文字列を入力するだけでなく、セルの値を取得するなど色々な場面で使用されます。
今回の内容は以上です。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。