前提・実現したいこと
次のイメージのようなエクセルで作った複数の見積書を、マクロでコピペして転記先のエクセルシートに一枚に情報をまとめるためのマクロを作成したいと考えています。
マクロを実行すると以下のようになり、イエローハイライトしている2行目3行目のように同じ行にコピーされるようにしたいのですが、一行ずつ(4~14行目のように)ずれてペーストされていってしまいます。
試したこと
ペーストされる空白セルの指定法が間違っていると思い。
Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "I").End(xlUp).Offset(1)
を
Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "I").End(xlUp).Offset(-1)
や
Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "I").End(xlUp).
や
Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "B").End(xlToRight).Offset(1)
や
Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count-1, "I").End(xlUp).Offset(1)
にしてみましたが、うまく実行されませんでした。
Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "B").End(xlToLeft).Offset(1)
としたところ、
エラー1004:アプリケーション定義またはオブジェクト定義のエラーです。
が出てしまいました。
どうなおせばよいか、アドバイスいただければ幸いです。
よろしくお願いいたします。
全体のソースコード
Sub Macro1()
'前提条件 '- 転記元のシートを前面に表示していること '- 転記先のシートがこのマクロが書かれいるブックであること If Excel.ThisWorkbook Is Excel.ActiveWorkbook Then Stop Exit Sub End If ' '転記元のシートを取得 'Excelで今アクティブなシート Dim copyWs As Excel.Worksheet Set copyWs = Excel.ActiveWorkbook.ActiveSheet '転記先のシートを取得 'マクロが書かれているブックの、アクティブなシート Dim pasteWs As Excel.Worksheet Set pasteWs = Excel.ThisWorkbook.ActiveSheet '入力する空白セルの指定 Dim pasteCell As Excel.Range Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "A").End(xlUp).Offset(1)
'見積日を開いている転記元からコピーして転記先にペースト
Dim mitumoribiCell As Excel.Range
Set mitumoribiCell = copyWs.Range("A1:H1")
mitumoribiCell.Copy pasteCell.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False '品名'を開いている転記元からコピーして転記先にペースト Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "B").End(xlUp).Offset(1) Dim hinmeiCell As Excel.Range Set hinmeiCell = copyWs.Range("B12") hinmeiCell.Copy pasteCell.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False '見積金額'を開いている転記元からコピーして転記先にペースト Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "C").End(xlUp).Offset(1) Dim mitsumorikingakuCell As Excel.Range Set mitsumorikingakuCell = copyWs.Range("E12:H12") mitsumorikingakuCell.Copy pasteCell.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False
(途中同じようなコードなので省略)
'金額2'を開いている転記元からコピーして転記先にペースト Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "K").End(xlUp).Offset(1) Dim kingaku2Cell As Excel.Range Set kingaku2Cell = copyWs.Range("G28:H28") kingaku1Cell.Copy pasteCell.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, _ SkipBlanks:=False, _ Transpose:=False
End Sub

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/15 06:32