Excel VBA 質問スレッド №2150 (未解決)
Excelの値が変更(数式)になったときにメールを送る設定を考えていました
投稿者 : まないた 投稿日時 : 2025/09/27(Sat) 13:49:03 OS : Windows 11 EXCEL : Excel 2019
J3に数式が1以上の値を示したときにリマインダー通知を送る設定を考えていましたが、J3の値に関係なく通知が来てしまいます。どこが間違えているのかすら分かりません。ご教示いただければと思い書き込みました。ちなみにK3に”着手”と入力すれば通知が止まるよう設定したつもりでしたが全く機能しません。全くの初心者ですが、みなさんよろしくお願いいたします。
Private Sub Worksheet_Calculate() Dim WatchCell As Range Set WatchCell = Me.Range("J3") If IsNumeric(WatchCell.Value) Then If WatchCell.Value > 1 And Me.Range("K3").Value <> "着手" Then Call SendReminderEmail Me.Range("K3").Value = "着手" End If End If End Sub Sub SendReminderEmail() Dim OutlookApp As Object Dim OutlookMail As Object On Error Resume Next Set OutlookApp = CreateObject("Outlook.Application") If OutlookApp Is Nothing Then MsgBox "Outlookが起動していないか、使用できません。", vbExclamation Exit Sub End If On Error GoTo 0 Set OutlookMail = OutlookApp.CreateItem(0) With OutlookMail .To = "i@hgroup.co.jp" .Subject = "リマインダー通知:条件を満たしました" .Body = "許可期限が迫っている許可証があります。許可一覧のファイルを確認してください。" .Send End With Set OutlookMail = Nothing Set OutlookApp = Nothing End Sub
J3に数式が1以上の値を示したときにリマインダー通知を送る設定を考えていましたが、J3の値に関係なく通知が来てしまいます。どこが間違えているのかすら分かりません。ご教示いただければと思い書き込みました。ちなみにK3に”着手”と入力すれば通知が止まるよう設定したつもりでしたが全く機能しません。全くの初心者ですが、みなさんよろしくお願いいたします。
スポンサーリンク
[返信 1] Re : Excelの値が変更(数式)になったときにメールを送る設定を考えていました
投稿者 : ピロリ 投稿日時 : 2025/09/27(Sat) 16:01:27
■[質問] まないたさん(2025-09-27 13:49:03)の記事
> J3の値に関係なく通知が来てしまいます。
意に反して、
6step目: If WatchCell.Value > 1 And Me.Range("K3").Value <> "着手" Then が成立し、
7step目: Call SendReminderEmail が処理されてしまうってことなのでしょうけど・・・
7step目へブレークポイントを設定し(処理を止めて)、その時の WatchCell.Value を確認しては。
■[質問] まないたさん(2025-09-27 13:49:03)の記事
> J3の値に関係なく通知が来てしまいます。
意に反して、
6step目: If WatchCell.Value > 1 And Me.Range("K3").Value <> "着手" Then が成立し、
7step目: Call SendReminderEmail が処理されてしまうってことなのでしょうけど・・・
7step目へブレークポイントを設定し(処理を止めて)、その時の WatchCell.Value を確認しては。
[返信 2] Re : Excelの値が変更(数式)になったときにメールを送る設定を考えていました
投稿者 : てらてら 投稿日時 : 2025/09/27(Sat) 18:14:20
こんにちは。
手元で動かした感じでは、問題ないように思います。
>J3の値に関係なく通知が来てしまいます
Worksheet_Calculate() は再計算時に呼ばれるので、J3セル以外の数式が変更される時にも実行されます。
まぁ1回実行されると”着手”で蓋をしていますので、変更しない限り Call SendReminderEmail は実行されませんが、、、
>ちなみにK3に"着手"と入力すれば通知が止まるよう設定したつもりでしたが全く機能しません。
これは不思議ですね。書き換えてしまうコードがあるのでしょうか?
ブレークポイントとか Debug.Print などで動作を観察してみる事をお勧めします。
こんにちは。
手元で動かした感じでは、問題ないように思います。
>J3の値に関係なく通知が来てしまいます
Worksheet_Calculate() は再計算時に呼ばれるので、J3セル以外の数式が変更される時にも実行されます。
まぁ1回実行されると”着手”で蓋をしていますので、変更しない限り Call SendReminderEmail は実行されませんが、、、
>ちなみにK3に"着手"と入力すれば通知が止まるよう設定したつもりでしたが全く機能しません。
これは不思議ですね。書き換えてしまうコードがあるのでしょうか?
ブレークポイントとか Debug.Print などで動作を観察してみる事をお勧めします。
[返信 3] Re : Excelの値が変更(数式)になったときにメールを送る設定を考えていました
投稿者 : まないた 投稿日時 : 2025/09/29(Mon) 11:31:24
■[返信 1] ピロリさん(2025-09-27 16:01:27)の記事
> ■[質問] まないたさん(2025-09-27 13:49:03)の記事
> > J3の値に関係なく通知が来てしまいます。
> 意に反して、
> 6step目: If WatchCell.Value > 1 And Me.Range("K3").Value <> "着手" Then が成立し、
> 7step目: Call SendReminderEmail が処理されてしまうってことなのでしょうけど・・・
> 7step目へブレークポイントを設定し(処理を止めて)、その時の WatchCell.Value を確認しては。
ピロリ様 ありがとうございます。やってみます。
■[返信 1] ピロリさん(2025-09-27 16:01:27)の記事
> ■[質問] まないたさん(2025-09-27 13:49:03)の記事
> > J3の値に関係なく通知が来てしまいます。
> 意に反して、
> 6step目: If WatchCell.Value > 1 And Me.Range("K3").Value <> "着手" Then が成立し、
> 7step目: Call SendReminderEmail が処理されてしまうってことなのでしょうけど・・・
> 7step目へブレークポイントを設定し(処理を止めて)、その時の WatchCell.Value を確認しては。
ピロリ様 ありがとうございます。やってみます。
[返信 4] Re : Excelの値が変更(数式)になったときにメールを送る設定を考えていました
投稿者 : まないた 投稿日時 : 2025/09/29(Mon) 11:33:37
てらてら様 ありがとうございます。やってみます。
てらてら様 ありがとうございます。やってみます。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-10-11 05:53:31 )