我在Excel中,在那裏我需要動態創建組合框和列表框的形式。所以,這個想法是,每個列表框都鏈接到組合框。第一個是默認設置的,如果需要添加另一個組合+列表框,用戶可以按「添加」按鈕。因此,對於「添加」按鈕的代碼是以下幾點:添加OnChange事件VBA窗體控件
Private Sub AddCountry_Click()
aaa = "a"
Set comb = Controls.Add("Forms.Combobox.1", "CountryList" & Val(CountryLabel.Caption) + 1)
With comb
.Top = CountryList1.Top
.Width = CountryList1.Width
.Height = CountryList1.Height
.Left = (CountryList1.Width + 3) * Val(CountryLabel.Caption) + CountryList1.Left
.AddItem ("--Choose country--")
For i = 3 To 20
.AddItem Worksheets("Countries").Range("B" & i).Value
Next i
.Text = "--Choose country--"
End With
Set listb = Controls.Add("Forms.Listbox.1", "Countries" & Val(CountryLabel.Caption) + 1)
With listb
.Top = Countries1.Top
.Width = Countries1.Width
.Height = Countries1.Height
.Left = (Countries1.Width + 3) * Val(CountryLabel.Caption) + Countries1.Left
.ColumnCount = 2
.MultiSelect = 1
End With
CountryLabel.Caption = Val(CountryLabel.Caption) + 1
End Sub
的想法是,該組合框必須將名稱「CountryList」和一個數字,存儲在無形標籤(其中添加每次+1該按鈕被打包),所以它將是CountryList1,CountryList2等。列表框相同。
所以事情是,組合框是由和值(國名)的正確添加。但是我沒有得到,如何在它之後使用它們?的事情,我需要的是 - 當一個組合框被改變(用戶選擇不同的國家),列表框下面必須用一定的值(每個國家不同)。
我認爲,這個問題可能是爲組合/列表框中定義的名稱。那麼是否可以添加動態名稱(CountryList1,CountryList2等),然後以某種方式添加OnChange Events?提前致謝。
你需要有一個Class模塊,帶有'ListBox Events'和'ComboBox Events' –
看看這個問題:https://stackoverflow.com/questions/44409871/dynamic-created-user-form- with-2-dependent-combo-boxes/44410821#44410821 - 我在這裏解決了它。你已經說過,你需要額外的Class作爲@ShaiRado。你跟在我放置的cComboBox類之後。 –