如何修复 VBA 中的 MS Access Form Combobox 错误

问题描述

我最初在表单中将我的组合框 cbSortOrder 定义为固定值列表。我现在尝试使用数组在 VBA 代码中设置它。我曾尝试使用变体和字符串数组,但认为我的问题与此无关,而是与组合框定义有关。

尝试在 With 语句中设置这些值时,出现对​​象不支持方法错误

我附上了我的组合框的实际错误属性的屏幕图。

Error

Combo box general properties

Data properties

解决方法

很遗憾,您不能在 Access 中使用集合作为行源。 Value List 的行源类型是指以逗号(或分号)分隔的文本(取决于 Windows 中的列表分隔符设置)。

如果您不想使用这样的值列表,请使用 Table/Query 的行源类型并指定表或查询名称。您也可以直接在此字段中插入 SELECT 语句。

这也意味着,您必须将此行源类型的条目存储在表中。您也可以使用本地表代替后端的表。

此外,ComboBox 没有 List 属性。请改用 RowSource 属性。在表单后面的代码中,您可以省略 Forms("formName") 部分。

With cbSortOrder
    .RowSourceType = "Table/Query"
    .RowSource = "SELECT Id,Description FROM tlkpSortOrder ORDER BY Description"
End With

With cbSortOrder
    .ColumnCount = 2    ' If you have and id and a text
    .ColumnWidths = "0" ' Hides the Id column
    .RowSourceType = "Value List"
    .RowSource = "1,Ascending,2,Descending,3,Undefined"
End With

另见:ComboBox.RowSourceType property (Access)