range.cells.count = 1 vba 时的组合框列表
combobox list when range.cells.count = 1 vba
当范围只有一个单元格时,我很难从范围中填充组合框。
我有以下代码:
Private Sub cboEquip_Change()
Dim SourceData As Variant
Dim col As Variant
Dim rng As Range
Set ws = Sheets("Details")
On Error Resume Next
'Matches text from cboEquip to appropriate column in Details sheet
col = WorksheetFunction.Match(Me.cboEquip.Value, ws.Range("1:1"), 0)
'Sets number of items in list
lr = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
'Chooses correct range
Set rng = Sheets("Details").Range(Sheets("Details").Cells(2, col), Sheets("Details").Cells(lr, col))
'Changes cboUnit based on changes from cboEquip
SourceData = rng.Value
With Me.cboUnit
.Clear
.List = SourceData
.ListIndex = 0
End With
End Sub
代码按设计工作,当范围 cell.count > 1 时,根据来自另一个组合框的输入填充组合框列表,但是当它从中拉出的范围是单个单元格时,它不会填写清单。
我尝试用一行抵消范围来解决这个问题,但是对于当前单元格计数大于 1 的所有范围,空白单元格是一个选项。
有没有办法从仅是单个单元格的范围填充组合框?
我认为,由于 SourceData 不是只有一个值的数组,因此您需要对其进行测试。试试这个:
With Me.cboUnit
.Clear
If IsArray(sourceData) Then
.List = sourceData
Else
.AddItem sourceData
End If
.ListIndex = 0
End With
当范围只有一个单元格时,我很难从范围中填充组合框。
我有以下代码:
Private Sub cboEquip_Change()
Dim SourceData As Variant
Dim col As Variant
Dim rng As Range
Set ws = Sheets("Details")
On Error Resume Next
'Matches text from cboEquip to appropriate column in Details sheet
col = WorksheetFunction.Match(Me.cboEquip.Value, ws.Range("1:1"), 0)
'Sets number of items in list
lr = ws.Cells(ws.Rows.Count, col).End(xlUp).Row
'Chooses correct range
Set rng = Sheets("Details").Range(Sheets("Details").Cells(2, col), Sheets("Details").Cells(lr, col))
'Changes cboUnit based on changes from cboEquip
SourceData = rng.Value
With Me.cboUnit
.Clear
.List = SourceData
.ListIndex = 0
End With
End Sub
代码按设计工作,当范围 cell.count > 1 时,根据来自另一个组合框的输入填充组合框列表,但是当它从中拉出的范围是单个单元格时,它不会填写清单。
我尝试用一行抵消范围来解决这个问题,但是对于当前单元格计数大于 1 的所有范围,空白单元格是一个选项。
有没有办法从仅是单个单元格的范围填充组合框?
我认为,由于 SourceData 不是只有一个值的数组,因此您需要对其进行测试。试试这个:
With Me.cboUnit
.Clear
If IsArray(sourceData) Then
.List = sourceData
Else
.AddItem sourceData
End If
.ListIndex = 0
End With