EXCEL VBA MsgBoxの応用編[メッセージボックス] (テクニック)

 

EXCEL VBA MsgBoxの応用編[メッセージボックス] (テクニック)

 

●はじめに

EXCEL VBA内で多く利用されるMsgbox関数ですが、今回、メッセージボックスの利用方法の応用編という事で、様々な形で利用されているMsgboxの利用方法をサンプルプログラムを交えて説明して行きたいと思います。メッセージボックスと言えば、ダイアログボックスが表示されて、ユーザーにメッセージを表示させたり、メッセージに対して、「はい」・「いいえ」・「キャンセル」と言った判定を選択してもらう時に利用する場合などがあります。それでは、サンプルプログラムを交えて説明いたします。

●Msgbox関数の基礎については、下記のURLを参照して下さい。

●Msgbox応用については、下記のURLを参照して下さい。

 

 

 

セルの値とアイコンをメッセージボックスで表示する (Msgbox関数)

 

●プログラム説明 (サンプルプログラム①)

下記のサンプルプログラムは、セルの値とアイコンをメッセージボックスに表示するサンプルプログラムです。A列にセルの値を取得して「支店名」として表示します。B列には、メッセージボックスと一緒に表示する事の出来るアイコン番号を取得して、アイコンと支店名をメッセージボックスに表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、A列の「支店名」とB列のアイコン番号との組み合わせで、メッセージボックスが表示されました。
(画面クリックして拡大)

 

 

 

 

セルの値をメッセージボックスで複数表示する「結合」 (Msgbox関数)

 

●プログラム説明 (サンプルプログラム②)

下記のサンプルプログラムは、A列・B列・C列のセル内容を結合してメッセージボックスに表示します。
【処理内容】
①A列「支店名」・B列「担当者」・C列「売上金額」のセル内容を2行目から6行目まで繰り返します。
②セル内容をメッセージボックスに表示すると同時に、売上金額を集計します。
③最後に、売上金額の集計結果をメッセージボックスで表示します。

 

 

'
'******** 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
'

 

 

●実行前~実行後 ※プログラム実行後、A列の「支店名」とB列の「担当者」・C列の「売上金額」のセル内容がメッセージボックスに順番に表示されました。最後に、各売上金額の合計額が表示されました。
(画面クリックして拡大)

 

 

 

ワークシート名をメッセージボックスに表示します。【改行】(Msgbox関数)

 

 

●プログラム説明 (サンプルプログラム③)

下記のサンプルプログラムは、ワークシート名をメッセージボックスに表示するサンプルプログラムです。


【改行の説明】
●下記のサンプルプログラム内に「 vbCrLf 」を追加する事により、メッセージボックス内で改行する事ができます。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、現在開いているのアクティブブックのワークシート名をメッセージボックスに表示する事が出来ました。
(画面クリックして拡大)

 

 

 

 

処理条件により、メッセージボックスアイコンを区別して表示する

 

●プログラム説明 (サンプルプログラム④)

下記のサンプルプログラムは、売上金額に応じてメッセージボックスアイコンを区別して表示します。各担当者の売上金額を元に下図の売上金範囲により、画像アイコンを選択します。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、
(画面クリックして拡大)

 

 

 

 

メッセージボックスを利用して、アンケート調査及びアンケートを回答する

 

●プログラム説明 (サンプルプログラム⑤)

下記のサンプルプログラムは、メッセージボックスを利用して、B列に掲載している内容でアンケート調査を行い、C列にメッセージボックスで回答した内容を記入するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、メッセージボックスにB列のアンケート内容を表示して、そのアンケート結果をC列に順番に記入されました。
(画面クリックして拡大)

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
●Msgbox関数の基礎については、下記のURLを参照して下さい。

 

AKIRA