• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA、数式の入ったセルのコピーについて質問です。よろしくお願)

エクセルVBA、数式の入ったセルのコピーについて質問

このQ&Aのポイント
  • エクセルVBAで、数式の入ったセルをコピーする方法について質問します。
  • シートのA列には日付が入っており、データを更新する度に行が追加されます。数式(1)~(3)は、異なる計算式で日付データを参照し、計算を行っています。
  • A列にデータを追加した際に、B~D列の数式をA列の最終行までコピーしたいですが、どのようなVBAコードを書けば良いでしょうか?

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

With ActiveSheet 'とか Sheets("Sheet1")   .Range(.Cells(.Rows.Count, 4).End(xlUp), .Cells(.Rows.Count, 1).End(xlUp).Offset(, 1)).FillDown End With こんな感じですが、 手作業でも、そんなに手間ではないです。 例えば数式が10行目まではいっているなら、 B10:D10 を選択して、右下のフィルハンドルをダブルクリック。 だけです。

90894193
質問者

お礼

早々のご回答ありがとうございます。 B~D列の最終行を探してコピーするということですね。 FillDownを使うのは勉強になりました。 もう一つアドバイス頂いた以下の件ですが・・・ B10:D10 を選択して、右下のフィルハンドルをダブルクリック。 だけです。 →今回以来した数式コピーは、「データ更新」という一連の作業の一部で、データベースとなる部分を加工する部分であるため、ユーザー側にはシートを見せないようにしています。 コマンドボタンで一気に解決したく、質問いたしました。

その他の回答 (1)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

A列に新しいデータを追加したときにその一行上まで数式はコピーされてるはずですよね。ですので単純に Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Column = 1 Then Range(Cells(Target.Row - 1, Target.Column + 1), Cells(Target.Row - 1, Target.Column + 3)).Copy Target.Offset(0, 1).PasteSpecial End If Application.EnableEvents = True Application.CutCopyMode = False End Sub でいいのではないでしょうか。

関連するQ&A