首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA如何访问工作表中的所有ActiveX控件,甚至组内的控件

VBA如何访问工作表中的所有ActiveX控件,甚至组内的控件
EN

Stack Overflow用户
提问于 2019-03-01 10:25:09
回答 2查看 2.2K关注 0票数 1

我想访问工作表中的所有ActiveX、CheckBoxes和OptionButtons。我试图为此做一个循环,但我的循环不能全部得到。

在检查了那些我无法得到的名字后,我发现它们是分组的(通过选择它们,右键单击,分组)。如何访问工作表中的所有控件,即使它们是分组的?

下面是我现在使用的代码,它允许我获得直接在工作表中的控件,没有分组,但它不允许我获得分组控件。

我正在阅读由用户填充的表单,一些用户已经对控件进行了分组,而另一些用户则没有,这就是为什么我无法预先知道控件是否分组,所以我需要访问我的代码读取的当前工作表中的所有控件。

代码语言:javascript
运行
复制
'ws is my worksheet

Dim obj As OLEObject

For Each obj In ws.OLEObjects
  Debug.Print obj.Name
Next obj
End If
EN

Stack Overflow用户

发布于 2019-03-01 10:52:54

要获取所有ActiveX对象,即使将其放入组中,也可以从使用Shapes-Collection而不是OLEObjects-Collection开始。

您可以检查形状的Type = msoOLEControlObject (12),以便只列出OLEObjects。组具有类型msoGroup (6),并具有一个集合GroupItems,该集合GroupItems包含该组中的所有形状。

您可以编写递归例程。请参阅下面的代码来编写所有OLEObjects。

Update:代码现在创建一个字典,其中包含所有CheckBoxex和RadioButtons以及它们的值。请注意,您需要对脚本库的引用。

代码语言:javascript
运行
复制
Sub ListAllObjects()
    Dim ListOfOptions as Dictionary
    Set ListOfOptions = New Dictionary

    ListObjects ActiveSheet.Shapes, ListOfOptions
End Sub


Sub ListObjects(objArr, ListOfOptions)
    Dim sh As Shape
    For Each sh In objArr
        If sh.Type = msoOLEControlObject Then
            ' Debug.Print sh.Name; sh.Type; TypeName(sh.OLEFormat.Object.Object)
            ' Found OptionButton or CheckBox: Add it to Dictionary.
            If TypeName(sh.OLEFormat.Object.Object) = "OptionButton" Or TypeName(sh.OLEFormat.Object.Object) = "CheckBox" Then
                ListOfOptions.Add sh.Name, sh.OLEFormat.Object.Object.Value
            End If
        End If

        If sh.Type = msoGroup Then
            ListObjects sh.GroupItems, ListOfOptions
        End If
    Next sh
End Sub

Ungroup

代码语言:javascript
运行
复制
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
    If sh.Type = msoGroup Then sh.Ungroup
Next sh
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54942622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档