返回列表 上一主題 發帖

VBA是否可以建立動態UserForm

VBA是否可以建立動態UserForm

請教各位高手,不知道VBA是否能建立動態的UserForm,及即時決定這個動態的視窗裡面的控制項數目的多少呢?
例如,程式在執行中,會抓取不同資料的人數,每一個資料區塊的人數不同,要產生視窗來作選擇那些人是還要保留在群組內,可能第一個群組內有4個成員,我需要一個動態視窗裡面有四個人名的CheckBox,讓我選擇保留下來的人,接下執行第二群組,裡面可能有八個人,那就要動態產品一個視窗,裡面有八個對應的CheckBox,由於程式會因抓到群組判斷裡面的人數再來產品相對應數量的CheckBox,這樣程式有辨法寫嗎?還請各位高手給予開解,感謝您們
clio

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

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

TOP

VBA是否可以建立動態UserForm及裡面一控制項及數目

請教各位高手,不知道VBA是否能建立動態的UserForm,及即時決定這個動態的視窗裡面的控制項數目的多少呢?
例如,程式執行中,我可以依據輸入的引數,決定要有幾個Check Box ,幾個Option Button,幾個List Box嗎?感謝您們
clio

TOP

感謝您…除了這個,能否有辨法能自動新增其它的控制項,如Option Button, Check box, Label... 等呢?
clio

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

感謝大大的告知,這樣我就會用了,另外請教一個問題,同理是不是也可以動態Create UserForm呢,可以用程式直接Create一個新的UserForm嗎?
clio

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,而裡面的Controls都可以自動加,唯有最上層的UserForm一定要先存在,無法自動建立最上層的UserForm,這樣說對吧
clio

TOP

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

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題