无法使用.rowsource{vba excel}填充组合框
我是VBA excel的新手,在这里尝试用工作表中的数据填充用户表单中的组合框。我定义了address&使用了.rowsource属性,在该属性中,代码不会出现任何错误,但组合框中不会填充任何内容。任何帮助都将不胜感激 下面是代码- 私有子empSearchdb_Click() 新修改的代码-无法使用.rowsource{vba excel}填充组合框,vba,excel,combobox,userform,Vba,Excel,Combobox,Userform,我是VBA excel的新手,在这里尝试用工作表中的数据填充用户表单中的组合框。我定义了address&使用了.rowsource属性,在该属性中,代码不会出现任何错误,但组合框中不会填充任何内容。任何帮助都将不胜感激 下面是代码- 私有子empSearchdb_Click() 新修改的代码- Dim cell As Range Dim emptyRow As Long Dim rng As Range Dim ws1 As Worksheet Dim empSearchKeyword As S
Dim cell As Range
Dim emptyRow As Long
Dim rng As Range
Dim ws1 As Worksheet
Dim empSearchKeyword As String
'Stop screen flickering
Application.ScreenUpdating = False
'setting worksheet
Set ws1 = ActiveWorkbook.Sheets("EmployeeDetails")
'find last empty row
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 2
'from $A$1 to $J$lastrow-1
Set rng = ws1.Range("$A$1", ws1.Cells(emptyRow - 1, 10))
Set rng = ws1.Range("$A$1", "$J$10")
'With your listbox do the following
If Me.empSearchL.ListIndex = -1 Then
With Me.empDetails
'If nothing is selected, add a row source
.ColumnCount = 10 'Otherwise you will only get 1 column
.RowSource = rng.Address
End With
End if
Application.ScreenUpdating = True
编辑:我已按答案删除,因为我没有正确理解问题。在代码结束后,您是否确实有
应用程序。ScreenUpdate=True
?如果@Noceo-Yep我在末尾有Application.ScreenUpdating=True
,至少应该显示到结束。很抱歉代码不完整,虽然我还有两个if条件用于列表索引,但我只关心list Index=-1
。所以这个代码就可以了,如果
缺失,只需一个结束。我需要一个名为empDetails
的组合框,empsearch
是我选择标准的列表框。因此,简而言之,如果在empSearchL
中选择了nothings,并且用户单击了Search,那么它应该在组合框中显示所有内容。我尝试了上面的代码,但仍然显示空的组合框。我在下面添加了修改过的代码。对不起,我以为是列表框,我错了。可以向控件添加前缀。使用MS标准,即cboEmpDetails
和lstEmpSearch
。因此,如果列表框中未选择任何内容,是否希望组合框(下拉)显示所有100个项目?太多了。如果在列表框中选择了什么,那么在组合框中应该显示什么呢?谢谢,我将使用MS编码标准。就listbox而言,是的,我想要所有的数据。如果选择了列表项(条件),那么用户需要输入值来搜索,在那里我只能使用combobox的.value
属性手动获取一行。(例如,我可以通过ID或姓名进行搜索)。因此,如果我能够计算出.listbox=-1
,那么我们可以将其用于其他条件。但是您建议的新更新的代码在combobox中也没有给出任何结果。我已经在上面更新了这个问题。
Dim cell As Range
Dim emptyRow As Long
Dim rng As Range
Dim ws1 As Worksheet
Dim empSearchKeyword As String
'Stop screen flickering
Application.ScreenUpdating = False
'setting worksheet
Set ws1 = ActiveWorkbook.Sheets("EmployeeDetails")
'find last empty row
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 2
'from $A$1 to $J$lastrow-1
Set rng = ws1.Range("$A$1", ws1.Cells(emptyRow - 1, 10))
Set rng = ws1.Range("$A$1", "$J$10")
'With your listbox do the following
If Me.empSearchL.ListIndex = -1 Then
With Me.empDetails
'If nothing is selected, add a row source
.ColumnCount = 10 'Otherwise you will only get 1 column
.RowSource = rng.Address
End With
End if
Application.ScreenUpdating = True