【发布时间】:2019-07-18 19:22:42
【问题描述】:
我正在尝试从 Excel 工作表中的用户输入填充数组。目前,我的工作表只列出了两个目标,但我希望用户能够根据需要定义无限数量的目标。 我的代码:
停止调试,我在 Targets (i, 1) 行上得到一个超出范围的下标。 while 在特定列中查找值并向下行,直到它检测到空白然后停止。一旦检测到要放入我的数组中,我不知道如何获取值。
我尝试在循环内和 while 循环内移动目标的 ReDim。
Dim max_I As Byte, tgt_N As Double
Dim Targets()
Dim RadarRangeDenomenator()
Dim RelativePower()
Dim PowerAmplitude()
Call Activ8_Sheet("Signal")
tgt_N = 0
max_I = 0
While Cells(max_I + 8, 3).Value <> ""
tgt_N = tgt_N + 1
max_I = max_I + 1
For i = 1 To max_I
Targets(i, 1) = Cells(max_I + 8, 3)
Next i
Stop
Wend
ReDim Targets(tgt_N)
MsgBox (Targets(1, 1))
我想要的是在 Excel 工作表上列出值的一维数组(多行但只有 1 列)。
【问题讨论】:
-
为了记录,您对 ".. 的评论有一个单维数组 ..." 和以下语句 "(很多行但只有1 列)” 自相矛盾。具有 1 列的数组仍然是二维数组 - 第 2 维是 1 到 1。
-
另外,您在该行收到的 Subscript out of Range 错误的原因是您没有对数组进行预维度化.这通常在静态的基础上完成:
Dim myArray(1 To 10, 1 To 1)或可以使用ReDim语句动态完成:Dim myArray()ReDim myArray(1 To LastRow, 1 To 1)。