EXCEL VBA MsgBoxの応用編[メッセージボックス] (テクニック)
EXCEL VBA MsgBoxの応用編[メッセージボックス] (テクニック)
EXCEL VBA内で多く利用されるMsgbox関数ですが、今回、メッセージボックスの利用方法の応用編という事で、様々な形で利用されているMsgboxの利用方法をサンプルプログラムを交えて説明して行きたいと思います。メッセージボックスと言えば、ダイアログボックスが表示されて、ユーザーにメッセージを表示させたり、メッセージに対して、「はい」・「いいえ」・「キャンセル」と言った判定を選択してもらう時に利用する場合などがあります。それでは、サンプルプログラムを交えて説明いたします。
●Msgbox関数の基礎については、下記のURLを参照して下さい。
●Msgbox応用については、下記のURLを参照して下さい。
セルの値とアイコンをメッセージボックスで表示する (Msgbox関数)
下記のサンプルプログラムは、セルの値とアイコンをメッセージボックスに表示するサンプルプログラムです。A列にセルの値を取得して「支店名」として表示します。B列には、メッセージボックスと一緒に表示する事の出来るアイコン番号を取得して、アイコンと支店名をメッセージボックスに表示するサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
' '******** AKIRA55.COM ******* https://akira55.com/msgBox02/ ' Sub Msgbox01()'セルの値とアイコンを表示する Dim I, B As Long For I = 2 To 6 '2行目~6行目まで繰り返します B = Range("B" & I) 'アイコン番号を取得 MsgBox Range("A" & I) & "支店", B 'メッセージボックスにA列の「支店名」を「アイコン」を表示します。 Next I End Sub ' |
(画面クリックして拡大)
セルの値をメッセージボックスで複数表示する「結合」 (Msgbox関数)
下記のサンプルプログラムは、A列・B列・C列のセル内容を結合してメッセージボックスに表示します。
【処理内容】
①A列「支店名」・B列「担当者」・C列「売上金額」のセル内容を2行目から6行目まで繰り返します。
②セル内容をメッセージボックスに表示すると同時に、売上金額を集計します。
③最後に、売上金額の集計結果をメッセージボックスで表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
' '******** AKIRA55.COM ******* https://akira55.com/msgBox02/ ' Sub Msgbox02() 'セル内容を結合してメッセージボックスに表示する Dim I, GOKEI As Long Dim Mes As String For I = 2 To 6 '2行目~6行目まで繰り返します Mes = Range("A" & I) & "支店の" & Range("B" & I) & "さんの売り上げは、" & Format(Range("C" & I), "#,###") & "円です。" GOKEI = GOKEI + Range("C" & I) '売上の合計金額を集計します。 MsgBox Mes Next I MsgBox "売上の合計は、" & Format(GOKEI, "#,###") & "円です。" End Sub ' |
(画面クリックして拡大)
ワークシート名をメッセージボックスに表示します。【改行】(Msgbox関数)
下記のサンプルプログラムは、ワークシート名をメッセージボックスに表示するサンプルプログラムです。
【改行の説明】
●下記のサンプルプログラム内に「 vbCrLf 」を追加する事により、メッセージボックス内で改行する事ができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' '******** AKIRA55.COM ******* https://akira55.com/msgBox02/ ' Sub Msgbox03() 'ワークシート名をメッセージボックスに表示する Dim Ws As Worksheet Dim Msg As String Msg = "全てのワークシート数は、" & Worksheets.Count & "枚です。" & vbCrLf For Each Ws In Worksheets '全てのワークシートを対象(繰り返す) Msg = Msg + Ws.Name & vbCrLf 'ワークシート名を次々に結合する。「vbCrLf」は、改行 Next Ws MsgBox Msg & "以上です" End Sub ' |
(画面クリックして拡大)
処理条件により、メッセージボックスアイコンを区別して表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
' '******** AKIRA55.COM ******* https://akira55.com/msgBox02/ ' Sub Msgbox04() 'ワークシート名をメッセージボックスに表示する Dim I, ICon As Long For I = 2 To 6 '2行目~6行目まで繰り返します Select Case Range("C" & I) Case Is >= 200000 ICon = 48 Case Is >= 150000 ICon = 64 Case Is >= 100000 ICon = 32 Case Else ICon = 16 End Select MsgBox Range("A" & I) & "支店の" & Range("B" & I) & "さんの売り上げは、" & Format(Range("C" & I), "#,###") & "円です。", ICon Next I End Sub ' |
(画面クリックして拡大)
メッセージボックスを利用して、アンケート調査及びアンケートを回答する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
' '******** AKIRA55.COM ******* https://akira55.com/msgBox02/ ' Sub Msgbox05() 'メッセージボックスを利用してアンケートに解答する。 Dim I As Long Dim Retmsg As Integer For I = 2 To 6 Retmsg = MsgBox(Range("B" & I), vbYesNo) 'B列のアンケート内容を表示(Yes/NO) If Retmsg = 6 Then Range("C" & I) = "はい" 'Yes C列の結果に記入 Else Range("C" & I) = "いいえ" 'No C列の結果に記入 End If Next I End Sub ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
●Msgbox関数の基礎については、下記のURLを参照して下さい。