アプリ版:「スタンプのみでお礼する」機能のリリースについて

OSはXP、
Excelは2003 を使用しています。

色々なサイトを参考にさせて頂いて作ったブック内のコントロールを表に書き出すマクロが下記になるのですが、
ユーザーフォーム名を都度書き換えないといけないので、
同時にブック内のユーザーフォーム名を変数に格納する方法をどなたか教えて頂けないでしょうか?


Sub test()
Dim c As Control, r As Long
Dim d As Control

Load frmCustomerEntry  ’←☆
Worksheets("Sheet1").Activate
r = 3
Cells(1, 1) = ("コントロール数:" & frmCustomerEntry.Controls.Count)  ’←☆
Cells(2, 1).Value = "No"
Cells(2, 2).Value = "名前"
Cells(2, 3).Value = "種類"
Cells(2, 4).Value = "Caption"
Cells(2, 5).Value = "高さ"
Cells(2, 6).Value = "幅"
Cells(2, 7).Value = "Top"
Cells(2, 8).Value = "Left"
Cells(2, 9).Value = "Enabled"

For Each c In frmCustomerEntry.Controls
Cells(r, 1).Value = r - 2
Cells(r, 2).Value = c.Name
Cells(r, 3).Value = TypeName(c)
If TypeName(c) = "TextBox" Then 'captionの項目がないのでエラー回避
Cells(r, 4).Value = ""
ElseIf TypeName(c) = "ListBox" Then 'captionの項目がないのでエラー回避
Cells(r, 4).Value = ""
Else
Cells(r, 4).Value = c.Caption
End If
Cells(r, 5).Value = c.Height
Cells(r, 6).Value = c.Width
Cells(r, 7).Value = c.Top
Cells(r, 8).Value = c.Left
Cells(r, 9).Value = c.Enabled
r = r + 1
Next c

On Error GoTo 0

End Sub

*****************
ブックの中にユーザーフォームが10数個あります。
名前は任意に名前に変更しています。
全て「frm」が頭に付いていて以下はバラバラです。

説明不足なところもあるかもしれませんが、
どうかよろしくお願い致します。

A 回答 (1件)

こんばんは。



こんな風にすれば、出来ると思います。

Sub Test2()
 myForms_Test "frmCustomerEntry"
End Sub

Sub myForms_Test(sName As String) 'サブプロシージャにする
 Dim c As Control, r As Long
 Dim d As Control
 Dim UF As UserForm
 Set UF = UserForms.Add(sName)
 Load UserForms.Add(sName) 
 ThisWorkbook.Worksheets("Sheet1").Activate
  ・・・
    • good
    • 0
この回答へのお礼

WindFaller様

お礼が遅くなってしまって大変申し訳ありません。

記述して頂いた分で"frmCustomerEntry"だけは出来たのですが、
Book内の全てのユーザーフォーム名を取得してくるモノが欲しかったのです。

いまこの件で時間が取れなくなってしまったので、今回はこれにて一旦締め切らせて貰います。
すみません。
本当にありがとうございました。

お礼日時:2012/11/05 15:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!