Excel vba 当某个单元格改变时执行某个过程

小弟才了解到vba有个问题请教
Private Sub Worksheet_Activate()UserForm2.HideUserForm1.ShowWith Worksheets("客户产品及价格").Range("c1:dd1000")Set C = .Find(Range("C3").Value, LookIn:=xlValues)If Not C Is Nothing Then Range("H5") = "=IFERROR(VLOOKUP(C5,客户产品及价格!$A$2:$VJ$65536," & C.Column & ",FALSE),"""")"End IfEnd WithRange("H5").SelectSelection.AutoFill Destination:=Range("H5:H" & [A65536].End(xlUp).Row - 1)End Sub

意思就是当选择这个表时使H5这个单元格使用vlookup公式在另外一个表中查找产品对应的单价。
但是有个问题就是一上来的时候客户名称是空的,所以找不到对应的客户是在哪一行,而这段代码又必须要切换一下表才能执行,单价才能自动生成。
怎么能让
With Worksheets("客户产品及价格").Range("c1:dd1000")Set C = .Find(Range("C3").Value, LookIn:=xlValues)If Not C Is Nothing Then Range("H5") = "=IFERROR(VLOOKUP(C5,客户产品及价格!$A$2:$VJ$65536," & C.Column & ",FALSE),"""")"End IfEnd WithRange("H5").SelectSelection.AutoFill Destination:=Range("H5:H" & [A65536].End(xlUp).Row - 1)这一段在客户名称后面的那个地方C3发生改变时就执行一次?

第1个回答  推荐于2017-12-16


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 5 And Target.Column = 3 Then
'在这里写代码,整个代码要放在sheet 模块中 ,放在sheet1 ,sheet1生效,酱紫的
End If
End Sub

本回答被提问者采纳
第2个回答  2014-06-04
把代码放在Sheet客户产品及价格的
Worksheet_Change(…………)事件中
并判断Target的column=3和row>4是否满足,满足就运行
相似回答