🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

735閲覧

【Excel】選択したセルを別シートの空白行の指定列に貼り付け

tkyk.

総合スコア20

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/03/14 09:25

お世話になります。
下記のシートのB2~D2をコピーし別シートの空白行のD列に貼り付けたいのですがどのようなVBAにすれば良いのでしょうか。
下記コードを実行するとD列ではなくA列に貼り付けになってしまいます。

品番品名金額数量合計
1090えんぴつ500円2個1000円

Sub

1' 2' Macro1 Macro 3' 4 5' 6 Range("B2:D2").Select 7 Selection.Copy 8 Workbooks.Open Filename:= _ 9 "C:\Users\tkyks\Desktop\data.xlsx" 10 n = Cells(Rows.Count, "D").End(xlUp).Row + 1 11 ActiveSheet.Paste 12 ActiveWindow.ActivateNext 13End Sub

よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じでどうでしょうか。(修正しました)

VBA

1 Dim moto As Worksheet, saki As Worksheet 2 Set moto = ThisWorkbook.Worksheets(1) 3 Set saki = Workbooks.Open("C:\Users\tkyks\Desktop\data.xlsx").Worksheets(1) 4 5 Dim n 6 n = saki.Cells(saki.Rows.Count, "D").End(xlUp).Row + 1 7 8 moto.Range("B2:D2").Copy saki.Cells(n, "D")

投稿2021/03/14 09:42

編集2021/03/14 10:37
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkyk.

2021/03/14 10:14

jinojiさん ありがとうございます。 教えていただいたVBA試してみましたが上手く行きませんでした。 別シートは開くのですがコピーと貼り付けが出来ません。 すみません。再度教えていただくことは可能でしょうか。 よろしくお願いします。
jinoji

2021/03/14 10:31

元と先が逆かも。
jinoji

2021/03/14 10:32

"C:\Users\tkyks\Desktop\data.xlsx" が貼り付け先ですか?
tkyk.

2021/03/14 10:35

jinojiさん ありがとうございます。 "C:\Users\tkyks\Desktop\data.xlsx" こちらが貼り付け先となります。
jinoji

2021/03/14 10:37

すみません。勘違いしていました。 修正してみましたがどうでしょうか。
tkyk.

2021/03/14 10:49

jinojiさん ありがとうございます! 上手く出来ました! ちなみに("B2:D2")を「選択したセル」にする場合にはどのように書き換えれば良いのでしょうか。 初歩的な質問かと思いますが、宜しくお願い致します。
tkyk.

2021/03/14 11:04 編集

jinojiさん 度々申し訳ございません。 それと教えていただいたコードですが、続けて貼り付けしようとすると次の行ではなく同じ行に貼り付けになってしまいます。 毎回、空白行のD列に貼り付けするのはどのようにすれば良いのでしょうか。 重ねての質問すみません。
jinoji

2021/03/14 11:16

その時選択しているセル範囲、ということなら、 処理の最初で、 Dim motoCell As Range Set motoCell = ActiveWindow.RangeSelection みたいにする方法があります。 ダイアログを出して選択させるなら、 以下のような処理を用意して、それを呼び出すのがよいでしょう。 Function CellSelect() As Range On Error GoTo ER Set CellSelect = Application.InputBox("", "セル範囲を指定", , , , , , 8) Exit Function ER: Set CellSelect = ActiveWindow.RangeSelection End Function
jinoji

2021/03/14 11:22

続けて貼り付け というのをどういうコードでやろうとしているのかによりますが、 n = saki.Cells(saki.Rows.Count, "D").End(xlUp).Row + 1 が空白行を取得する部分なので、都度それをすればいいと思います。
tkyk.

2021/03/14 12:31 編集

jinojiさん Dim motoCell As Range Set motoCell = ActiveWindow.RangeSelection は処理の最初とのことですが、具体的にどの部分に入れれば良いのでしょうか。 初歩的な質問で本当にすみません。
jinoji

2021/03/14 13:33

Dim motoCell As Range Set motoCell = ActiveWindow.RangeSelection Dim saki As Worksheet Set saki = Workbooks.Open("C:\Users\tkyks\Desktop\data.xlsx").Worksheets(1) Dim n n = saki.Cells(saki.Rows.Count, "D").End(xlUp).Row + 1 motoCell.Copy saki.Cells(n, "D")
tkyk.

2021/03/14 15:34

jinojiさん ありがとうございます! 教えていただいたコードで無事に思い通りのマクロに出来ました。 お手数おかけしすみませんでした。 大変助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問