2016-10-17 6 views
1

"Sheet1"の2行目からA列をコピーし、5行目から "ABC"シートの列Cに貼り付けようとしています。 Aは可変なので、固定範囲は使用できません。1つのワークシートから別のワークシートへのダイナミックレンジのコピーと貼り付け

次のコードは、私が必要なものありませんが、私はこのコードを使用して互いに等しい列に設定しようとした.Selectと.Activate

LastRow = Range("A" & Rows.Count).End(xlUp).Row 
Sheets("Sheet1").Range("A2:A" & LastRow).Copy 
Sheets("ABC").Activate 
Sheets("ABC").Range("C5:C" & LastRow).Select 
Selection.PasteSpecial xlPasteValues 

使用しないようにしようとしています:

Sheets("ABC").Range("C5").End(xlDown).Value=Sheets("Sheet1").Range("A2:A" & LastRow).Value 

これはエラーなしで実行されますが、「何もしません」 - ワークシート「ABC」にデータは表示されません

また、私は次のようにも試みました:

Dim WS As Worksheet 
    Dim wsABC As worksheet 


    Set WS = Sheets("Sheet1") 
    Set wsABC = Sheets("ABC") 
    LastRow = Range("A" & Rows.Count).End(xlUp).Row 

    WS.Range("A2:A" & LastRow).Copy 
    wsABC.Range("C5").End(xlDown).Paste 

これは、この行にエラー「ファイル名を指定して実行時エラー#438オブジェクトはこのプロパティまたはメソッドをサポートしていません」を生成する:

wsABC.Range("C5").End(xlDown).Paste 

次のように私が試したもう一つの方法だった:

Dim WS As Worksheet 

    Set WS = Sheets("Sheet1") 
    Set wsABC = Sheets("ABC") 


    With WS 
    LastRow = Range("A" & Rows.Count).End(xlUp).Row 
    WS.Range("A2:A" & LastRow).value = wsABC.Range("C5:C & LastRow").Value 

End With 

これは、 "実行時エラー '1004'アプリケーション定義またはオブジェクト定義エラーを生成します。

私は自分の試行で訂正/コメントを公開しています.Selectと.Activateを使用しないでください。

ご協力いただきありがとうございます。

答えて

2

コーディングスタイルは大きく異なる場合があります。

Sub tgr() 

    Dim wb As Workbook 
    Dim wsData As Worksheet 
    Dim wsDest As Worksheet 

    Set wb = ActiveWorkbook 
    Set wsData = wb.Sheets("Sheet1") 
    Set wsDest = wb.Sheets("ABC") 

    With wsData.Range("A2", wsData.Cells(wsData.Rows.Count, "A").End(xlUp)) 
     wsDest.Range("C5").Resize(.Rows.Count).Value = .Value 
    End With 

End Sub 
1
With Worksheets("Sheet 1") 
    With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)) 
     Worksheets("ABC").Range("C5").Resize(.Rows.Count).Value = .Value 
    End With 
End With 
ここをクリックしてください
関連する問題