Worksheet_Activateイベント アクティブになったら並べ替えるイベントマクロ

Worksheet_Activateイベント

Worksheet_Activateイベント
Worksheet_Activateイベント

Worksheet_Activateイベントマクロ 18回

シートがアクティブになったら処理をする

今回は、ワークシート、グラフ シートのモジュールに記述してアクティブになったときに、実行するマクロです。


コードは、コピーしてご利用ください。

Activateの構文と引数

Activateの構文
 Private Sub object_Activate()

Private Sub Worksheet_Activate() 
	’処理したい内容をここに記述
End Sub

1. このブックのSheet2には、試験の結果が表示されています。
この表を昇順に並べ替えるというイベントを、Sheet2に書いています。
対象範囲を Me.Range("A3:E10") と指定しました。


Worksheet_Activateイベント-1
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.シートをアクティブにすると、以下の図のように点数で昇順に並び替えが行われてます。


Worksheet_Activateイベント-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

Worksheet_Activateイベント-3

シートをアクティブにしたら入力件数を表示

4. もう一つ簡単な例をご紹介します。これはシートをアクティブにしたら、何行入力されているかを表示します。
変数 Pretotal を使い、カレントリージョンの行数を数え、入力行でない見出しの2行をマイナスします。
これで、前回までの入力件数となります。

Private Sub Worksheet_Activate()
    Dim Pretotal As Long
    Pretotal = Range("A3").CurrentRegion.Rows.Count - 2
    MsgBox "前回までの入力件数は" & Pretotal & "件です。"
End Sub

Worksheet_Activateイベント-4

こちらもおすすめ