VBA查询excel公式中的动态范围

时间:2018-06-13 17:22:16

标签: excel-vba vba excel

公式通过此VBA代码给出excel中的值,但下面公式中的范围是修复:

Private Sub Formula update()
Dim rng As Range
Dim rng1 As Range

    Set rng = Range("B1").End(xlDown)
rng.Offset(1, 0).Formula = "=TEXT(RIGHT(**B9**,9)+3,""DDMMMYYYY"")&"" - ""&TEXT(RIGHT(*B9*,9)+7,""DDMMMYYYY"")"
rng.Offset(1, -1).Formula = "=CONCATENATE(""WK-"",IF((WEEKNUM(LEFT(**B10**,9),2)-40)<=0,(WEEKNUM(LEFT(**B10**,9),2)-40)+53,WEEKNUM(LEFT(**B10**,9),2)-40))"

End Sub

但是在下面提到的代码中,我需要公式下的动态范围。

有人可以解决它。

Private Sub FormulaValue_paste()
Dim rng As Range
Dim rng1 As Range

    Set rng = Range("B1").End(xlDown)
rng.Offset(1, 0).Formula = "=TEXT(RIGHT(rng,9)+3,""DDMMMYYYY"")&"" - ""&TEXT(RIGHT(rng,9)+7,""DDMMMYYYY"")"
        Set rng1 = rng.Offset(1, 0)
rng.Offset(1, -1).Formula = "=CONCATENATE(""WK-"",IF((WEEKNUM(LEFT(rng1,9),2)-40)<=0,(WEEKNUM(LEFT(rng1,9),2)-40)+53,WEEKNUM(LEFT(rng1,9),2)-40))"

End Sub

提前感谢您的支持。

1 个答案:

答案 0 :(得分:0)

我猜,但如果你的意思是你想让公式引用rng1,也许就是这个。使用范围的Address属性并将其从引号中删除。

rng.Offset(1, -1).Formula = "=CONCATENATE(""WK-"",IF((WEEKNUM(LEFT(" & rng1.address & ",9),2)-40)<=0,(WEEKNUM(LEFT(" & rng1.address & ",9),2)-40)+53,WEEKNUM(LEFT(" & rng1.address & ",9),2)-40))"