【发布时间】:2016-10-24 19:21:18
【问题描述】:
我很难在循环中确定关键变量的尺寸 - 当我使用绝对单元格引用(即 A1)时很好,但是当我确定相对值(即 (i,j) )时它会失败 - 即使我可以将该值调用到一个单元格中没有问题。
任何想法都非常感谢...... 干杯 丹
例子:
这有效:
Sub Test(ARRAYX)
Dim i As Integer, j As Integer
With Workbooks("X.xlsb").Sheets("X")
i = 50 'rows
Do Until i = 51
For j = 30 To 650 Step 30 'cols
Dim NUM as integer
NUM = activesheet.range("A1")
Workbooks("X.xlsb").Sheets("X").Cells(i - 48, j).value = ARRAYX(NUM, 2)
Next j
i = i + 1
Loop
End With
End Sub
这不起作用:
Sub Test(ARRAYX)
Dim i As Integer, j As Integer
With Workbooks("X.xlsb").Sheets("X")
i = 50 'rows
Do Until i = 51
For j = 30 To 650 Step 30 'cols
Dim NUM as integer
NUM = Workbooks("X.xlsb").Sheets("X").Cells(i, j).value
Workbooks("X.xlsb").Sheets("X").Cells(i - 48, j).value = ARRAYX(NUM, 2)
Next j
i = i + 1
Loop
End With
End Sub
【问题讨论】:
-
“失败”是什么意思?你有错误吗?如果是这样,错误是什么,它会抛出哪一行?如果不是,请描述预期的行为以及您的代码是如何“未能”做到这一点的。
-
一般 VBA 技巧。你有一个
With块,但你实际上并没有使用它。 -
我能问一下为什么你在循环中标注它而不是在其他变量的开头?
-
@tompreston 宣布接近首次使用是一件好的事情。处于循环中是无关紧要的。它只有一次尺寸。
-
一个版本使用
ActiveSheet另一个指定工作簿。您可能认为它们引用的是相同的,但Sheets("X")可能不是您的ActiveSheet。