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