如何将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 = ...