VBA:插入具有动态范围和相对参考的公式

时间:2017-04-27 09:16:34

标签: excel vba excel-vba excel-formula excel-2010

我做了很多搜索和反复试验,我仍然无法找到问题的答案。

我想在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,但我无法使用动态范围。

如果有人能帮助我,我会很高兴,如果你需要我解释任何事情,请随时问:)

2 个答案:

答案 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?