使用VBA在Excel ComboBox中动态设置ListFillRange

fir*_*ger 3 excel vba excel-vba

我尝试过这样的事情:

 cmbMyBox.ListFillRange = "E2"
Run Code Online (Sandbox Code Playgroud)

但组合框似乎并不适合居住.

小智 12

首先,要尝试从VBA设置listfillrange,您需要包含'='符号,如下所示:

combobox.ListFillRange = "=E3:E13"
Run Code Online (Sandbox Code Playgroud)

而不是combobox.ListFillRange = "E3:E13",这是行不通的.

您可以拥有动态命名范围,例如:

listItems: "=Sheet1!$A$1:INDEX(Sheet1!$A:$A;COUNTA(Sheet1!$A:$A))"
Run Code Online (Sandbox Code Playgroud)

使用VBA像这样设置ListFillRange:combobox.ListFillRange = "=listItems" 再次,使用'='标志!!

此动态范围listItems动态增长/收缩,具体取决于A列中的值.

我知道我回答的确很晚,但我注意到很多人认为命名范围总是必须修复,而它们也可以是动态的......

你怎么做到这一点?在Excel 2007及更高版本中,您转到功能区选项卡"Formulas"并单击"名称管理器"按钮而不是选择单元格并在左上方框中为其指定名称,您可以在此处管理所有已定义的命名范围.创建一个新的,并给它值(不带引号):

"=Sheet1!$A$1:INDEX(Sheet1!$A:$A;COUNTA(Sheet1!$A:$A))".

你去......

PS当您让动态命名范围更改时,您应该使用VBA重新设置.ListFillRange,以便组合框将刷新其列表项.