返回列表 上一主題 發帖

VBA是否可以建立動態UserForm

本帖最後由 jackyq 於 2016-3-11 01:05 編輯

大大自己研究看看
http://stackoverflow.com/questions/10944064/change-individual-listbox-item-font-in-excel

TOP

回復 3# clio


    Dim TextBox As MSForms.TextBox
Set TextBox = UserForm1.Controls.Add("forms.TextBox.1")
    TextBox.Top = 0

Dim ListBox As MSForms.ListBox
Set ListBox = UserForm1.Controls.Add("forms.ListBox.1")
    ListBox.Top = 30
  
Dim Label As MSForms.Label
Set Label = UserForm1.Controls.Add("forms.Label.1")
    Label.Top = 120
    Label.BorderStyle = fmBorderStyleSingle
    Label.Caption = "13123"

TOP

本帖最後由 jackyq 於 2016-3-15 14:23 編輯

用動態的話
事件就麻煩了
還要多一堆 Class 或者用 hook
才會建議你可以的話 用 Listbox 就好了

TOP

' UserForm1 必須事先已經存在

Dim F As UserForm1
Dim TextBox As MSForms.TextBox
Dim ListBox As MSForms.ListBox

Set F = New UserForm1
F.Show 0
F.Caption = "Form 1"
Set TextBox = F.Controls.Add("forms.TextBox.1")
    TextBox.Top = 0

Set ListBox = F.Controls.Add("forms.ListBox.1")
    ListBox.Top = 30


Set F = New UserForm1
F.Show 0
F.Top = F.Top + 100
F.Left = F.Left + 100
F.Caption = "Form 2"
Set TextBox = F.Controls.Add("forms.TextBox.1")
    TextBox.Top = 0


Set ListBox = F.Controls.Add("forms.ListBox.1")
    ListBox.Top = 30

TOP

自動建立 UserForm
https://support.microsoft.com/en-us/kb/204330

TOP

建議大大 UserForm 不要用動態

Set FC = Application.VBE.ActiveVBProject.VBComponents.Add(3)
Set F = UserForms.Add(FC.Name)
    F.Show 0
            
Set TextBox = F.Controls.Add("forms.TextBox.1")
    TextBox.Top = 0
Set ListBox = F.Controls.Add("forms.ListBox.1")
    ListBox.Top = 30
   
MsgBox "Stop"
Application.VBE.ActiveVBProject.VBComponents.Remove FC

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題