• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数シートの選択範囲を一枚のシートに貼り付ける)

複数シートの選択範囲を一枚のシートに貼り付ける方法

このQ&Aのポイント
  • Excel2007使用のマクロ初心者です。複数シートのセルB29からBQ60までのセル範囲を「計算シート」の一枚に右列方向に順次貼りつける方法を教えてください。
  • 現在のコードでは不要な部分も貼り付けてしまっているため、セル範囲をB29からI60までとBM29からBM60までの2箇所を、「計算シート」に右列方向に貼り付けたいです。修正する方法や別の方法があれば教えてください。
  • 修正方法としては、まず「計算シート」の一番右の列に作業用の列を追加しておきます。次に、ループを使って各シートの指定範囲をコピーし、作業用の列に順次貼り付けます。最後に、作業用の列から不要な部分を削除し、必要な部分だけを残すように修正します。別の方法としては、セル範囲を指定する方法ではなく、列や行の範囲を指定してコピーするという方法もあります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

★印の部分の処理を2回繰り返せばいいだけです。 Sub 計算表の一括複写() Application.ScreenUpdating = False Dim list, SheetName ActiveSheet.Unprotect Const EXCEPT_NAME = " 年月管理  最新明細 記録帳" Worksheets("計算").Activate Rows("2:33").Select Selection.Delete Shift:=xlUp Dim k As Long Dim ws As Worksheet Set ws = Worksheets("計算") Application.DisplayAlerts = False On Error Resume Next For k = 1 To Worksheets.Count - 8 If Worksheets(k).Name <> "計算" Then '★ Range(Worksheets(k).Cells(29, "B"), Worksheets(k).Cells(60, "I")).Copy ws.Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).Select Selection.PasteSpecial Paste:=xlPasteValues ’★ Range(Worksheets(k).Cells(29, "BM"), Worksheets(k).Cells(60, "BM")).Copy ws.Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).Select Selection.PasteSpecial Paste:=xlPasteValues End If Next k Application.CutCopyMode = False 空白列の削除 End Sub ★の書き方だと長すぎるので、 Worksheets(k).Range("B29:I60").Copy ws.Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).PasteSpecial Paste:=xlPasteValues Worksheets(k).Range("BM29:BM60").Copy ws.Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).PasteSpecial Paste:=xlPasteValues の方がわかりやすく、すっきりします。

aitaine
質問者

お礼

ありがとうございました。早速やってみたら完璧に、しかも軽くなった分、肩もこらずにすいすいできました。本当に感謝もうしあげます。

関連するQ&A