我使用两种方法在组合框行源中构建动态名称列表。在第一个实例中,我使用:
使用Sheet2
RateComboBox.RowSource ="'" &安培; .Name& "'!" &安培; .Range(" b9",。范围(" c33")。结束(xlUp))。地址
结束控制源设置为工作表上的单元格,绑定列为第1列,或者范围为b9:b33,其编号为1-25,列数为2,第二列列表为1(1- 25)因为他们被添加。它工作得很好,直到范围C9:C33已满,此时下拉列表显示一个虚假列表,其中包含现在从B1开始的项目(文本)。发生了什么事?
在第二个实例中,我使用:
Me.ComboBox1.RowSource =工作表("表格")。范围(" B8",范围(" B32")。结束(xlUp))。地址
在范围b8:B32中填充了名称,因为它们被添加到那里。控制源设置为工作表上的单元格,绑定列是列1.再次,它在(列表)范围已满之前工作正常。在这两种情况下,我只希望列出组合框中的项目(名称),因为它们会添加到这些范围中。 ??
答案 0 :(得分:0)
第一部分是这样的:
If Len(.Range("c33").Value) Then
RateComboBox.RowSource = "'" & .Name & "'!B9:C33"
Else
RateComboBox.RowSource = "'" & .Name & "'!" & .Range("b9", .Range("c33").End(xlUp)).Address
End If
对于第二部分,它同样好:
If Len(Range("B32").Value) Then
Me.ComboBox1.RowSource = Worksheets("Form").Range("B8:B32").Address
Else
Me.ComboBox1.RowSource = Worksheets("Form").Range("B8", Range("B32").End(xlUp)).Address
End If