2017-10-16 9 views
0

シート「Inv_Headers」、列C、2行目から最後の行までをシート「顧客」、列Uに4行目からコピーしたいとします。VBA - 1つのシートから別のシートに可変範囲をコピー

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 

私のコードでエラーmsg '91' - オブジェクト変数またはWithブロック変数が設定されていません。しかし、コードはWith文もなく、うまくいくはずです。

私はあなたのアドバイスをお願いできますか?

多くの感謝!

+1

あなたはあなたの最初のシートWS、ないWS1と呼ばれ、そうでWS1を変更します。ws1.Range( "U4")PasteSpecial xlPasteValues – Absinthe

+0

@Absintheああ、いまいましいです。ありがとうございました!私は気づいていない。 – Srpic

+1

モジュールごとに 'Option Explicit'を使い、実行前にコンパイルするべき理由の完璧な例です。これは直ちに 'Set ws2 = ....'行にエラーを発生させます。 –

答えて

0

@Absintheからのチェックに基づいて、私はタイプミスを修正して、ここで正しいコードでてきました:Srpicの提供に加えて

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

、私は仕事にこの部分を得ていない覚えていることができます。 ws.Range("C2:C" & lastrow).Copy

あなたが範囲(で入力を開始する場合は

あなたはINCOMため:のに対し、,が許容区切りであることがわかります)ws.Range("C2", "C" & lastrow).Copy

でそれを修正することができますプリーツ範囲の訴えはありません。

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の

関連する問題