组合框列表中的动态范围

时间:2016-03-03 05:23:53

标签: excel excel-vba vba

我使用两种方法在组合框行源中构建动态名称列表。在第一个实例中,我使用:

使用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.再次,它在(列表)范围已满之前工作正常。在这两种情况下,我只希望列出组合框中的项目(名称),因为它们会添加到这些范围中。 ??

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