我试图遵循这种方法:
ComboBox1.ColumnCount = 2
Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer
Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"
Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"
ComboBox1.List = Films
但是 .List 属性在Access上不起作用。有什么想法吗?
答案 0 :(得分:3)
如June 7所述,请循环使用 ComboBox.AddItem()方法。出于您的目的,不得将ComboBox绑定到数据源:它的行源类型属性应设置为“值列表”。要将多列字符串添加到ComboBox行,请使用分号分隔列。例如:
ComboBox1.AddItem (Films(1, 1) & ";" & Films(1, 2))
或
Dim rowStr As String
rowStr = Films(1, 1) & ";" & Films(1, 2)
ComboBox1.AddItem (rowStr)
如果未指定行索引参数,则AddItem()会自动将行追加到ComboBox列表的末尾。有关更多信息,请参见Office Dev Center中的ComboBox.AddItem method。
答案 1 :(得分:2)
Access中的“表单”与Excel中“源”链接指向(https://www.excel-easy.com/vba/examples/multicolumn-combo-box.html)指向的“用户表单”中的元素/对象类型不同。
在Access中,最好从表或查询中将信息放入组合框(或列表框)中。您当然可以使用VBA对其进行编码,但是随后您可能会发现自己在其中随处添加/编辑大量VBA,因为在Access中,使用SQL和数据库引擎可以使所有操作变得更加自然。
这是一个较大的主题,但基本上,您可能应该为“电影”和“类别”使用不同的表
表1:
表2:
然后,您应该定义关系,因为数据库中的电影数量很可能与类别不同。假设我们要避免您不得不添加另一部电影的情况,那么请在电影列表中说“努力奋斗”。那可能属于“行动”类别。在数据库中,我们不想重复自己。只是我们将通过ID来按其值引用categoryID。
因此,完成后,您需要在Access中创建一个表单。创建一个可能会为您获取值的查询:
此后,您可以定义组合的来源,例如通过使用向导:
因此,您可以将每个列表分别维护在各自的表中。
这是创建的查询:
这种方式不需要VBA代码。
如果需要,也可以使用VBA创建或编辑查询,但这是另一回事。
希望这会有所帮助。