Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用.rowsource{vba excel}填充组合框_Vba_Excel_Combobox_Userform - Fatal编程技术网

无法使用.rowsource{vba excel}填充组合框

无法使用.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

我是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 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