【问题标题】:How to define Array of checkboxes in VBA如何在 VBA 中定义复选框数组
【发布时间】:2017-08-25 20:12:38
【问题描述】:

我知道之前有人问过类似的问题,例如 thisthis 但我在初始化复选框数组对象时遇到问题(我的 VBA 很生锈)。

我有以下代码:

Dim chkAdQ(4) As Checkbox

Set chkAdQ(0) = chkAdQ1
Set chkAdQ(1) = chkAdQ2
Set chkAdQ(2) = chkAdQ3
Set chkAdQ(3) = chkAdQ4

其中 chkAdQ1、chkAdQ2 等是表单上的 ActiveX 复选框。在调试时,我可以看到 chkAdQ(4) 在声明本身上提示“无”,因此赋值给出了类型不匹配异常。

我也尝试将 chkAdQ(4) 声明为对象,但无济于事。有什么想法吗?

【问题讨论】:

  • 你还没有设置 chkAdQ(4) ,所以这没什么。

标签: vba excel checkbox


【解决方案1】:

您可以通过一个简单的循环很好地在工作表上添加所有复选框

Sub AddCheckBoxesToArray()
    Dim chkAdQ As Variant
    Dim cb

    i = 0
    ReDim chkAdQ(i)
    For Each cb In Sheet2.OLEObjects
        If TypeName(cb.Object) = "CheckBox" Then
            If i > 0 Then ReDim Preserve chkAdQ(0 To i)
            Set chkAdQ(i) = cb
            i = i + 1
        End If
    Next cb

    For Each cb In chkAdQ
        Debug.Print cb.Name
    Next cb
End Sub

使用时去掉第二个循环。这只是为了证明它们都被添加到了立即窗口中

【讨论】:

    【解决方案2】:

    试试这个

    Dim chkAdQ(0 To 3) As Variant
    
    Set chkAdQ(0) = chkAdQ1
    Set chkAdQ(1) = chkAdQ2
    Set chkAdQ(2) = chkAdQ3
    Set chkAdQ(3) = chkAdQ4
    

    【讨论】:

    • 在我不得不尝试的所有事情中,我错过了 Variant。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2013-05-29
    • 2023-03-05
    相关资源
    最近更新 更多