この記事では、ExcelのVBAマクロを使用してセルの値が変更された際の処理方法について解説していきます。
ポイントとしては、Worksheet_Change、MsgBoxを使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロで指定セルの数値が変わったら処理実行(メッセージボックス)する方法【Worksheet_Change】
それではまず、指定セルの数値が変わった際の処理方法について解説していきます。
この方法では、特定のセルの数値が変更された時にメッセージボックスを表示します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Private Sub Worksheet_Change(ByVal hensuu As Range)
Dim koumoku As Range
Set koumoku = Me.Range("A1")
If Not Intersect(hensuu, koumoku) Is Nothing Then
MsgBox "セルA1の値が変更されました"
End If
End Sub
コードのAlt+F8を押し、マクロ選択画面でWorksheet_Change関数を実行します。
このコードは、セルA1の値が変わった時に「セルA1の値が変更されました」というメッセージボックスを表示するものです。
VBAマクロで複数セルの数値が変わったら(and条件)処理実行(メッセージボックス)する方法【Intersect】
続いては、複数セルの数値が変わった際のand条件での処理方法について解説していきます。
この方法では、複数のセルのすべての数値が変更された時にメッセージボックスを表示します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Private Sub Worksheet_Change(ByVal hensuu As Range)
Dim koumoku1 As Range, koumoku2 As Range
Set koumoku1 = Me.Range("A1")
Set koumoku2 = Me.Range("A2")
If Not Intersect(hensuu, koumoku1) Is Nothing And Not Intersect(hensuu, koumoku2) Is Nothing Then
MsgBox "セルA1とA2の値が変更されました"
End If
End Sub
コードのAlt+F8を押し、マクロ選択画面でWorksheet_Change関数を実行します。
このコードは、セルA1とA2の値が共に変わった時に「セルA1とA2の値が変更されました」というメッセージボックスを表示するものです。
VBAマクロで複数セルの数値が変わったら(or条件)処理実行(メッセージボックス)する方法【Intersect】
最後に、複数セルの数値が変わった際のor条件での処理方法について解説していきます。
この方法では、複数のセルのいずれかの数値が変更された時にメッセージボックスを表示します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Private Sub Worksheet_Change(ByVal hensuu As Range)
Dim koumoku1 As Range, koumoku2 As Range
Set koumoku1 = Me.Range("A1")
Set koumoku2 = Me.Range("A2")
If Not Intersect(hensuu, koumoku1) Is Nothing Or Not Intersect(hensuu, koumoku2) Is Nothing Then
MsgBox "セルA1またはA2の値が変更されました"
End If
End Sub
コードのAlt+F8を押し、マクロ選択画面でWorksheet_Change関数を実行します。
このコードは、セルA1またはA2の値が変わった時に「セルA1またはA2の値が変更されました」というメッセージボックスを表示するものです。
まとめ
ExcelのVBAマクロを使用してセルの値の変更をトリガーとする処理方法を学びました。
特定のセルや複数のセル、and条件やor条件を用いての処理方法を理解することで、日常の業務を効率化させていきましょう。