Worksheet_Activateイベント
Worksheet_Activateイベントマクロ 18回
シートがアクティブになったら処理をする
今回は、ワークシート、グラフ シートのモジュールに記述してアクティブになったときに、実行するマクロです。
コードは、コピーしてご利用ください。
Activateの構文と引数
Activateの構文
Private Sub object_Activate()
Private Sub Worksheet_Activate() ’処理したい内容をここに記述 End Sub
1. このブックのSheet2には、試験の結果が表示されています。
この表を昇順に並べ替えるというイベントを、Sheet2に書いています。
対象範囲を Me.Range("A3:E10") と指定しました。
Private Sub Worksheet_Activate() Me.Range("A3:E10").Sort Key1:=Range("E3"), Order1:=xlAscending End Sub
データ範囲を並べ替える
データ範囲を並べ替えるには、その対象となるRangeオブジェクトに対し、SORTメソッドを使用します。
Range.Sort メソッド の構文
Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase , Orientation , SortMethod, DataOption1, DataOption2 , DataOption3)
Range.Sort メソッド の引数解説
引数は構文にあるように多数ありますが、実際に使うものは少ないです。
引数名 | データ型 | 説明 |
---|---|---|
Key1~3 | Variant | 並べ替えフィールドを範囲名 (文字列) またはRangeオブジェクトで指定 |
Order1~3 | XlSortOrder | Key1~3で指定した値の並び替え順序を指定 |
Header | XlYesNoGuess | 最初の行にヘッダー情報が含まれているかどうかを指定、xlNo は既定値 |
2.シートをアクティブにすると、以下の図のように点数で昇順に並び替えが行われてます。
3. この表では、もともとは試験結果の氏名の列を昇順にしてありました。
そこで、もとに戻したいたい時は、Range.Sortメソッドの引数である、Key1をA列にしてやると、名前順に戻ります。
Key1:=Range("A3")
Private Sub Worksheet_Activate() Me.Range("A3:E10").Sort Key1:=Range("A3"), Order1:=xlAscending MsgBox "氏名の列をキーに昇順に戻しました。" End Sub
シートをアクティブにしたら入力件数を表示
4. もう一つ簡単な例をご紹介します。これはシートをアクティブにしたら、何行入力されているかを表示します。
変数 Pretotal を使い、カレントリージョンの行数を数え、入力行でない見出しの2行をマイナスします。
これで、前回までの入力件数となります。
Private Sub Worksheet_Activate() Dim Pretotal As Long Pretotal = Range("A3").CurrentRegion.Rows.Count - 2 MsgBox "前回までの入力件数は" & Pretotal & "件です。" End Sub