Excelでマクロを記録して1行ずつコピーする操作を自動化したい場合、マクロ記録機能だけではセルの移動や選択状態に依存するため、思った通りに動作せずズレが生じることがあります。この記事では、マクロ記録時の注意点と安定したコピー方法を解説します。
1. マクロ記録でのズレの原因
マクロ記録は「選択したセルの位置」と「操作の順序」を記録する仕組みです。そのため、コピー元の範囲やアクティブセルが変わると、登録したマクロを実行した際に意図しないセルをコピーしてしまうことがあります。
特に「1行ずつコピーして下に移動」のような操作は、アクティブセルの相対位置に依存するため、元の位置がずれるとマクロもズレます。
2. 相対参照を使う
マクロ記録時に「相対参照を使用」を有効にすることで、現在のアクティブセルを基準に動作させることができます。これにより、どの行からマクロを開始しても1行ずつコピーが可能になります。
手順:マクロ記録を開始 → 『相対参照』ボタンをON → コピー作業 → 記録終了。
3. VBAで安定した1行ずつコピー
より安定させるには、VBAで明示的に行をループしてコピーする方法が推奨されます。例。
Sub CopyRows()
Dim i As Long
For i = 1 To 10 'コピーする行数
Rows(i).Copy Destination:=Rows(i + 1)
Next i
End Sub
これにより、セル位置に依存せず、常に指定した行をコピーできます。
4. 実行時の注意点
・コピー先にデータがある場合は上書きに注意
・範囲選択の自動拡張に注意
・マクロ記録ではなくVBA編集で制御するとズレのリスクが大幅に減少します
まとめ
Excelのマクロ記録だけで1行ずつコピーする場合、相対参照を有効にすることである程度改善できます。しかし、より安定した処理にはVBAで明示的にループを組む方法が最適です。これにより、コピー範囲や行数が変わってもマクロがズレずに動作します。


コメント