前回のレッスンでは、本全体に関連する出来事について考えました。ここでは、1 つのシートに関連するイベントに焦点を当てます。
個々のワークシートに対してイベントベースの命令を実行するには、エディターでワークシートを選択し、Worksheet を選択します。
SelectionChange イベントはデフォルトで追加されます。このイベントは、範囲の内容が変更されるたびに発生します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub
たとえば、次のコードは、選択した 1 つ以上のセルに塗りつぶしの色を追加し、以前に選択した範囲が変更されたときにその範囲から塗りつぶしの色を自動的に削除します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static previous_selection As String If previous_selection <> "" Then '以前の選択から背景色を削除します。 Range(previous_selection).Interior.ColorIndex = xlColorIndexNone End If '現在の選択範囲に背景色を追加します。 Target.Interior.Color = RGB(181, 244, 0) '現在の選択範囲のアドレスを保存します。 previous_selection = Target.Address End Sub
このイベントは、ワークシートがアクティブ化されたときに発生します。
Private Sub Worksheet_Activate() End Sub
このイベントは、別のワークシートがアクティブ化されたときに発生します。
Private Sub Worksheet_Deactivate() End Sub
このイベントは、ワークシートのセルがダブルクリックされると発生します。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub
このイベントは、ワークシート上でマウスを右クリックする前に発生します。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) End Sub
このイベントは、ワークシート内のデータが計算または再計算されるたびに発生します。
Private Sub Worksheet_Calculate() End Sub
このイベントは、指定されたシートのセルの内容が変更されるたびに発生します。
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
このイベントは、リンク (ハイパーテキスト) がクリックされたときに発生します。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub
イベントなしでコードを実行するには、次のようにコードの 2 行の間にコードを挿入します。
Application.EnableEvents = False '=> イベントを無効にする 'いくつかの指示... Application.EnableEvents = True '=> イベントを再度有効にする