2016-07-19 4 views
0

自動検出された行範囲を持つセルのチャンクを、定義された位置(特に、列AまたはBの最後に使用されたセルの直後)にカットアンドペーストしようとしています。 。カット - Excel VBAで自動検出された範囲をペーストする

Sub Cut_Range_To_Clipboard() 

'Detecting number of used lines in the chunck of code I need to cut 
Dim LastRow As Long 
    With ActiveSheet 
     LastRow = .Cells(.Rows.Count, "T").End(xlUp).Row 
     MsgBox LastRow 
    End With 

'Detecting number of used lines in the column I need to paste the code 
Dim LastRow2 As Long 
    With ActiveSheet 
     LastRow2 = .Cells(.Rows.Count, "B").End(xlUp).Row 
     MsgBox LastRow2 
    End With 

'Cells(20, 3) = T3 

Range(Cells(20, 3), Cells(36, LastRow)).Cut 
Range(Cells(2, LastRow2 + 1)).Select 
ActiveSheet.Paste 

Range("T1").Cut 
Range(Cells(1, LastRow2 + 1)).Select 
ActiveSheet.Paste 

Columns("T:AK").EntireColumn.Delete 
End Sub 

コード、ラインRange(Cells(2, LastRow2 + 1)).Select出力エラー1004を実行して、私は理由を理解することはできません。

Range(Cells(2, LastRow2 + 1)).Select 

へ:

+2

を避けることができます選択避けるなど、あなたのコードで作ることになります多くの変更は、ちょうど 'セル(2を使用してあります、LastRow2 + 1) 'のようになります。範囲 –

+2

'セル([行]、[列])' ...あなたは 'セル(2、LastRow2 + 1)'について確信していますか?文法エラーから離れて、ここで行と列を反転するかもしれません;) –

+0

@DirkReichelあなたは正しいです。ありがとうございました! – LBR1994

答えて

1

あなたは(あなたが唯一の1つのセルの引数で範囲を呼び出す必要に応じて)CellsAddressプロパティを追加する必要があります。だから、:

Range(Cells(2, LastRow2 + 1).Address).Select 

これはあなたの問題を解決しますが、パフォーマンスを向上させ、他の問題

1
はあなたの行を変更し

Range("B" & LastRow2 + 1).Select 
関連する問題