0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VBA_MsgBox_1.0

Last updated at Posted at 2023-09-05

1.はじめに
2.さっそく
3.イメージ
4.つかうもの
5.サンプル
6.さいごに

はじめに

はじめての投稿になります。
これまで使用してきたRPA(BluePrism)やVBAのあれこれ、これから学ぶあれこれを
いざという時やおさらいとして書き留めたいと思います。

さっそく

Excelマクロ実行時に(個人的に)よく使用しているものから・・・

例えば下記のような、
総務省統計局からダウンロードしたとあるファイルからデータを抽出、転記する
Excelマクロファイルがあるとして
2023090501ed_qt.png
赤枠で囲ってあるのは処理の実行ボタンです。
誤ってボタンを押してしまった場合、ボタン押下後すぐにメイン処理が走ってしまうと
処理の内容によっては、その後のリカバリが面倒なことになってしまいます。
マクロファイルを使用するのが自分以外のユーザーの場合、より有り得ると思います。


イメージ

ですのでメッセージボックスを表示して誤操作を防ぎます。
今回の場合、結果のイメージはこんな感じです。
2023090503_qt.png
OKの場合は処理を実行、キャンセルの場合は処理を中断します。

つかうもの

使用するのはMsgBox関数です。
構文は下記のとおり。

MsgBox prompt, [ buttons, ] [ title, ] [ helpfile, context ]

prompt:
この第一引数[prompt]のみ必須。
メッセージボックス上で表示させたい文章部分になります。
vbcrlf等で改行が可能です。

buttons:
[prompt]で指定した文章下部のボタンについての指定です。
ボタンの種類を指定しなかった場合、既定値の「vbOKOnly」となります。
また、文章左側のアイコンもここで指定できます。

定数部分は値と対応しています。

定数 説明
vbOKOnly 0 OKのみ表示
vbOKCancel 1 OKとCancelを表示
  ︙     ︙

(引数の設定等についてはMsgBox関数(Microsoft.com)にズラリと並んでいます。)

title:
メッセージボックス左上に表示する文字の指定ができます。

helpfile:
ヘルプファイルのフルパスを指定する場合に使用するそうです。
(使用したことがなくこちらのサイトにお世話になりました・・・)
[helpfile]の指定がある場合、[context]の指定がセットとなります。

context:
[helpfile]のファイル内の表示したい項目の数値(コンテキスト番号)を指定。

また、戻り値がある場合は引数を括弧で囲います。

check = MsgBox("処理を実行しますか?", vbQuestion + vbOKCancel, "確認")

サンプル

先程の実行ボタン押下後の処理ですが、
私はこんな感じでMsgBox関数を使用しています。
メッセージボックス内のどのボタンを押したかによって処理を分岐させています。

'----------------------------------------------------------------------
'処理:btnExec
'概要:ボタン「実行」押下時、メッセージボックスを表示
'   OKの場合、メイン処理を実行。キャンセルの場合、処理を中断
'作成:2023/09/05 hogehoge
'----------------------------------------------------------------------
Sub btnExec()
    '変数定義
    Dim LintRet         As Integer
    Dim LstrMsgPrompt   As String
    
    'ボタン「処理実行」押下時判定
    If vbOK = MsgBox("処理を実行しますか?", vbQuestion + vbOKCancel, "確認") Then
        'ボタン「OK」押下時、関数「メイン」実行
        LintRet = fncMain(LintRet, LstrMsgPrompt)
    Else
        'ボタン「キャンセル」押下時、処理中断
        MsgBox "処理を中断します。", vbExclamation + vbOKOnly, "確認"
        Exit Sub
    End If
    
    '処理終了
    If 0 = LintRet Then
        '正常終了
        MsgBox "処理が正常終了しました。", vbInformation + vbOKOnly, "確認"
    Else
        '異常終了
        MsgBox "処理が異常終了しました。" & vbCrLf _
                & LstrMsgPrompt, _
                vbCritical + vbOKOnly, "確認"
    End If
End Sub

さいごに

最初はちょっとした備忘録のようになってしまいましたが、
今後仕事で使用するBluePrismについても発信できたらと思います。
マークダウン記法にも慣れないと・・・

エンジニアファーストの会社 株式会社CRE-CO

参考サイト
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/msgbox-function
https://jovba.com/2023/04/15/msgbox_01/#helpfile

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?