在ActiveX组合框的属性窗口中,我试图将一个命名范围放入“ ListFillRange”字段中。属性窗口允许我放入的仅有两件事是一个绝对范围:A2:A14
或一个链接到绝对范围的命名范围(例如我在屏幕快照中以绿色标记的三个命名范围:
屏幕快照中的所有其他命名范围,当我将它们放入“ ListFillRange”字段中并单击“ ENTER”时,该字段将自行删除并且不接受。
我需要的范围在上面的屏幕快照(“ rng_HelperNameList_clients”)中以黄色标记,该链接链接到以下公式:
=CLIENTS!$J$2:INDEX(tbl_clients[@Searchable],COUNTIF(tbl_clients[@Searchable],"?*"))
我也尝试在VBA中这样做:
Private Sub CmboBox_SearchClient_main_Change()
CmboBox_SearchClient_main.ListFillRange = "=rng_HelperNameList_clients"
CmboBox_SearchClient_main.DropDown
End Sub
但是,尽管我没有收到错误,但ComboBox并未填充公式应提供给它的相关数据。我知道该公式有效,因为该公式适用于工作表上的单元格。
如何将与公式链接的命名范围直接放入ComboBox属性窗口的“ ListFillRange”字段中,或者使VBA正常工作?
更新:
我弄清楚了如何欺骗ComboBox属性。我将命名范围更改为链接到随机的绝对范围($ A $ 1:$ A $ 14),然后允许我将命名范围放入“ ListFillRange”字段中。然后,我转到命名范围,并将链接更改为我的公式,并且属性窗口在“ ListFillRange”字段中仍然具有命名范围!现在唯一的问题是,即使工作表上具有相同公式的单元格也不会显示该公式的结果。但这是一个不同的问题,我想我会为此提出一个新问题。
答案 0 :(得分:0)
请参阅我的问题中的“我的更新”,以解决此问题。 我也有组合框可以工作。问题在于它不是具有数据的表的一部分,而是需要获取一些“带有数据的最后一行”代码,例如INDEX,LOOKUP,ROW等。我使用INDIRECT来获取最后一行数据。
这是我最后一个用于命名范围ListFilledRange的字符串:
=CLIENTS!$L$2:INDEX((INDIRECT("CLIENTS!$L$2"&COUNTA($L:$L))),COUNTIF(INDIRECT("CLIENTS!$L$2"&COUNTA($L:$L)),"?*"))