- ベストアンサー
エクセルのマクロについて
マクロのコードについて質問です。 シート1のセルA1の値が更新されるたびに、シート2のA1,A2と値が自動で反映されていくマクロを教えていただけないでしょうか。 シート1をベースとして、セルA1に記入した日付をシート2の表に12ヶ月分蓄積させていきたいと考えてます。 誤記入して蓄積してしまう可能性も高い思いますが、勉強のため教えていただきたいです。 難しいとは思いますが、対応お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! Sheet1のシートモジュールにしてみてください。 尚、Sheet2のA列の表示形式は「日付」にしておきます。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then If IsDate(Target) Then With Worksheets("Sheet2") .Range("A1").Insert shift:=xlDown .Range("A1") = Target End With End If End If End Sub ※ 一応Sheet1、A1セルが日付と判断できるデータかどうか確認するようにしていますが、 実際は数値の場合はすべて反応してしまいます。m(_ _)m
その他の回答 (2)
- tsukaps
- ベストアンサー率33% (40/121)
VBAでやれば普通にできると思います。 プログラマとして覚えるつもりはないけど、 今回だけ教えてって話なら、かなり無理があります。 まずは、ある程度VBAをマスターしてからが良いのではないでしょうか。
- yosifuji20
- ベストアンサー率43% (2675/6115)
手元にマクロの文法書がないので考え方だけですが。 まず「新しいマクロの作成」で次のマクロを作ります。 Sheet2のA1にセルを挿入し、挿入後下方向にシフト Sheet1のA1の値をコピーし、Sheet2のA1に貼り付け マクロ終了 これでできたマクロを手作業で修正します。 (ツール→マクロ→Visual basic editor) 修正内容は 「Sheet1のA1の値が変わったら」という条件を上記でできたマクロの最上段に追加します。これはIF分で作れます。 「Sheet1のA1の値が変わったら」という条件の書き方はマクロの文法書を見てください。 この考え方でSheet1のA1が変更されたら、Sheet2のA1以下が下に1行下がって、A1に新しいSheet1のA1の値がコピーされます。
お礼
tom04様 大変助かりました。 独学でやっていくのは大変ですね。 参考書など購入してみましたが、中々うまくいきません。 コツコツやっていこうと思います。