Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows XP全般 : Excel 2003)
フォームの自動作成
投稿日時: 19/03/26 16:06:31
投稿者: 富山の初心者

お願いします。
 
以下のようにセルに値が入っていたとする。

  A                B              C     D       E       F       G 
1 フォーム名						
2 TestForm						
3 						
4 コントロール種類 コントロール名 Top	Left	Height	Width	Caption
5 CommandButton	   cmd1	          12	12	36	120	ボタン1
6 TextBox	   txt1	          60	12	36	120	テキスト1
                        
 
フォーム作成マクロ(今から作成)の実行で                        
ユーザーフォームに上記内容のフォームを自動で作成したいと思っております。                        
すなわち、ユーザーフォームの挿入と                        
コントロールの挿入をマクロでしたいです。                        
ヒントになるホームページとか、ヒントになるアドバイスをいただけませんか?                        
 
よろしく、お願いします。

回答
投稿日時: 19/03/26 16:19:11
投稿者: WinArrow
投稿者のウェブサイトに移動

ユーザーフォームのデザイン/レイアウトは、
ゴリゴリやれば作成可能と思いますが、
 
作成したコントロール毎の処理(プログラム)を自動作成することは、
かなり難しいと思います。
プログラムでプログラムを作成することは
ハッカーとかウィルス作成に匹敵するような行為と思います。
 
費用VS効果を考えたら、あまり得策ではないと考えます。

回答
投稿日時: 19/03/26 16:39:02
投稿者: ピンク

コントロールの配置だけなら
Sub Test()
    Dim Frm As VBIDE.VBComponent 'Microsoft Visual Basic For Applications Extensibility を参照設定
    Dim objCmm As Object, objText As Object
    'ユーザフォームを追加
    Set Frm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
    With Frm
        Set objCmm = .Designer.Controls.Add("Forms.CommandButton.1")
        Set objText = .Designer.Controls.Add("Forms.TextBox.1")
        With objCmm
            .Name = "cmd1"
            .Top = 12
            .Left = 12
            .Height = 36
            .Width = 120
            .Object.Caption = "ボタン1"
        End With
        With objText
            .Name = "txt1"
            .Top = 60
            .Left = 12
            .Height = 36
            .Width = 120
        End With
    End With
End Sub

投稿日時: 19/03/26 22:28:05
投稿者: 富山の初心者

WinArrow 様
ピンク 様 ありがとうございます。
 
ピンク 様の「コントロールの配置だけなら」を参考にさせていただきます。
 
WinArrow 様の 「プログラムでプログラムを作成することは」は、
全く考えておりません。
 
今回の意図は、ほぼ同一のコントロールで、
top/leftのみが異なるものを大量に配置したくなり、
質問にいたりました。
 
ありがとうございました。
 
解決とさせていただきます。