将二维数组的一部分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)