VBA - 将可变范围从一张纸复制到另一张
问题描述:
我想从第二行的工作表“Inv_Headers”,C列中的数据复制数据,直到最后一行从第4行复制到工作表“客户”列U.VBA - 将可变范围从一张纸复制到另一张
Private Sub Invoice_C()
Dim ws As Worksheet, ws1 As Worksheet
Dim lastrow As Long
Set ws = Worksheets("Inv_Headers")
Set ws2 = Worksheets("CUSTOMERS")
lastrow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' last row in column C
ws.Range("C2:C" & lastrow).Copy
ws1.Range("U4").PasteSpecial xlPasteValues
ws1.Activate
End Sub
我的代码给了我错误消息'91' - 对象变量或块变量未设置。但代码应该没有使用声明,不应该吗?
请问您的建议吗?
非常感谢!
答
基于从@Absinthe检查,我已经改正错字,这里是正确的代码:
Private Sub Invoice_C()
Dim ws As Worksheet, ws1 As Worksheet
Dim lastrow As Long
Set ws = Worksheets("Inv_Headers")
Set ws1 = Worksheets("CUSTOMERS")
lastrow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' last row in column C
ws.Range("C2:C" & lastrow).Copy
ws1.Range("U4").PasteSpecial xlPasteValues
ws1.Activate
End Sub
答
除了Srpic的产品,我记得没有得到这部分的工作: ws.Range("C2:C" & lastrow).Copy
您可以如果您在范围(开始打字ws.Range("C2", "C" & lastrow).Copy
修复它),你会看到,
是可接受的分离,而:
为INCOM完整范围的确定不是。
Private Sub Invoice_C()
Dim ws As Worksheet, ws1 As Worksheet
Dim lastrow As Long
Set ws = Worksheets("Inv_Headers")
Set ws1 = Worksheets("CUSTOMERS")
lastrow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' last row in column C
ws.Range("C2", "C" & lastrow).Copy
ws1.Range("U4").PasteSpecial xlPasteValues
ws1.Activate
末次
你叫你的第一张WS,不WS1,所以更改WS1在:ws1.Range( “U4”)PasteSpecial的xlPasteValues – Absinthe
@Absinthe哦,该死。谢谢!我没有注意到。 – Srpic
为什么您应该为每个模块使用Option Explicit的完美示例,并在运行之前进行编译。这会立即在'Set ws2 = ....'行上产生一个错误 –