Excel VBA 質問スレッド №2150 (未解決)

Excelの値が変更(数式)になったときにメールを送る設定を考えていました

投稿者 : まないた     投稿日時 : 2025/09/27(Sat) 13:49:03     OS : Windows 11     EXCEL : Excel 2019
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 を確認しては。

[返信 2] Re : Excelの値が変更(数式)になったときにメールを送る設定を考えていました
投稿者 : てらてら     投稿日時 : 2025/09/27(Sat) 18:14:20
こんにちは。
手元で動かした感じでは、問題ないように思います。

>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 を確認しては。

ピロリ様 ありがとうございます。やってみます。

[返信 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 )
タイトルとURLをコピーしました