• ベストアンサー

【エクセルVBA】メール送信前にメッセージボックスの表示をしたい

エクセルのファイルにコマンドボタンがあります。 このコマンドボタンをクリックすると、 ○○○@×××.jpにメール送信するようになっています。 その際、件名は「記入完了」となっており、本文はありません。 私がしたいのは、このままではボタンをクリックすると すぐにメールが送信されてしまうので、 ボタンをクリック後、まず 「メールを送信します」 というメッセージボックスを表示させて そのメッセージボックスにある「OK」ボタンをクリックすると メールが送信されるという仕組みにしたいです。 この場合、 Private Sub CommandButton1_Click() と End Sub の間にどのようなプログラミングをするべきでしょうか。 入力すべきものを具体的に教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

sykt1217様の回答で答えが出ているのですが、具体的にということで細くします。 ■Noを判定する場合(Bat条件が多い場合はこちらをお奨めします。) --------------------------------------------------------------------------------------- If (MsgBox("送信しますか?", vbInformation + vbYesNo, "送信確認") = vbNo) Then Exit Sub End If '以下に送信処理を書く --------------------------------------------------------------------------------------- ■Yesを判定する場合(判定が1つだけの場合はわかりやすさからこちらをお奨めします。) --------------------------------------------------------------------------------------- If (MsgBox("送信しますか?", vbInformation + vbYesNo, "送信確認") = vbYes) Then '以下に送信処理を書く End If --------------------------------------------------------------------------------------- ※後者は条件が多くなると階層が深くなり見難くなります。 書き方は好みです。 見やすいと思う方を選んで下さい。

hirosinx
質問者

補足

回答ありがとうございます。 sykt1217様にも、書かせて頂いたことなのですが、 「いいえ」を選択した場合メール送信しないようにするには どのようにコードを入力するべきでしょうか。 できるだけ具体的に回答していただけると助かります。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.5

kazuhisa01さんの書き方を日本語に訳せば 「もしメッセージボックス『送信しますか?』で『いいえ(キャンセル)』が押されたら、処理はしないで終了」 ということになります。 kazuhisa01さんの構文通りに書けばステートメント(sub~end sub)は終了するはずです。 yyr446さんの書き方を訳せば 「もしメッセージボックス『送信しますか?』で『はい』が押された【時だけ】送信処理を走らせる」 ということになります。 >End If >'以下に送信しない処理を書く >end sub の部分送信しない処理=送信する場合でも走らせたい共通的な処理である必要がある以外は、お二方の回答にさほど差はありません。 (※送信処理内でステートメントから抜ける処理を入れているなら話は別ですが。) 「出来るだけ具体的に」とありますが、質問に対する回答としては皆さんが回答して下さっている通りです。 メール送信処理も含めた話をしれおられるなら、ご自分で書かれたメール送信処理のロジックも載せて頂かないと、肉付けのしようがありません。(メール関連用関数も多数ありますし、処理や書き方も人それぞれ違いますから) 素直に受取った回答をするならば >「いいえ」を選択した場合メール送信しないようにするには 「はい」の場合の制御をするのみで、「いいえ」の処理は何も書く必要はありません。

すると、全ての回答が全文表示されます。
回答No.4

悩みましたが一応書きます。 質問に対する回答を見るだけで理解できるのであれば質問しなくてもわかると思います。 回答してもらった内容を少なくともやってみましたか? それでもわからないのであれば記述したコードを載せて詳しくするべきでは? 回答してくれる人は自分が思っている完璧な物を返してくれる訳ではありません。 ということで、どのようにコードしてどこがわからないのかを明確にしてください。

すると、全ての回答が全文表示されます。
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

No2の人が具体的にしめしてるでしょ。 Private Sub CommandButton1_Click() If (MsgBox("送信しますか?", vbInformation + vbYesNo, "送信確認") = vbYes) Then '以下に送信処理を書く End If '以下に送信しない処理を書く end sub ですよ。 送信しない処理は無いのでしょ。

すると、全ての回答が全文表示されます。
  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.1

「OK」と「キャンセル」があるということですよね。 JavaSctiptでいうとConfirmみたいなものでしょうか。 それであれば 「MsgBox "メールを送信しても宜しいですか?", vbYesNo」 これで「はい」「いいえ」で 「MsgBox "メールを送信しても宜しいですか?", vbOKCancel」 これで「OK」「キャンセル」です。

hirosinx
質問者

補足

素早い対応ありがとうございます。 私の説明不足があったので、さらに質問させていただきます。 確かに回答の通り、 「MsgBox "メールを送信しても宜しいですか?", vbOKCancel」 を入力すると メッセージボックスがでますが、この場合 「OK」と「キャンセル」のどちらを選択してもメールが送信されてしまいます。「キャンセル」を選択した場合はメールが送信されないようにするにはどのようにコードを入力するべきでしょうか。 できれば入力すべきものをすべて回答してもらえると有難いです。

すると、全ての回答が全文表示されます。

関連するQ&A