首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历所有的UserForms,然后每个控件得到顶部、左边等

循环遍历所有的UserForms,然后每个控件得到顶部、左边等
EN

Stack Overflow用户
提问于 2022-03-13 00:14:39
回答 1查看 56关注 0票数 0

我有大约10个用户表单。每个名称都有一个字母后缀( ChoiceForm ) (ChoiceFormA、ChoiceFormB等)。我想设计一个子,它将输出每个控件的属性& UF本身到一个工作表中。首先,我需要确定如何遍历UF。

下面的代码看起来应该可以工作,但是当它命中For每一个循环时,它会忽略它,因为VBA.Userforms集合中没有成员(我假设)。我考虑过的一件事是,我不能在UF模块之外这样做,我希望情况不是这样。

谢谢。

代码语言:javascript
复制
Sub UserFormStatistics()

    Dim ufForm As Object
    Dim ufCol As Collection
    
    Set ufCol = New Collection

    For Each ufForm In VBA.UserForms
    
        ufCol.Add (ufForm)
        
    Next

...

End Sub
EN

Stack Overflow用户

发布于 2022-03-13 03:01:08

这是一个例子,说明如何循环遍历每个窗体,然后遍历该窗体中的每个控件.

代码语言:javascript
复制
Public Sub GetUserFormControls()
    Dim objVBComponent As Object, objForm As UserForm, objCtrl As Control
    
    For Each objVBComponent In ThisWorkbook.VBProject.VBComponents
        If objVBComponent.Type = vbext_ct_MSForm Then
            Debug.Print objVBComponent.Name
            
            Set objForm = objVBComponent.Designer
            
            For Each objCtrl In objForm.Controls
                Debug.Print "... " & objCtrl.Name
            Next
        End If
    Next
End Sub

..。但是,要使此工作正常进行,您需要添加对可扩展性的引用。

..。并确保您已将其设置为信任对VBA项目的访问.

你应该能够根据你的项目需要来调整它。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71453501

复制
相关文章

相似问题

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