|
標準モジュール
Public AddUFM(1 To 3) As Variant
Sub fftest()
For i = 1 To 3
Set AddUFM(i) = VBA.UserForms.Add("UserForm" & i)
AddUFM(i).Show 0
Next
End Sub
各フォームモジュール
(エラーについては、手向きでエラートラップで逃げました。)
Private Sub CommandButton1_Click()
On Error Resume Next
Unload AddUFM(1)
End Sub
Private Sub CommandButton1_Click()
On Error Resume Next
Unload AddUFM(2)
End Sub
Private Sub CommandButton1_Click()
On Error Resume Next
Unload AddUFM(3)
End Sub
予断ですが、
Unload UserForm1
とかできないので注意。
Unload Me はできますが。
なんか、実際のUserForm1とは違うみたいな感じ、詳しくは説明できないけど....。
でもこんな感じにすると、各フォームにあるコントロールが取れます。
キャプションの無いものは、エラーになります。
それについてのエラー対応は入れてません。
(On Error Resume Nextで逃げたら良いと思います。)
他サイトで回答した物そのまんまだけど・・・。
Sub kame()
Dim VBC As Object
Range("A1").Value = "コントロール名"
Range("B1").Value = "コントロール種類"
Range("C1").Value = "キャプション "
With ThisWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 3 Then
G = G + 2
Cells(G, 1).Value = VBC.Name
Set AdUF = VBA.UserForms.Add(VBC.Name)
For Each FCN In AdUF.Controls
G = G + 1
Cells(G, 1).Value = FCN.Name
Cells(G, 2).Value = TypeName(FCN)
On Error Resume Next
Cells(G, 3).Value = FCN.Caption
On Error GoTo 0
Next
End If
Next
End With
Set AddUF = Nothing
End Sub
|
|