我有大约10个用户表单。每个名称都有一个字母后缀( ChoiceForm ) (ChoiceFormA、ChoiceFormB等)。我想设计一个子,它将输出每个控件的属性& UF本身到一个工作表中。首先,我需要确定如何遍历UF。
下面的代码看起来应该可以工作,但是当它命中For每一个循环时,它会忽略它,因为VBA.Userforms集合中没有成员(我假设)。我考虑过的一件事是,我不能在UF模块之外这样做,我希望情况不是这样。
谢谢。
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发布于 2022-03-13 03:01:08
这是一个例子,说明如何循环遍历每个窗体,然后遍历该窗体中的每个控件.
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项目的访问.

你应该能够根据你的项目需要来调整它。
https://stackoverflow.com/questions/71453501
复制相似问题