Excel用户窗体组合框属性中的Rowsource框问题?

3

我在Excel中有一个用户窗体,它作为一个计算器工作。

在这个用户窗体中,我有两个组合框(1和2)

在VBA编辑器中,选择ComboBox1,在属性下面的行来源中,我有:Sheet1!A4:A5

在Sheet1中,A4 = 奥克兰,A5 = 克赖斯特彻奇

这很好,当我运行用户窗体时,会出现一个下拉箭头,其中包括两个选项(奥克兰或克赖斯特彻奇)。

然而,我的问题是,当你打开此工作簿时,我有一个VBA命令,将其隐藏在用户视线之外,只留下用户窗体供他们使用,这正是所期望的。

问题在于,如果您打开另一个工作簿,然后打开这个计算器工作簿(自动隐藏自身),那么组合框列表将由已经打开的其他工作簿上的Sheet1!A4:A5填充,而不是实际包含“奥克兰”和“克赖斯特彻奇”的工作簿。

我尝试通过在属性的行来源框中输入以下内容使组合框的行来源更加具体:[book1.xlsm]sheet1!a4:a5,但是出现“无效的属性值”错误消息。

我还尝试制作一个:

Private Sub Userform1_Initialize()

ComboBox1.Additem "Auckland"
ComboBox1.Additem "Christchurch"

End Sub

我也尝试了这个方法:

Private Sub Userform1_Initialize()

ComboBox1.RowSource = Workbooks("book1.xlsm").Sheets("Sheet1").Range("a4:a5").Value

End Sub

然而,使用这两个代码时,现在打开并运行后,组合框为空,没有列表。
我认为最简单的解决方法是在属性下的rowsource框中以某种方式放入完整路径(包括工作簿名称)。但是,我一定漏掉了什么,因为它对我来说出现了错误?
非常感谢任何帮助。
谢谢。
3个回答

3
你的完整路径数据源中缺少了'。应该是这样的:
Me.ComboBox1.RowSource = "'[book1.xlsm]Sheet1'!$A$4:$A$5"

我有类似的问题,可以在这里找到。


2

将下拉框的行来源属性设置为:SheetName!$Col$Row:$Col$Row,例如:Location!$A$1:$A$3


0
你可以尝试在用户窗体上添加以下代码:
Private Sub UserForm_Initialize() ComboBox1.list = Array("奥克兰","基督城") End Sub
然后将Combobox属性“MatchEntry”设置为“1”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接