3

我在 Excel 中有一个用作计算器的用户表单。

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

在 VBA 编辑器中,选择 ComboBox1,在属性中,在 Rowsourse 下我有:Sheet1!a4:a5

在 Sheet1 中,A4 = 奥克兰,A5 = 基督城

这很好,当我运行用户窗体时,有一个带有两个选项(奥克兰或基督城)的下拉箭头。

但是我的问题是,当您打开此工作簿时,我有一个 VBA 命令将其隐藏在用户视线之外,只留下他们需要使用的用户窗体。

问题是,如果您打开了另一个工作簿,则打开此计算器工作簿(它会自动隐藏自身)。然后组合框列表由 Sheet1!a4:a5 在另一个已经打开的工作簿上填充,而不是实际包含用户窗体来自的“Auckland”和“Christchurch”的工作簿。

我尝试通过将以下内容放入属性的行源框中,使组合框的行源更加具体:[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

但是,当它打开并运行这两个代码时,组合框现在是空的并且没有列表。

我认为最简单的解决方案是以某种方式将完整路径(包括工作簿名称)放入属性下的行源框中。但是我一定错过了一些东西,因为它给我带来了那个错误?

所有帮助将不胜感激。

谢谢

4

3 回答 3

3

您在完整路径行源中丢失'
它应该是这样的:

Me.ComboBox1.RowSource = "'[book1.xlsm]Sheet1'!$A$4:$A$5"

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

于 2014-05-16T03:28:31.350 回答
2

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

于 2013-08-01T09:31:42.203 回答
0

您可以尝试在用户窗体上添加此代码:

Private Sub UserForm_Initialize()
ComboBox1.list = Array("Auckland","Christchurch")
End Sub

然后将 Combobox 属性“MatchEntry”设置为“1”。

于 2016-07-26T10:59:41.297 回答