我正在尝试从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
如何解决这个问题
答案 0 :(得分:3)
引号内的任何内容都将被视为字符串,因此“lrow”被视为String
而不是变量。
应该是
Range("D" & lrow).Copy
或您尝试复制的任何范围。我想,你正在尝试
Range("D2:D" & lrow).Copy
的另一个简单替代方案
Range("D2:D" & "lrow").Copy
Range("D2:D" & "lrow").PasteSpecial Paste:=xlPasteValues
是
Range("D2:D" & lrow).Value = Range("D2:D" & lrow).Value
答案 1 :(得分:3)
您已经有两个很好的答案,因此这不是答案,而是对您的代码的增强。
您无需将行变量声明为Double
。 Long
已经足够了。您可能需要阅读数据类型HERE
您的代码可以简化为
<强>代码强>
BTW,您的问题是D1
,但您的代码正在考虑D2
。所以我要去D2
。如果是D1
,请将D2
替换为D1
以下。
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