Excel VBA 中的错误 449

Excel VBA 中的错误 449

我得到了以下代码

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 是发生改变的单元格逻辑或丢弃消息框选项。

相关内容