我在工作表事件单元格更改上有这个特定代码。当我在单元格A1上键入id_parameter时,它会在工作表上找到某些数据。
找到数据后,会将其写入此工作表。
现在,当我更改数据C列的值时,我想运行一个不同的宏。
我无法找到合适的程序。 Do_something()接收C列中更改的值。我希望我能够清楚地解释它。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Call Search_data
End If
'Data is written in B2:E10
If Not Intersect(Target, Range("C2:C10")) Is Nothing Then
Call Do_something(Target.Value)
End If
End Sub
答案 0 :(得分:0)
您发布的代码按预期工作。问题很可能是由于Search_Data和/或Do_Something。
您更改单元格A1,然后更改B2中的所有单元格:E10。包括更改的C2:C10,以确保无法再次触发change_event。
names(dataframe)[4] <- metric
公共变量EventsDisabled将确保在给定用户输入时运行change事件,但在Worksheet_Change事件更改工作表时不会运行。否则你会遇到各种奇怪的循环,这些循环可能是无限的,或者至少需要很长时间。你的问题很可能也与此有关。确保您的Do_Something子具有正确的输入类型。您应该设置几个断点并打开下面的本地窗口: 在这里查看&gt;本地窗口,您可以看到所有变量和对象及其类型。您也可以输入:
Option Explicit
Public EventsDisabled As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not EventsDisabled Then
EventsDisabled = True
If Not Intersect(Target, Range("A1")) Is Nothing Then
Call search_data
End If
'Data is written in B2:E10
If Not Intersect(Target, Range("C2:C10")) Is Nothing Then
Call do_something(Target.Value)
End If
End If
End Sub
进入直接窗口,然后查看您需要在Do_Something签名中键入的类型。