使用参数调用 sub 时应使用哪些参数(ByVal Target As Range)
Which arguments should be used when calling a sub with parameters (ByVal Target As Range)
我正在 VBA 上创建一个附加到 excel 中的数据验证列表的宏。当从列表中选择某个选项时,我希望它 运行 一个分配给该选择的宏。但是我反复收到错误 'Compile error. Argument is not optional.' 我知道我需要在调用宏后添加参数但是我输入的任何内容都会导致 'Object required' 或 'expected )'
此代码在我的工作表中。 'Case "Fifteen": Macro1' 行是有错误的行。
Private Sub Worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("P4")) Is Nothing Then
Select Case Range("P4")
Case "Fifteen": Macro1
End Select
End If
End Sub
以下代码位于模块中 - 它用于将值从一个工作表中的单元格复制到另一个。
Sub Macro1(ByVal Target As Range)
Dim r1 As Range, r2 As Range
Set r1 = Sheets("Calculator").Range("C18:D19")
Set r2 = Sheets("Answers").Range("I14:J15")
If Intersect(Target, r1) Is Nothing Then Exit Sub
Application.EnableEvents = False
r2.Value = r1.Value
Application.EnableEvents = True
End Sub
知道 Argument 参数应该是什么吗?我认为它会沿着 Case "Fifteen":Macro1("C18:D19") 或 Case "Fifteen":Macro1(r1) 的路线,但没有运气。
模块中的代码单独运行时可以正常工作,所以我认为它不会有任何问题。
非常感谢任何帮助。我环顾四周,找不到答案。
感谢您的帮助。通过删除 intersect
行,它现在可以按预期工作。最终代码如下。
Private Sub Worksheet_change(ByVal Target As Range)
Select Case Range("P4")
Case "Fifteen": Macro1
End Select
End If
End Sub
Sub Macro1()
Dim r1 As Range, r2 As Range
Set r1 = Sheets("Calculator").Range("C18:D19")
Set r2 = Sheets("Answers").Range("I14:J15")
Application.EnableEvents = False
r2.Value = r1.Value
Application.EnableEvents = True
End Sub
我正在 VBA 上创建一个附加到 excel 中的数据验证列表的宏。当从列表中选择某个选项时,我希望它 运行 一个分配给该选择的宏。但是我反复收到错误 'Compile error. Argument is not optional.' 我知道我需要在调用宏后添加参数但是我输入的任何内容都会导致 'Object required' 或 'expected )'
此代码在我的工作表中。 'Case "Fifteen": Macro1' 行是有错误的行。
Private Sub Worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("P4")) Is Nothing Then
Select Case Range("P4")
Case "Fifteen": Macro1
End Select
End If
End Sub
以下代码位于模块中 - 它用于将值从一个工作表中的单元格复制到另一个。
Sub Macro1(ByVal Target As Range)
Dim r1 As Range, r2 As Range
Set r1 = Sheets("Calculator").Range("C18:D19")
Set r2 = Sheets("Answers").Range("I14:J15")
If Intersect(Target, r1) Is Nothing Then Exit Sub
Application.EnableEvents = False
r2.Value = r1.Value
Application.EnableEvents = True
End Sub
知道 Argument 参数应该是什么吗?我认为它会沿着 Case "Fifteen":Macro1("C18:D19") 或 Case "Fifteen":Macro1(r1) 的路线,但没有运气。
模块中的代码单独运行时可以正常工作,所以我认为它不会有任何问题。
非常感谢任何帮助。我环顾四周,找不到答案。
感谢您的帮助。通过删除 intersect
行,它现在可以按预期工作。最终代码如下。
Private Sub Worksheet_change(ByVal Target As Range)
Select Case Range("P4")
Case "Fifteen": Macro1
End Select
End If
End Sub
Sub Macro1()
Dim r1 As Range, r2 As Range
Set r1 = Sheets("Calculator").Range("C18:D19")
Set r2 = Sheets("Answers").Range("I14:J15")
Application.EnableEvents = False
r2.Value = r1.Value
Application.EnableEvents = True
End Sub