2017-10-16 227 views
0

我想从第二行的工作表“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' - 对象变量或块变量未设置。但代码应该没有使用声明,不应该吗?

请问您的建议吗?

非常感谢!

+1

你叫你的第一张WS,不WS1,所以更改WS1在:ws1.Range( “U4”)PasteSpecial的xlPasteValues – Absinthe

+0

@Absinthe哦,该死。谢谢!我没有注意到。 – Srpic

+1

为什么您应该为每个模块使用Option Explicit的完美示例,并在运行之前进行编译。这会立即在'Set ws2 = ....'行上产生一个错误 –

回答

0

基于从@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 
0

除了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 

末次

相关问题