計算によってセルの値に変化があった時にマクロを実行する
計算によってセルの値に変化があった時にマクロを実行する
"食品一覧"シートのV列の値が変わったら、データを“フィルタオプションの設定”でフィルタにかけ、特定の項目を同じブックの別のシートに抽出するマクロ文を以下の通り作成しました。
Private Sub Worksheet_Change(ByVal Target As Range)
With Worksheets("食品一覧")
If Intersect(Target, Range("V5:V10000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Worksheets("賞味期限切れ").Range("A7:Z10000").Clear
Worksheets("その他").Range("A7:Z10000").Clear
.Range("A4:Z1000").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("賞味期限切れ").Range("A1:A2"), _
CopyToRange:=Worksheets("賞味期限切れ").Range("A6:G6"), _
Unique:=False
.Range("A4:Z1000").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("その他").Range("A1:A2"), _
CopyToRange:=Worksheets("その他").Range("A6:G6"), _
Unique:=False
Application.EnableEvents = True
End With
End Sub
上記マクロ文は、V列の値を手入力で変更した場合のみ有効です。
やりたい事は、「V列に数式を入力し、計算によってV列の値に変化があった時にマクロを実行する」です。
↓入力する数式は以下の数式です。
=IF(DATE(YEAR(A10),MONTH(A10),DAY(A10))<$A$1,"期限切れ","その他")
色々調べた結果、
手入力によりセルの値が変更される場合は“Change”
Private Sub Worksheet_Change()
数式によりセルの値が変更になる場合は“Calculate”
Private Sub Worksheet_Calculate()
(※解釈を違えていたらすみません、間違えていたらそれぞれの用途を教えて下さい。)
と言う事なので、今回はPrivate Sub Worksheet_Calculate()を使用してマクロ文を作成したいのですが、上手く作成する事ができません。
お解かりになる方、ぜひ教えて下さい。
お礼
ありがとうございました。うまくいきました