将公式复制到一系列单元格并将其转换为值

Vid*_*dhi 5 excel vba excel-vba

我试图从D1复制公式并粘贴它直到最后一行(26446)值可能会增加

Dim lrow As Double
lrow = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row

   Range("D2").Copy Destination:=Range("D2:D" & lrow)
   Range("D2" & "lrow").Copy   'THIS LINE SHOWS 1004 error
   Range("D2:D" & "lrow").PasteSpecial Paste:=xlPasteValues
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题

Sid*_*out 4

您已经得到了两个出色的答案,因此这不是答案,而是对代码的增强。

  1. 您不需要将行变量声明为DoubleLong 就足够好了。您可能想在此处阅读数据类型

  2. 您的代码可以简化为这样

代码

顺便说一句,你的问题说D1但你的代码正在D2考虑。所以我要和D2. 如果是D1则替换D2D1下面的。

Sub Sample()
    Dim lrow As Long

    With Sheets("Sheet2")
        lrow = .Range("A" & .Rows.Count).End(xlUp).Row

        .Range("D2:D" & lrow).Formula = .Range("D2").Formula
        .Range("E2:E" & lrow).Formula = .Range("E2").Formula
        .Range("F2:F" & lrow).Formula = .Range("F2").Formula
        .Range("G2:G" & lrow).Formula = .Range("G2").Formula

        .Range("D2:G" & lrow).Value = .Range("D2:G" & lrow).Value
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)