メッセージボックスではいといいえを選択させる方法

Loop繰り返し処理VBA メッセージ

スポンサーリンク


スポンサーリンク


スポンサーリンク

メッセージの表示

ユーザーフォームを使いコマンドボタンを押し、プログラムなどを実行させることが多いですね。

ボタンを押すとメッセージが表示させてユーザーに注意やメッセージを表示させるとこがあるのですが、確認だけならばメッセージを表示させるだけでいいのですが、印刷などの実行させるボタンの時は間違って押してしまたら印刷してしまうので、紙の無駄になってしまいます。

そこで確認メッセージを表示させて、合っていれば「はい」、間違った場合は「いいえ」を押せるようにした方が親切です。

メッセージだけを表示する

エクセルを使っている人に処理を選択させることの必要がなく、ただ単にメッセージだけを表示する場合は下記の通り記述するだけです。

Private Sub CommandButton1_Click()
MsgBox “メッセージ表示”
End Sub

これでユーザーフォーム(UserForm1)のコマンドボタン(CommandButton1)を押すと「メッセージ表示」という画面が表示されます。

メッセージボックス表示

メッセージをはいといいえで処理を振り分ける

実際にはメッセージを表示して「はい」と「いいえ」で処理を振り分けることのできるメッセージを表示することがいいちばん多いです。

実際に使っている例として、ユーザーフォームのコマンドボタンを押すと印刷するのですが、印刷を開始する前にメッセージを表示して「はい」の場合は印刷実行、「いいえ」の場合は印刷開始せずに元のユーザーフォームの画面に戻るようにしています。

はいといいえのメッセージボックス

Private Sub CommandButton1_Click()
Dim msg As VbMsgBoxResult
msg = MsgBox(“印刷しますか?”, Buttons:=vbYesNo)
If msg = vbYes Then
Worksheets(“sheet1”).Activate

Select Case Sheets(“sheet1”).Range(“A100”).Value
Case Is = 1
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Case Is = 2
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
Case Is = 3
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=3, Copies:=1, Collate _
:=True
Case Is = 4
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=4, Copies:=1, Collate _
:=True
Case Is = 5
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=5, Copies:=1, Collate _
:=True
End Select
Unload UserForm1
Sheets(“sheet1”).Select
Range(“A1”).Select
Else
End If
End Sub

こんな感じでコードを書いています。

  1. ユーザーフォームのコマンドボタン(CommandButton1)が押されたら
  2. メッセージは「印刷しますか?」と表示する
  3. メッセージをはいといいえを表示する
  4. もし「はい」が押されたら
  5. ワークシート(sheet1)を選びます
  6. ワークシート(sheet1)のセルA100の値が
  7. 1の時は1ページ目を1枚印刷
  8. 2の時は1ページ目~2ページ目を1枚ずつ印刷
  9. 3の時は1ページ目~3ページ目を1枚ずつ印刷
  10. 4の時は1ページ目~4ページ目を1枚ずつ印刷
  11. 5の時は1ページ目~5ページ目を1枚づつ印刷
  12. 印刷が終わったらユーザーフォーム(UserForm1)を閉じる
  13. ワークシート(sheet1)を選ぶ
  14. セルA1を選ぶ
  15. いいえを押されたらメッセージを閉じるだけ

ちなみにDim msgのmsgは私が勝手につけた名前なので、実際には何でもいいです。

メッセージボックスで使える表示

上記のButtons:=vbYesNoの部分は、ボタンの種類を指定しています。ここでは、vbYesNoとしているので「はい」「いいえ」と表示されています。

この部分を変更することで表示を変えることができます。

「はい」・「いいえ」

定数(vbYesNo)

はいといいえのメッセージボックス
「OK」・「キャンセル」

定数(vbOKCancel)

「再試行」・「キャンセル」

定数(vbRetryCancel)

「はい」・「いいえ」・「キャンセル」

定数(vbYesNoCancel)

メッセージにアイコンをつけることもできます

コードは下記の通りです。

MsgBox “印刷しますか?”, Buttons:=vbYesNo + vbInformation

一番右の+ vbInformationの部分を変更するとお好きなマークにできます。

警告アイコン

定数(vbCritical)

問い合わせアイコン

定数(vbQuestion)

注意アイコン

定数(vbExclamation)

情報アイコン

定数(vbInfomation)

スポンサーリンク

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

タイトルとURLをコピーしました