プロが教える店舗&オフィスのセキュリティ対策術

下記コードにて、転記を行います。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub 一括貼り付け()
Call 受注表貼付け1
Call 受注表貼付け2
Call 受注表貼付け3
End Sub


Sub 受注表貼付け1()
Range(Cells(5, 18), Cells(5, 26)).Copy

Workbooks.Open FileName:= _
"転記先パス"

Dim Lastrow As Long
With ActiveSheet
Lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(Lastrow + 1, 1).Select

ActiveCell.PasteSpecial Paste:=xlPasteValues


ActiveWorkbook.Save


End With

End Sub

Sub 受注表貼付け2()
Range(Cells(5, 28), Cells(5, 35)).Copy

Workbooks.Open FileName:= _
"転記先パス"

Dim Lastrow As Long
With ActiveSheet
Lastrow = .Cells(Rows.Count, 11).End(xlUp).Row
.Cells(Lastrow + 1, 1).Select

ActiveCell.PasteSpecial Paste:=xlPasteValues


ActiveWorkbook.Save


End With

End Sub


Sub 受注表貼付け3()
Range(Cells(5, 38), Cells(5, 43)).Copy

Workbooks.Open FileName:= _
"転記先パス"

Dim Lastrow As Long
With ActiveSheet
Lastrow = .Cells(Rows.Count, 20).End(xlUp).Row
.Cells(Lastrow + 1, 1).Select

ActiveCell.PasteSpecial Paste:=xlPasteValues


ActiveWorkbook.Save


End With

End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

上記のコードで、
受注表貼付け1でコピーした内容を、転記先ブックのA列の最終行へ
受注表貼付け2でコピーした内容を、転記先ブックのK列の最終行へ
受注表貼付け3でコピーした内容を、転記先ブックのT列の最終行へ
それぞれ転記をしたいです。

上記コードを実行すると、転記先ブックのA列に全て転記されてしまい、
受注表貼付け3の内容のみが残ってしまいます。

受注表貼付け2で、Cells(Rows.Count, 11)、
受注表貼付け3で、Cells(Rows.Count, 20)としているのですが、なぜK列とT列に転記されないのでしょうか?

VBAは初心者で詳しく理解はできておらず、申し訳ございませんが、
ご指導頂けると幸いです。

宜しくお願い致します。

A 回答 (2件)

>Lastrow = .Cells(Rows.Count, 11).End(xlUp).Row


で、K列の最終行を指定することには成功していると思われますが、
>.Cells(Lastrow + 1, 1).Select
では、A列の最終行+1行を選択しています。
そこが問題なのでしょう。
.Cells(Lastrow + 1, 11).Select
でご希望のところに貼り付けできると思います。
T列も同様ですので、省略します。
    • good
    • 0

既に的確な回答がされている所、横から失礼します。



ご質問について
>受注表貼付け2で、Cells(Rows.Count, 11)、
受注表貼付け3で、Cells(Rows.Count, 20)としているのですが、なぜK列とT列に転記されないのでしょうか?

このコード
Lastrow = .Cells(Rows.Count, 11).End(xlUp).Row は 単に11列目で値の入っている一番下の行番号を取得しているにすぎません。

貼り付けをするためのセル選択は次の行の.Cells(Lastrow + 1, 1).Select  です。
このセルが起点となり貼り付けが命令されています。
この部分、掲示のSub 受注表貼付け1()、Sub 受注表貼付け2()、Sub 受注表貼付け3()すべて同じになっています。 
したがって、行は移動するかと思いますが、列方向は期待の列になりません。
もし、VBAは初心者でしたら、.Cells(Lastrow + 1, 11).Selectは
.Cells(Lastrow + 1, "K").Select のような書き方も容認されますので、使用してはいかがでしょうか。(他言語でマトリックス的な配列を理解しているのであれば要らぬお世話かもしれませんね)

余談
https://oshiete.goo.ne.jp/qa/12329972.html
に追加質問されていますが、当初のご質問は解決されたのでしょうか?
解決されたのであれば、閉じられる事を勧めます。

また、表題のご質問を変えて追加質問を行うのは、あまり歓迎されません。
本ご質問の様に新たにご質問を建てるのが正解です。

ご質問、スレッドは、後に同じような内容で検索され訪れる方の為にも簡潔にされるのが良いと思います。
私自身、簡潔などと言う事を言うのは奥がましいのですが、お願いいたします。
    • good
    • 0
この回答へのお礼

丁寧にご指摘頂きありがとうございます。
今後失礼の無いように質問させて頂きます。
ありがとうございました。

お礼日時:2021/04/29 00:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています