【问题标题】:How to Loop Through ActiveX Checkboxes on VBA如何循环通过 VBA 上的 ActiveX 复选框
【发布时间】:2021-07-25 13:00:23
【问题描述】:

我实际上是在尝试制作一个用户表单来控制工作簿表中的每个复选框(它主要是显示公司特定时期数据的图表),因为每个图表都有相同的复选框(ActiveX 的)与他们的名字相同,我想制作一个始终处于活动状态的用户表单,这样客户就可以选择他将使用哪些用户表单,它只会循环遍历其他表单而不会出现问题。

但问题首先是我的代码:

Dim ws As Worksheet

If Me.CheckBox1.Value = True Then
    For Each ws In ThisWorkbook.Worksheets
        ws.OLEObjects("chkAno1").Object.Value = 1
    Next ws

ElseIf Me.CheckBox1.Value = False Then
    For Each ws In ThisWorkbook.Worksheets
        ws.OLEObjects("chkAno1").Object.Value = 0
    Next ws

End If

我只用一个复选框来测试它(我想要影响的每张表中都有一个“chkAno1”)但是每次我运行代码并单击复选框时,我都会得到“错误 1004:方法”OLEObjects " from object "_Worksheet" Failed",奇怪的是如果我用 "ActiveSheet" 更改 "ws" 代码可以正常工作,但只会更新当前打开的工作表。

所以我现在很茫然。

【问题讨论】:

标签: excel vba loops checkbox activex


【解决方案1】:

感谢您的帮助。我发现了问题,有些工作表上没有任何复选框,所以代码一直给我错误。

我找到的解决方案是将On Error Resume Next 放在开头,它就像一个魅力! (实际上我也需要把它放在图表上)

但最后我最终修改了代码以使用ws.ChartObjects("grafico").Chart.FullSeriesCollection(1).IsFiltered = True 而不是ws.OLEObjects("chkAno1").Object.Value = 1 直接影响图表,因为最后更新每个复选框的过程以及之后所有图表实际上在某些方面真的很慢较旧的计算机和直接更新 Graph 的速度显着提高。

感谢所有评论的人,我希望我找到的解决方案可以帮助其他人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2020-12-02
    • 2015-09-05
    • 2015-10-29
    相关资源
    最近更新 更多