为VBA Combobox创建动态范围

时间:2018-06-06 06:29:12

标签: excel vba combobox

目前我在Excel VBA上使用组合框制作用户表单。 我的范围(A2:A61)名为" Division"其中包括公司的部门。 当我将这些数据添加到组合行源时,我将命名范围 - 分区。 但另一方面,分歧是动态的,我的意思是在这一年中创造了新的分歧。

问题是,当我创建新分区时,我可以在Cell A62上看到它的名字,但它不包括范围命名分区。结果我无法看到更新的组合框列表。

首先,我尝试选择范围为(A:A)并将其称为除法。在这种情况下,我可以看到更新的组合框列表,但范围内的空白单元格给我带来了其他问题。

其次我有这个代码,我试图将它用作组合框的行源但是出错了。

Set Division = Worksheets("DataCMB").Range(Range("E2"), Range("E1048576").End(xlUp))

请帮助找出问题。

3 个答案:

答案 0 :(得分:1)

您可以将A2:A61作为表插入并定义为" Division"名称。因此,当您添加新数据时,新数据将自动包含在" Division" name。

答案 1 :(得分:1)

你遇到的第一个问题,以及其他一些答案,就是你没有告诉你的第二和第三范围调用它们应该引用哪个表格,所以在下面的行中你可以看到我添加了工作表(“ DataCMB“)在他们面前。没有它,它将使用可能未设置为DataCMB的ActiveSheet,因此它将寻找不同工作表上的范围,而不是找到它。

另一个问题是你的.End(xlUp)是从一个单元格而不是一个范围工作,所以我已经改变它来查看整个列并向下看而不是向上看。因此,下面的行将为您提供该列中所有内容的整个范围,但不包括底部的任何空格,也不包括标题。

Set Division = Worksheets("DataCMB").Range(Worksheets("DataCMB").Range("E2"), Worksheets("DataCMB").Range("E2:E1048576").End(xlDown))

答案 2 :(得分:0)

Private Sub UserForm_Initialize()
  Division = Range(Range("A2"), Range("A2").End(xlDown)).Address
  Me.ComboBox1.RowSource = Division
End Sub