0

データを含む最後の 5 列を検索し、これをコピーして最後の列の前に貼り付けるマクロを作成しました。現在のファイルを破損しないように、このマクロをダミー ドキュメントに作成し、以下のコードでマクロが正常に動作するようにしました。

Sub CopyLastFiveRows()

LastColumn = Sheets("Sheet2").Cells.Find("*", [a1], , , xlByColumns, xlPrevious).Column
On Error GoTo 0

Sheets("Sheet2").Columns(LastColumn - 4).Resize(, 5).Select
Selection.Copy

'   Enter the rest of your paste code here

Sheets("Sheet2").Columns(LastColumn + 1).Select
ActiveSheet.Paste

End Sub

上記をカット アンド ペーストすると、実際の作業ファイルでデータ タブ名が「Sheet2」の場合は正常に動作しますが、タブ名を「NFG」に変更し、上記のマクロですべての「Sheet2」をこれに置き換えると「実行時エラー '1004' Range クラスの Select メソッドに失敗しました」というメッセージが表示されます。少し混乱しています。誰かが私を助けることができれば、それは素晴らしいことです. ありがとう。

注 - もう 1 つ忘れていたのは、このマクロをワークブックのフロント シートのボタンに割り当てることです。これは、マクロをテストしたドキュメント間で考えることができる唯一の変数であるため、これが問題を引き起こしている可能性があると思います。

4

2 に答える 2

1

次のコードを使用して、最後の 5 列のすべての行をコピーします。

Sub CopyLastFiveColumns()

    Dim lngLastRow     As Long

    With ThisWorkbook.Worksheets("NFG")
         lngLastRow = .Range("A" & .Rows.Count).End(xlUp).Row
         .Cells(1, .Columns.Count).End(xlToLeft).Offset(, -4).Resize(lngLastRow, 5).Copy .Cells(1, .Columns.Count).End(xlToLeft).Offset(, 1)
    End With

End Sub
于 2013-05-10T11:35:10.310 に答える