首页 > 解决方案 > 如何重新调整/保留我的数组以防止运行时错误 9

问题描述

我创建了一个 API 来从 Wix 网站(未显示)获取数据,然后它替换字符串中的值,然后通过 text to column 函数将字符串拆分为列。然后它将范围存储在一个数组中,我已添加laArray到监视窗口,我可以看到 laArray(1 到 56) 的每个实例,但问题是我run time error 9, Subscript out of range在尝试遍历数组以获得每个数组值时遇到问题作为垂直列表而不是水平列表。

我最初确实尝试使用字符串操作而不是文本到列并替换,但需要快速修复,所以最终以这种方式进行。

JSON = Cells(1, 1)
lcReplace = Array("}", "{", "/", "\", """", ":", ";", "items", "[", "]", "_")

For Each A In lcReplace
  JSON = Replace(JSON, A, " ")
Next A

Cells(2, 1) = JSON
Cells(2, 1).Select
    Selection.TextToColumns Destination:=Range("A4"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False

g = Cells(4, 1).End(xlToRight).Column

Dim laArray As Variant
laArray = (Range(Cells(4, 1), Cells(4, g)).Value2)
laArray = Application.Transpose(Range(Cells(4, 1), Cells(4, g)))

For f = LBound(laArray) To UBound(laArray)
   Cells(f + 4, 3) = laArray(f)
Next f

概括:

尝试使单元格等于我的数组时出现运行时错误 9,从我读过的内容来看,我需要 Redim 保留数组,我在 f 循环之前和中尝试过,但它仍然返回运行时错误,我该如何防止这个?从我读过的内容来看,是否有替代尺寸标注的方法,它会使代码在多次标注尺寸时变得相当慢。

任何帮助,将不胜感激。

例子

标签: excelvba

解决方案


laArray是一个二维数组,可以使用 Watch 窗口确认。

例如,如果g为 10,则laArray大小为1 to 10, 1 to 1.

您需要使用当前方法指定第二个维度。

Cells(f + 4, 3) = laArray(f, 1)


推荐阅读