我做了很多搜索和反复试验,我仍然无法找到问题的答案。
我想在sheet2中填充一个范围,其中的公式引用sheet1中的动态范围。我已经使用了下面粘贴的代码片段,到目前为止它完美无缺。
Dim rng as Range
Dim x as Integer
Set rng=worksheets(sheet2).Range("J6:J9")
x = 21
With sheet1
LastCol = .Cells(21, .Columns.Count).End(xlToLeft).Column
End With
For Each c In rng
c.Formula = "=sheet1!" & Cells(j, LastCol).Address
j = j + 1
Next c
我的问题是这段代码创建了一个绝对引用,我需要一个亲戚(或混合),因为我需要能够做一些"拖动"细胞后来。我尝试过使用formulaR1C1,但我无法使用动态范围。
如果有人能帮助我,我会很高兴,如果你需要我解释任何事情,请随时问:)
答案 0 :(得分:2)
您正在搜索...
.Address(ReferenceStyle:=xlR1C1)
查看Microsoft VBA参考资料有时会有所帮助:Range.Address Property (Excel)。
此外,此引用应完全限定工作表名称,而不是留给相关上下文:
Cells(j, LastCol).Address
答案 1 :(得分:2)
或者你实际上在搜索这个:
.Address(RowAbsolute:=False, ColumnAbsolute:=False)
地址有5个属性 - .Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
只要这些是.Address中5的前两个参数,你可以这样称呼它们:
.Address(False, False)
甚至是这样:
.Address(0, 0)
Peh已经提到的一些额外提示 - 不要在VBA中使用整数 - Why Use Integer Instead of Long?