Vba-events

提供:Dev Guides
移動先:案内検索

VBA-イベント

セルまたはセル値の範囲を手動で変更すると、イベント駆動型プログラミングであるVBAをトリガーできます。 変更イベントは物事を簡単にするかもしれませんが、書式設定でいっぱいのページを非常に迅速に終了できます。 イベントには2種類あります。

  • ワークシートイベント
  • ワークブックイベント

ワークシートイベント

ワークシートイベントは、ワークシートに変更があるとトリガーされます。 シートタブを右クリックして[コードの表示]を選択し、後でコードを貼り付けることで作成されます。

ユーザーはそれらのワークシートをそれぞれ選択し、ドロップダウンから「WorkSheet」を選択して、サポートされているすべてのワークシートイベントのリストを取得できます。

入力ボックスのデモ

以下は、ユーザーが追加できる、サポートされているワークシートイベントです。

Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

ダブルクリックする前にメッセージを表示するだけです。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   MsgBox "Before Double Click"
End Sub

出力

セルをダブルクリックすると、次のスクリーンショットに示すように、ユーザーにメッセージボックスが表示されます。

入力ボックスのデモ

ワークブックイベント

ワークブックイベントは、ワークブック全体に変更があるとトリガーされます。 次のスクリーンショットに示すように、「ThisWorkbook」を選択し、ドロップダウンから「workbook」を選択することで、ワークブックイベントのコードを追加できます。 次のスクリーンショットに示すように、Workbook_openサブプロシージャがすぐにユーザーに表示されます。

入力ボックスのデモ

以下は、ユーザーが追加できる、サポートされているWorkbookイベントです。

Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)

新しいシートが作成されるたびに、新しいシートが正常に作成されるというメッセージをユーザーに表示するだけでよいとしましょう。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
   MsgBox "New Sheet Created Successfully"
End Sub

出力

新しいExcelシートを作成すると、次のスクリーンショットに示すようなメッセージがユーザーに表示されます。

入力ボックスのデモ