【Excel/VBA】フォームコントロールを動的に生成→配列化して任意の数まで増やす方法
前回、Excelマクロでフォームコントロールを動的に生成してボタンイベントを発生させ方法について書きました。今回はコントロールを配列にして指定する数まで増やす方法について紹介します。
使用例を動画にしたのでご覧ください。あらかじめコントロールを設置しなくてもソースコードの中で生成・設置させたのが前回で、今回はそれを任意の数まで増やす方法です。
ソースコードはこちらです。
Dim myLabel() As MSForms.Label Dim myTextBox() As MSForms.TextBox Dim WithEvents myButton As MSForms.CommandButton Dim cnt As Long Private Sub UserForm_Initialize() cnt = 3 ReDim myLabel(3) ReDim myTextBox(3) For i = 0 To cnt Set myLabel(i) = Controls.Add("Forms.Label.1", "Label1") Set myTextBox(i) = Controls.Add("Forms.TextBox.1", "TextBox1") Call setStyle(myLabel(i), "ITEM" & (i), 13 + (i * 30), 10, 80, 30) Call setStyle(myTextBox(i), "", 10 + (i * 30), 100, 100, 30) Next Set myButton = Controls.Add("Forms.CommandButton.1", "CommandButton1") Call setStyle(myButton, "OK", 20 + (i * 30), 50, 100, 30) End Sub Private Sub myButton_Click() For i = 0 To cnt myTextBox(i).Text = "Text-" & (i) Next End Sub Private Sub setStyle(ctl, caption_, top_, left_, width_, height_) If TypeName(ctl) = "Label" Or TypeName(ctl) = "CommandButton" Then ctl.Caption = caption_ End If ctl.Top = top_ ctl.Left = left_ ctl.Width = width_ ctl.Height = height_ End Sub
スポンサーリンク