- ベストアンサー
エクセルVBAでマクロを残したままE列とG列にデータを入力する方法
- エクセルVBAを使用して、E列とG列に日付と売上のデータを入力する方法を探しています。また、A列からC列のマクロも残したままできるようにしたいです。現在のコードを使って同様のプロシージャを下段に書くことを試していますが、うまく動作しません。
- Excel VBAを使って、E列に日付を、G列に売上のデータが入力されるようにしたいです。また、A列からC列のマクロも残したままできるようにしたいです。現在、下記のコードを使って同様のプロシージャを下段に書いてみましたが、うまく動作しません。
- エクセルVBAを使用して、E列とG列に日付と売上のデータを入力する方法を探しています。A列からC列のマクロも残したままできるようにしたいです。現在のコードを使用して同様のプロシージャを下段に書いてみましたが、正常に動作しません。どなたかアドバイスをいただけませんか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
同じタイプのマクロを2つ並べて書いても動きません。 一つのマクロの中で,「ここに入力があったらこうする,こっちに入力があったときはこれをする」と仕分けて書きます。 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートの記載内容を「すべて」消去する 下記をコピー貼り付ける #判りやすい版 private sub worksheet_change(byval Target as excel.range) if target.cells(1) = "" then exit sub if target.address = "$A$1" then Range("C10:C65536").ClearContents With Range(Cells(9 + Range("A1").Value, "C"), Cells(Range("A65536").End(xlUp).Row, "C")) .FormulaR1C1 = "=MAX(RC2:R[" & -Range("A1").Value + 1 & "]C2,FALSE)" .Value = .Value End With elseif target.address = "$E$1" then Range("G10:G65536").ClearContents With Range(Cells(9 + Range("E1").Value, "G"), Cells(Range("E65536").End(xlUp).Row, "G")) .FormulaR1C1 = "=MAX(RC6:R[" & -Range("A1").Value + 1 & "]C6,FALSE)" .Value = .Value End With end if end sub -----------まずここまで--------- #実際に使う版(上述を試した後,マクロをまた消して差し替える) private sub Worksheet_Change(byval Target as excel.range) if target.address <> "$A$1" and target.address <> "$E$1" then exit sub if target = "" then exit sub target.offset(9, 2).resize(60000,1).clearcontents with range(cells(9 + target.value, target.column + 2), cells(65536, target.column).end(xlup).offset(0, 2)) .formula = "=MAX(RC[-1]:R[" & -Range("A1").Value + 1 & "]C[-1])" .value = .value end with end sub
お礼
昨日に引き続きありがとうございます。 #判りやすい版については 完璧です。ありがとうございます。 更に増やしたい時は 「elseif target.address =」~「End With」 でセルを書き換えて追加していけば良いのでしょうか? #実際に使う版は 消して差し替えたのですがなぜか無反応です。
補足
#実際に使う版も やり直しましたらちゃんと作動しました。 ありがとうございました。