VBA CHANGEイベントに複数イベントを
いつもお世話になっています。
色々しらべて試してみたんですが、うまくいかないんで教えてください。
CHANGEイベントに複数のイベントを書き込みたいんですが。
今現在、問題なく動いている以下のイベントがあります。
(1)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rang3 As Range
Dim rang4 As Range
Dim ■■ As String
Dim LastRow1 As Long
LastRow1 = Worksheets("○○").Cells(Rows.Count, "b").End(xlUp).Row
Set rang4 = Worksheets("○○").Range("b:I" & LastRow)
Set rang3 = Range("h4")
If Intersect(Target, rang3) Is Nothing Then Exit Sub
On Error Resume Next
■■ = WorksheetFunction.VLookup(Target.Value, rang4, 2, 0)
If Err.Number > 0 Then
MsgBox Target.Value & "はありません。基本情報台帳に入力してください。"
Range("h4").Select
Else
Application.EnableEvents = False
Range("I4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 2, False)
Range("j4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 3, False)
Range("k4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 7, False)
Range("l4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 8, False)
Range("m4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 5, False)
Application.EnableEvents = True
Range("K4").Select
End If
End Sub
このシートにもう一つ、イベントを入れたいのですが。
(2)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("E4")) Is Nothing Then
Exit Sub
Else
If Range("e4").Value = "1" Then
Target.Offset(0, 19).Value = "☆"
End If
どこに入れればいいのかわかりません。
(3)
また、(2)のイベントの他に、
(1)のVLOOLUPが実行され、尚且つ(2)のイベントのE4が値が1だった場合、Y4にH4の値を入れたいのですが・・・。
(2)のみなら動くことは確認できましたが、(1)のexit sub の直前に入れたり、end ifの前に入れたりしましたが、片方は動くが、もうひとつが動かないです。
(3)については、まったくわかりません。
マクロについて、自分でネットで勉強した程度なので、基本がわかっていないからなのでしょうが・・・。
どなたか、教えてください。
お願いします。
お礼
外の方の回答でchangeイベントではなくて、calculateを使ったら うまく行きました。 ご協力ありがとうございました。
補足
転記ミスでした。 caluculateイベントで処理ができました。 ありがとうございました。