【问题标题】:VBA script for checkbox not working复选框的VBA脚本不起作用
【发布时间】:2015-07-07 22:30:09
【问题描述】:

我在 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 我想使用这样的代码,因为带有许多表单复选框的表单使其非常慢(至少在我的情况下)

问候,阿诺

【问题讨论】:

  • 添加错误处理,问题消失。一旦我删除了一个表单复选框,它似乎也与 Excel 进入设计模式有关。不,我不确定是什么做的,但最重要的是它现在可以工作了。

标签: excel vba checkbox


【解决方案1】:

一项测试中的一些错误可能使EnableEvents 永远保持错误。

Application.EnableEvents = true 运行一个sub 并再次测试它。

如果为假,则根本不会引发任何事件,没有点击,没有双击,什么都不会发生。

我建议你添加一个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多