将二维数组的一部分VBA放入combobox.List

在我的代码中,我通过SQL查询Variant queryResult中的二维数组。

queryResult = RetrieveRecordset("SELECT * FROM Materials;") 

数组然后看起来像:

在这里输入图像说明

如果我试图填满Combobox

 cbSTPScrewedMaterial.List = queryResult 

它只填充值1和塑料,但我希望从塑料到硬塑料 – > queryResult(1)上面的图像的值,但是当我键入

 cbSTPScrewedMaterial.List = queryResult(1) 

VBA呼应我运行时错误9:下标超出范围。 你有想法,我做错了什么,如何解决?

queryResult是一个2行5列的二维数组

将您的ComboBoxColumnCount属性设置为5

 cbSTPScrewedMaterial.ColumnCount = 5 

并让他们都显示

此外, queryResult(1)试图访问一维二维数组,从而导致错误

你可以使用一个函数从一个给定的二维数组中返回一维数组,如下所示

 Option Explicit Function GetQueryRow(arr As Variant, iRow As Long) As Variant Dim j As Long ReDim arrRow(LBound(arr, 2) To UBound(arr, 2)) As Variant For j = LBound(arr, 2) To UBound(arr, 2) arrRow(j) = arr(iRow, j) Next j GetQueryRow = arrRow End Function 

被用来像:

 Dim queryResult As Variant Dim queryRow As Variant queryResult = RetrieveRecordset("SELECT * FROM Materials;") queryRow = GetQueryRow(queryResult, 1) 

或“直接”

 Dim queryRow As Variant queryRow = GetQueryRow(RetrieveRecordset("SELECT * FROM Materials;"), 1) 

甚至“更直接”

 MsgBox GetQueryRow(RetrieveRecordset("SELECT * FROM Materials;"), 1)(1)