复选框的VBA脚本不起作用

时间:2015-07-07 14:24:05

标签: excel vba checkbox

我在Excel 2013中遇到问题。昨天我通过右键单击工作表的选项卡(Alt-F11)将以下代码放入Excel中:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("D3:T42")) Is Nothing Then
Application.EnableEvents = False
If Target.Value = ChrW(&H2713) Then
    Target.ClearContents
    Cancel = True
Else
    Target.Value = ChrW(&H2713)
    Cancel = True
End If
End If
    Application.EnableEvents = True
End Sub

这段代码应该在双击后在定义的单元格中添加一个复选标记。虽然这段代码昨天工作正常,但它现在不再起作用了。我已经尝试了一切,但只是不让它工作。有任何想法吗 ?

PS我想使用这样的代码,因为带有许多表单复选框的工作表会使它非常慢(至少在我的情况下)

问候,Arno

1 个答案:

答案 0 :(得分:0)

一次测试中的某些错误可能会使EnableEvents永远保持虚假。

使用Application.EnableEvents = true运行单个子并再次测试。

如果错误,则不会抛出任何事件,没有点击,没有双击,没有任何效果。

我建议您添加On error goto语句,以避免出现此类问题:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error goto 1
    If Not Intersect(Target, Range("D3:T42")) Is Nothing Then
    Application.EnableEvents = False
        If Target.Value = ChrW(&H2713) Then
            Target.ClearContents
            Cancel = True
        Else
            Target.Value = ChrW(&H2713)
            Cancel = True
        End If
    End If

    on error goto 0
1   Application.EnableEvents = True
End Sub