【问题标题】:Populate a 2-D array with data from a table in VBA使用 VBA 中的表中的数据填充二维数组
【发布时间】:2018-06-26 07:02:40
【问题描述】:

我正在尝试将 html 表中的数据写入我在 VBA 中创建的二维数组“htmlArr”。我可以让它使用 2 个 for 循环填充第一行数据(所有正确的列条目都经过),但是代码在此之后发生故障,并且不会移动到下一个 j 以将数据写入第二行。

这是填充数组的 VBA 代码部分:

eleColtr.Length = 11 & numberofColumns.length = 23

ReDim htmlArr(0 To (eleColtr.Length - 1), 0 To (numberofColumns.Length - 1)) 'set array dimensions 11 rows by 23 columns
    For j = LBound(htmlArr, 1) To UBound(htmlArr, 1)  'loop through rows dim 0 - 10 (html table indexes)
            Set ObjTr = oHTML.getElementsByTagName("tr")(j)
            For k = LBound(htmlArr, 2) To UBound(htmlArr, 2) 'loop over cols 0 - 22 (html table indexes)

            htmlArr(j, k) = ObjTr.getElementsByTagName("td")(k).innerText

            Next k
    Next j

谁能看到我哪里出了问题以及如何解决这个问题?

我试图添加一个计数器,但我不确定它会去哪里

感谢您的帮助

【问题讨论】:

  • 你检查LBound(htmlArr, 1)UBound(htmlArr, 1)的值了吗?
  • 获取j-loop 内部但k-loop 外部的元素:set objTr = oHTML.getElementsByTagName("tr")(j)。然后在此行之后放置一个断点并将objTr 添加到监视列表中。还要检查eleColtr.LengthnumberofColumns.Length 的值。理想情况下,编辑您的问题并告诉我们它们是什么。
  • 嗨,我添加了 objTr 变量,发现它有 22 项而不是 23 项,因此列数不匹配导致错误!
  • 现在全部排序 - 感谢您的帮助
  • @Izzy888 不客气。您可能想为您的问题添加一个答案,然后接受它,一旦可以。

标签: html arrays vba excel html-table


【解决方案1】:

我使用的数组维度的长度与导致数组未填充的表不匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多