http://okwave.jp/qa/q7236213.html
上記質問の発展形なのですが
同様のことを
E列に日付
F列に売上
G列に結果
でやりたいのですが
この時A列~C列のマクロも残したままでしたいのですが
下記のように同様のプロシージャーを下段に書けばできると思ったのですが
うまくいきません。
Private Sub worksheet_change(ByVal Target As Excel.Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target = "" Then Exit Sub
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
End Sub
Private Sub worksheet_change(ByVal Target As Excel.Range)
If Target.Address <> "$E$1" Then Exit Sub
If Target = "" Then Exit Sub
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 Sub
どなたかお知恵を拝借できませんでしょうか?
同じタイプのマクロを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」 でセルを書き換えて追加していけば良いのでしょうか? #実際に使う版は 消して差し替えたのですがなぜか無反応です。
補足
#実際に使う版も やり直しましたらちゃんと作動しました。 ありがとうございました。