我确信这是一个简单的答案,但我不熟悉VBA中的案例。我要做的是创建一个监视特定单元格以进行更改的案例。
如果发生对指定范围的更改,则应运行某些宏作为对该更改的响应。否则,什么都不应该发生。这是我到目前为止:
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
注意Target
参数:
一个更简洁的例子就是这样
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