如何将dynamic引用到Excel单元格与VBAmacros?

我试图通过循环读取每一个单元格,并写入另一个工作表。

Sub boucle_for() Dim col As Integer Dim lig As Integer Dim rr As Integer Dim cc As Integer col = 4 lig = 3 rr = 15 cc = 24 For i = 0 To 33 Range("R[" & col & "]C[" & lig & "]").Formula = "=AVG('Weekly Changes'!R[" & rr & "]C[" & cc & "]:R[" & (rr + 1) & "]C[" & (cc + 1) & "])" rr = rr + 14 lig = lig + 1 Next End Sub 

我的目标是dynamic引用一个单元格,但VBA脚本说这是一个错误。 我习惯于Java和JavaScript数组,但是我在这方面失败了。

我在哪里犯了一个错误?

我总是喜欢使用Cells类(使用R1C1引用)方法,如下所示:

 Cells(rr, col).Formula = ... 

如果你需要一个多单元格范围,你可以这样做:

 Range(Cells(rr, col), Cells(rx, colx)).Formula = ... 

但是你也可以这样做:

 Range("A5").Formula = ... 

有些人会把列号转成字母。 我认为这很俗气,但是看起来像这样:

 Range(MyNumberToLetterFunction(col) & rr).Formula = ... 

或多细胞范围:

 Range("A5:B6").Formula = ... 

顺便说一下,最好使用图纸参考来限定范围。 它似乎很好地处理循环,就像你在做:

 Sheet1.Cells(rr, col).Value = ... 

要么

 Sheets("My Awesome Stuff").Cells(rr, col).Value = ...