VBA - 如何引用数组中的列名称?

问题描述 投票:0回答:1

首先,我有一个抓取函数,可以从网页中抓取表格,并将数据存储在二维数组中。

二维数组从第 0 行开始到页面上有多少行数据,从第 1 列开始到有多少列。

第 0 行仅包含所有列名称。

我的重新调暗:

ReDim Addresses(0 To lngTotalRecords, 1 To columns.Count) As String

然后,我将此 2D 数组存储到名为 dictClients 的脚本字典中,因为有多个客户端在网页上的同一个表中都有自己的条目。

因此,在我的字典中,我有类似以下内容来引用特定客户端的特定地址表:

dictClients(1)("Addresses")
dictClients(2)("Addresses")

我现在希望能够检查某一行中的单元格是否包含特定值,但是网页允许重新组织列,以便:

dictClients(1)("Addresses")(1,1) 'row 1 column 1

不会总是参考“街道号码”栏。例如,对于其他人来说,街道号码列可能如下:

dictClients(1)("Addresses")(1,3) ' row 1 column 3

鉴于这些细胞:

dictClients(1)("Addresses")(0,1) '(0,2) (0,3) etc.

全部引用列的名称,我找到特定命名列的位置的最佳方法是什么?

示例:我想获取第 1 行中邮政编码单元格的值,因此我需要查看

dictClients(1)("Addresses")(1, POSTALCODECOLUMN)
, 它并不总是位于网页上的同一位置。

我正在考虑使用以下功能:

Public Function column(strArr() As String, strColumnName As String)
Dim i As Long
For i = 1 To UBound(strArr, 2)
If strArr(0, i) = strColumnName Then column = i
Next
End Function

但是感觉这么称呼它很长:

strPostalCode = 
dictClients(1)("Addresses")(1,column(dictClients(1)("Addresses"), "Postal Code")

有更好更简单的方法吗?

谢谢。

vba excel ms-word
1个回答
0
投票

参考Dick KusleikaNaming array dims in Excel VBA中的答案:

如果我有一个三暗数组,我可能会创建一些自定义类模块来对我正在使用的对象进行建模。

如果您的第一个维度是 SchoolID,第二个维度是 ClassID,第三个维度是 StudentID,则使用如下所示的自定义类模块进行编码

Debug.Print Schools(10).Classes(3).Students(7).Name

更具可读性
Debug.Print arrLeeftijdenG5(10,3,7)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.