我得到了以下代码
Option Explicit
Private Sub change(ByVal Target As Range)
Dim a As Integer
Dim z As Integer
Dim q As Integer
z=0
q=0
If Target.Address = "$F$2" Then
z = z + 1
Else
q = 0
End If
If z = 1 Then
ActiveSheet.PrintOut preview:=True
Else
If q = 0 Then
a = MsgBox("?????", vbYesNo)
If a = vbNo Then
Cancel = True
Else ActiveSheet.PrintOut preview:=True
End If
End If
End If
End Sub
在模块中,我为它做了一个按钮,当我按下它运行时,我得到了这个
我该怎么做才能纠正它?
答案1
看起来您已尝试将 Worksheet_Change 事件宏修改为公共子过程以供按钮使用。
Worksheet_Change 有一个参数,目标表示触发工作表更改事件的一个或多个单元格的范围对象。此参数有以使程序以其当前形式工作,并且当用作原始事件宏时,它总是能正常工作。
当你为按钮分配类似的过程时,你并没有提供参数;也就是说,没有目标范围对象被传递给过程,因此出现错误参数不是可选的。
你不能简单地删除目标参数,以便稍后在代码中引用它;例如If Target.Address = "$F$2" Then
,有一个消息框依赖于目标结果。要将代码修改为可工作状态,你必须决定要用什么条件来代替F2 是发生改变的单元格逻辑或丢弃消息框选项。