Vba 使用案例对单元格更改运行宏
我相信这是一个简单的答案,但我不熟悉VBA中的案例。我想做的是创建一个监控特定单元格变化的案例 如果指定范围发生更改,则应运行某些宏作为对该更改的响应。否则,什么也不应该发生。以下是我到目前为止的情况:Vba 使用案例对单元格更改运行宏,vba,excel,Vba,Excel,我相信这是一个简单的答案,但我不熟悉VBA中的案例。我想做的是创建一个监控特定单元格变化的案例 如果指定范围发生更改,则应运行某些宏作为对该更改的响应。否则,什么也不应该发生。以下是我到目前为止的情况: Private Sub Worksheet_Change(ByVal Target As Range) Select Case (Change) Case Range("A1").Address Call success Case
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case (Change)
Case Range("A1").Address
Call success
Case Else
'Do nothing
End Select
End Sub
\\\\\\\\\\\\\\\\\\\\\\
Sub success()
' success Macro
Cells(1, 10).Value = "Success!"
End Sub
问题是似乎什么也没发生。请注意,这只是一个理解案例等的测试。一旦我得到了解决方案,我希望将其扩展到更复杂的内容
我觉得这与代码的“选择案例(更改)”部分有关,但我不确定。请不要用if/else语句来回答这个问题,我真的希望它以案例的形式出现。谢谢
Select Case Target.Address(0, 0)
Case "A1": Call success
Case "A2": Call DoSomething
Case Else: Call OtherAction
End Select
注意
目标
参数:
一个简洁的例子是这样的
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const CELL1 = "A1"
Const CELL2 = "C2"
Const CELL3 = "D3"
Dim rg As Range
On Error GoTo ExitSub
Application.EnableEvents = False
Set rg = Union(Range(CELL1), Range(CELL2), Range(CELL3))
If Intersect(rg, Target) Is Nothing Then
' Do nothing
Else
Select Case Target.Address(0, 0)
Case CELL1
Call success(1)
Case CELL2
Call success(2)
Case CELL3
Call success(3)
Case Else
'Do nothing
End Select
End If
ExitSub:
Application.EnableEvents = True
End Sub
Sub success(i As Long)
' success Macro
Cells(i, 10).Value = "Success!"
End Sub
尝试选择案例目标。地址。。。案例“$A$1”测试特定单元格位置。变量
Change
中有什么内容?在我之前的评论中,我假设您希望测试Target
的地址,但可能不是。应该注意的是,Target可能更像是一个单元格。非常简洁,正是我想要的。谢谢@Jeeped添加了解释还应注意,如果宏success、DoSomething或其他操作中的一个更改A1或A1,事件将再次激发A2@Storax还有什么需要注意的?也许,我忘了包括错误处理程序和关闭DisplayAlerts、EnableEvents、ScreenUpdate、将计算设置为手动?您添加了。您忘记从工作表中删除所选内容。\u SelectionChange。