У меня есть кнопка управления, когда я нажимаю на нее, она отображает индивидуальную форму пользователя, содержащую выпадающий список с элементами, взятыми из ячеек листа. пользователь должен нажать команду, затем появится пользовательская форма, ему нужно выбрать один элемент из списка, элемент - имя листа в другой книге, соответственно, он будет импортировать данные с этого листа. однако я столкнулся с проблемой: , когда появляется пользовательская форма, я нажимаю на поле со списком, которое не показывает никаких элементов, тогда, если я нажму один раз на пользовательской форме, то снова проверьте со списком, он правильно показывает элементы, если я снова нажму на пользовательскую форму, элементы combobox будут украшены! если я выбрал элемент, он отлично работает. Так что я хочу достичь: я хочу, чтобы combobox показывал элементы напрямую, не нажимая на пользовательскую форму. код заключается в следующем:Элементы combobox Vba UserForm не отображаются до тех пор, пока я не нажму на пользовательскую форму
В UserForm:
Private Sub UserForm_Click()
Dim mlf As Workbook
Dim adad As Long
Dim mada As String
Dim lastRow As Long
Set mlf = ActiveWorkbooklastRow = Sheet3.Cells(Rows.Count, 1).End(xlUp).Row
For adad = 1 To lastRow
mada = Sheet3.Cells(adad, 1)
With ComboBox1
.AddItem mada
End With
Next
End Sub
Private Sub cmdOkay_Click()
'Verify that an item was selected
If Me.ComboBox1.BoundValue = vbNullString Then
MsgBox "You did not choose an item!", vbOKOnly
Exit Sub
Else
MsgBox "You have selected " & Me.ComboBox1.BoundValue, vbOKOnly
Sheet3.Cells(1, 2) = Me.ComboBox1.BoundValue
End If
Unload Me
End Sub
В CommandButton
Dim testbook As Workbook
Set testbook = ThisWorkbook
Set database = Workbooks.Open(Filename:=myPath & myFile)
testbook.Worksheets("Sheet4").Range("A1:B5").Clear
With UserForm1
.Caption = "Settings of the test"
End With
Dim lo As Integer
For lo = 1 To database.Sheets.Count
testbook.Sheets("Sheet4").Cells(lo, 1) = database.Worksheets(lo).Name
Next
UserForm1.Show
Я, конечно :) спасибо, это решает проблему –
вы также можете использовать 'UserForm_Activate()', разница с Initialize является: Init срабатывает только один раз, так что если вы скрываете форму он не сбросит форма и данные; с другой стороны, активировать хиты каждый раз, когда отображается форма, поэтому каждый раз она будет сброшена. Конечно, это не повлияет на работу формы, если вы закроете ее с помощью 'unload Form' (или Me), но это будет, если вы« Form.hide ». –
PS: как вы написали свой код, вам нужно сначала «combobox1.clear» перед тем, как заполнить его 'userform_activate' –