从电子表格的不同部分填充VBA中的数组

时间:2014-07-16 14:02:27

标签: arrays excel vba excel-vba

我正在尝试根据电子表格中的不同位置填充数组的不同部分。

例如

Dim prices(50) as double

prices(0, 1, 2) = Range("i35", "i38")
prices(3,4,5,6,7,8) = Range("b7","b12")

我的维度错误数量错误,因为我假设您必须立即填充整个内容。还有另一种语法可以做得更好,还是只是VBA的限制?

每个循环可能是一个?但这并不是真的有用,因为有很多不同的范围。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

看起来你试图告诉VBA数组括号中的数字列表是一个接收多个项目的数组中的位置。

那不是它的本质。相反,您一次只能做一个。例如:

Dim prices(50) as double
' My range syntax might be wrong here. 
prices(0) = Range("i35", "i35")
prices(1) = Range("i36", "i36")
prices(2) = Range("i37", "i37")
prices(3) = Range("i38", "i38")

...等。或者,如果您不熟悉编程,那么您会发现这很酷:

for CounterVariable = 0 to 3
   prices(CounterVariable) = Range("i" & 35 + CounterVariable)
next CounterVariable

要见...

  • 定义为Dim prices(50)的数组会有一个'维度,就像一条直线。
  • 在电子表格中显示一行,每列50列。
  • 如果您说Dim prices(50,60)您将拥有一个二维数组,如笛卡尔平面(x,y)或50x60单元格电子表格,其中第一个数字就像字母,第二个数字就像编号的行
  • 某些语言支持三维数组 - VariableName(x,y,z)。不知道VBA是否
  • 因此,在VBA支持 数组后,在括号中使用逗号 但是它意味着与您希望完全不同的东西(而且您无法改变):尺寸的值。
  • 所以你的最后一行代码是在6维宇宙中寻找一些价值!所以我们得到了身高,宽度,深度,时间,细节,呃,你在那里打败了我!!!