面白そうだったので遊んでいたら、こんなものができました。
自分のセンスの無さを少々恨みながら・・
Sub TESTFORM()
Dim C As Control, MP As Page, MPC As Control
Dim r As Integer, n As Integer
Cells.ClearContents
Range("A1:F1") = Array("No", "コントロール種類", "コントロール名", "ページ・タブ名", "ページ内コントロール種類", "ページ内コントロール名")
r = 2: n = 1
For Each C In UserForm1.Controls
If WorksheetFunction.CountIf(Columns("F"), C.Name) = 0 Then
If TypeName(C) = "TabStrip" Then
Cells(r, 1) = n
Cells(r, 2) = TypeName(C)
Cells(r, 3) = C.Name
For i = 0 To C.Tabs.Count - 1
Cells(r, 4) = C.Tabs(i).Caption
r = r + 1
Next
ElseIf TypeName(C) = "MultiPage" Then
Cells(r, 1) = n
Cells(r, 2) = TypeName(C)
For Each MP In C.Pages
Cells(r, 3) = TypeName(MP)
Cells(r, 4) = MP.Name
For Each MPC In MP.Controls
Cells(r, 5) = TypeName(MPC)
Cells(r, 6) = MPC.Name
r = r + 1
Next
Next
Else
Cells(r, 1) = n
Cells(r, 2) = TypeName(C)
Cells(r, 3) = C.Name
r = r + 1
End If
n = n + 1
End If
Next
End Sub
肝は・・
・タブストリップは各タブに「埋め込まれるコントロール」は無いので、各タブの名前だけ
(恐らく、これ↑が
> マルチページ( MultiPage)だけでなく、タブストリップ( TabStrip)があれば
への回答になるかと。
「タブごとに」別のコントロールを埋め込む手段は無いような気がしますので。
連動して「表示・非表示」は可能ですが。)
・マルチページはページの名前と
「埋め込まれているコントロール」があるので、その種類と名前も持ってくる
・タブスプリットに重なっているモノも含め、単独(?)のコントロールは種類と名前
・居た堪れなくなってCountIfに逃げていることT-T
・にもかかわらず、設置されたコントロール順に見ていくので、
マルチページ内に「移動した」コントロールは2回出てきてしまい、
実は逃げ切れていないこと(T-T)
でしょうか。
お礼
うまくいきました。ありがとうございました。 ご教授いただいた記述をしっかりと勉強させていただきます。