アプリ版:「スタンプのみでお礼する」機能のリリースについて

vbaで他のブックに転記したい。


vba初心者です。

コマンドボタンを押すと、別ブックにA2からD2を転記するようにしたいです。
転記先は「帳簿」としています。
現状下記のプログラムでは「帳簿」の 5行目にのみ転記されてしまいます。

そこで下記質問です。
①帳簿ファイルの一番下の行からひとつ下に転記させるにはどこをどう直したら良いでしょうか。
②値だけの転記にする場合、どうしたらいいでしょうか。
よろしくお願いします。


Private Sub CommandButton1_Click()
   
    '別ブックを開く
    Workbooks.Open Filename:=ThisWorkbook.Path & "\帳簿.xlsx"
   
    Dim A, B
    '別ブックに転記
    Set A = ThisWorkbook.Worksheets("Sheet1").Range("A2:D2")
    Set B = Workbooks("帳簿.xlsx").Worksheets("Sheet1").Range("A" & Cells(Rows.Count, "A").End(xlUp).Row + 1)
    A.Copy B
   
    '別ブックを保存して、閉じる
    Workbooks("帳簿.xlsx").Save


End Sub

A 回答 (3件)

おはようございます。



マクロブックのセルA2:D2のデータを、帳簿へ記載するで良いでしょうか?
下記で、どうでしょうか?

①帳簿ファイルの一番下の行からひとつ下に転記させるにはどこをどう直したら良いでしょうか。
→Offset(行,列)が良いかと思います。 Offset(1)で1行下を指します。
②値だけの転記にする場合、どうしたらいいでしょうか。
よろしくお願いします。
→.Valueで、値の取得や設定ができます。

Private Sub CommandButton1_Click()
Workbooks("帳簿.xlsx").Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(, 4).Value = _
ThisWorkbook.Worksheets("Sheet1").Range("A2:D2").Value
End Sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました!お礼が遅くなり申し訳ありません。
とても助かりました!

お礼日時:2022/03/12 07:06

こんにちは


すでに回答は出ていますが A.Copy B だけを書き変えるのであれば

B.Resize(, A.Count).Value = A.Value

.Value = .Valueで値の代入が出来ます。
ただし、左辺と右辺は同じサイズ(セル範囲の数)にする必要があります
なので、Resizeで 左辺を右辺のサイズで大きさを変えます。
(大きさが同じなら変えなくて良い)
Offset と Resize はとても便利なので、調べて覚えると良いと思います
    • good
    • 1

#2です


ちょっと省略してしまいました。
学習の為に右辺が変化した時の場合に対応する形を示しておきます
B.Resize(, A.Count).Value = A.Value は
B.Resize(A.Rows.Count, A.Columns.Count).Value = A.Value
の省略です
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました!お礼が遅くなり申し訳ありません。便利な関数も教えて下さってありがとうございました!

お礼日時:2022/03/12 07:08

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

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


このQ&Aを見た人がよく見るQ&A