
こんにちは、エクセル365を使っています。
画像のように固定値と変動値が8種類あります。
画像では6種類(黒枠線が1種類として)ですが、後列にBG~BH BK~BL にも同じものがあります。
各々、独立したもので、設定ボタンを押し設定をし、変動値が既定の状態になったらメールを送信したいと思います。
(ちなみに変動値はRTD関数にて、サーバーに請求しています。)
具体的には設定ボタンを押した時に、AIの数値よりAJの数値のほうが小さい場合、AJの数値がAIの数値を上回った時に、同じく設定ボタンを押した時に、AIの数値よりAJの数値が大きい場合、AJの数値がAIの数値を下回った場合に一度だけメール送信をしたいです。
これを、8種類全てに動作させたいと思います。
また、設定ボタンを再度押した場合、そこからまた再動作するようなものが希望です。
詳しい方、教えて頂けませんでしょうか。
よろしくお願い致します。

No.2ベストアンサー
- 回答日時:
#1です。
行番号がないので適当でした (#1はボタンが3行目にある場合)
ボタンが4行目にあるとした場合、下記 Sub btn()内を変更してください。
If Range(celAdrs).Offset(-2).Value <= Range(celAdrs).Offset(-2, -1).Value Then
Select Case celAdrs
Case "AJ4"
flg(1) = 0
・
・ * #1を参考に変更
・
・
End Select
Range(celAdrs).Offset(-2).Interior.Color = RGB(200, 200, 255)
Else
Select Case celAdrs
Case "AJ4"
flg(1) = 1
・
・ * #1を参考に変更
・
・
End Select
Range(celAdrs).Offset(-2).Interior.Color = RGB(255, 200, 200)
End If
並列に動作を実行することは出来ませんが、
フラグを順番に監視して条件を満たした時にアクションを起こす事は出来ます。
あ、こちらの画像は行番号映って居ませんでしたね、すみません。
4行目で間違いないので、変更して試してみたいと思います。
何度も回答を頂き、ありがとうございます。
No.1
- 回答日時:
下記コード全てを該当のシートモジュールに
Microsoft Outlook XX.X Object Libraryの参照設定 必須です。
Dim flg(1 To 8)
Sub btn()
Dim celAdrs As String
celAdrs = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address(0, 0)
If Range(celAdrs).Offset(-1).Value <= Range(celAdrs).Offset(-1, -1).Value Then
Select Case celAdrs
Case "AJ3"
flg(1) = 0
Case "AN3"
flg(2) = 0
Case "AR"
flg(3) = 0
Case "AV3"
flg(4) = 0
Case "AZ3"
flg(5) = 0
Case "BD3"
flg(6) = 0
Case "BH3"
flg(7) = 0
Case "BL3"
flg(8) = 0
End Select
Range(celAdrs).Offset(-1).Interior.Color = RGB(200, 200, 255)
Else
Select Case celAdrs
Case "AJ3"
flg(1) = 1
Case "AN3"
flg(2) = 1
Case "AR"
flg(3) = 1
Case "AV3"
flg(4) = 1
Case "AZ3"
flg(5) = 1
Case "BD3"
flg(6) = 1
Case "BH3"
flg(7) = 1
Case "BL3"
flg(8) = 1
End Select
Range(celAdrs).Offset(-1).Interior.Color = RGB(255, 200, 200)
End If
End Sub
Private Sub Worksheet_Calculate()
Dim i As Integer, n As Integer: n = 1
For i = 36 To 64 Step 4
If flg(n) = 0 Then
If Cells(2, i).Offset(, -1) < Cells(2, i) Then
MsgBox (Cells(2, i).Address(0, 0) & " :became_large"): flg(n) = 2
Cells(2, i).Interior.Color = xlNone
Call OLK_Mail
End If
End If
If flg(n) = 1 Then
If Cells(2, i).Offset(, -1) > Cells(2, i) Then
MsgBox (Cells(2, i).Address(0, 0) & " :became_small"): flg(n) = 2
Cells(2, i).Interior.Color = xlNone
Call OLK_Mail
End If
End If
n = n + 1
Next
End Sub
Sub OLK_Mail()
'Microsoft Outlook XX.X Object Libraryの参照設定 必須
Dim outlookObj As Outlook.Application
Dim mailObj As Outlook.MailItem
Set outlookObj = New Outlook.Application
Set mailObj = outlookObj.CreateItem(olMailItem)
With mailObj
.To = "" 'メール宛先
.CC = "" 'メールCC
.Subject = "" 'メール件名
.Body = "" 'メール本文
.BodyFormat = olFormatPlain 'メール形式に設定
.Display '表示
.Send ’送信
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) マクロで謎の現象が起きていて困ってます。 エクセルで作ったボタンを押すとマクロが動いて処理をしてくれ 3 2023/06/22 17:28
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
一度聞いたかも知れないのをっ...
-
通帳口座番号 メールで送っても...
-
メール送信すると以下のような...
-
送信エラーの際、CCには届い...
-
お祝い金を徴収するメールの書き方
-
メールの書き方 保護者から先生へ
-
メールの一斉送信で非対象者に...
-
相手にメールを送信したら、 Ea...
-
自分のアドレスにCCを送信す...
-
エクセルを更新したらメールが...
-
報告メールを送る女性の心理
-
PCでThunderbirdのメールを使っ...
-
送信しても『Mail System Error...
-
Thunderbirdの登録名について
-
空メールって何も書かなくてい...
-
失礼な文とは分からず、先生に...
-
"***@***.ocn.ne.jp"の"@***"は...
-
大学の先生からのメールに、夜...
-
iPhoneのメールについて教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
一度聞いたかも知れないのをっ...
-
通帳口座番号 メールで送っても...
-
送信エラーの際、CCには届い...
-
メール送信すると以下のような...
-
メールの一斉送信で非対象者に...
-
お祝い金を徴収するメールの書き方
-
メールの書き方 保護者から先生へ
-
送信しても『Mail System Error...
-
報告メールを送る女性の心理
-
失礼な文とは分からず、先生に...
-
PCでThunderbirdのメールを使っ...
-
エクセルを更新したらメールが...
-
"***@***.ocn.ne.jp"の"@***"は...
-
空メールって何も書かなくてい...
-
自分のアドレスにCCを送信す...
-
相手にメールを送信したら、 Ea...
-
iphoneからメールで写真を送付...
-
大学の先生からのメールに、夜...
-
Winmail.dat ファイルが開けない
おすすめ情報
こんにちは、遅くなりすみません。
試して見ましたまずは3行目だったものを4行目に書き換えました。
以下のようなものです。
Case "AJ4"
flg(1) = 0
Case "AJ4"
flg(1) = 1
ARのみ行番号が指定されていない様でしたので、同じように4を追記しておきました。
良かったでしょうか?
その後オブジェクトライブラリの参照設定を行いました。
この後、VBEの画面を閉じたのですが、閉じた瞬間に、AJ2 become largeのmsgboxが出てOKを押すとコンパイルエラーが出ます。
内容は、ユーザー定義型は定義されていません。
行は outlookObj As Outlook.Application の部分がブルーアウトしています。
これはどこが悪かったのでしょうか。
よろしくお願いいたします。