プログラミング初心者向けのVBA入門講座第19回です。
→過去の入門講座目次はこちら
引き続きよく使われる関数として今回はユーザーと対話をする関数を紹介します。
メッセージを表示する関数(MsgBox関数)
MsgBox関数はいままでの講座でも何度か登場していますが改めて詳しくみていきましょう。
MsgBox(メッセージ, ボタン, タイトル)
引数「メッセージ」はダイアログにメッセージとして表示させる文字列です。省略不可の引数のため必ず指定します。
引数「ボタン」にはダイアログに設置するボタンの種類やメッセージの冒頭に表示させるアイコンを指定します。指定できる主な定数や値には次のようなものがあります。
定数 | 値 | 説明 |
vbOKOnly | 0 | 「OK」ボタンのみを表示します |
vbOKCancel | 1 | 「OK」と「キャンセル」のボタンを表示します |
vbAbortRetryIgnore | 2 | 「中止」「再試行」「無視」のボタンを表示します |
vbYesNoCancel | 3 | 「はい」「いいえ」「キャンセル」のボタンを表示します |
vbYesNo | 4 | 「はい」「いいえ」のボタンを表示します |
vbRetryCancel | 5 | 「再試行」「キャンセル」のボタンを表示します |
vbCritical | 16 | 「致命的なエラー」アイコンを表示します |
vbQuestiion | 32 | 「問い合わせ」アイコンを表示します |
vbExclamation | 48 | 「警告メッセージ」アイコンを表示します |
vbInformation | 64 | 「お知らせ」アイコンを表示します |
ボタンの種類とアイコンなど複数の引数を同時に指定する場合は定数同士を「+」でつなく(例:「vbOKCancel + vbInformation」)か、値の合計値を指定します。

複数の引数を指定する方法としては前回紹介したStrConv関数と同じです。
引数「ボタン」は省略可能で、省略した場合は「vbOKOnly」が指定されたものとなります。(既定値「0」)
引数「タイトル」はダイアログボックスのタイトルバーに表示するタイトルを指定します。この引数も省略可能で省略するとアプリケーション名(「Microsoft Excel」)が表示されます。
MsgBox関数ではユーザーがクリックしたボタンによって戻り値を返します。戻り値は次のようなものがあります。
定数 | 値 | 説明 |
vbOK | 1 | 「OK」ボタンがクリックされた |
vbCancel | 2 | 「キャンセル」ボタンがクリックされた |
vbAbort | 3 | 「中止」ボタンがクリックされた |
vbRetry | 4 | 「再試行」ボタンがクリックされた |
vbIgnore | 5 | 「無視」ボタンがクリックされた |
vbYes | 6 | 「はい」ボタンがクリックされた |
vbNo | 7 | 「いいえ」ボタンがクリックされた |
戻り値は整数値なので戻り値を受け取って変数に格納する場合の変数は整数型(Long型、Integer型)で宣言します。
関数としてこの戻り値を受け取る場合は与える引数を括弧「()」で囲いますが、戻り値を受け取らない場合は引数は括弧で囲いません。
Dim ans As Long
‘//戻り値を受け取る場合は引数を括弧で囲う
ans = MsgBox(“セルA1の値を削除しますか?”, vbYesNo + vbQuestion, “セル削除”)
If ans = vbYes Then
Range(“A1”).ClearContents
‘//戻り値を受け取らない場合は引数は括弧で囲わない
MsgBox “セルA1の値を削除しました”, vbInformation
End If

ClearContentsメソッドはそのセルの数式と値をクリアします。ここではユーザーが「はい」ボタンをクリックしたときにセルA1の数式と値をクリアしています。
ユーザーが入力した文字列を受け取る関数(InputBox関数)
InputBox(メッセージ, タイトル, デフォルト文字列)
引数「メッセージ」はダイアログに表示させるメッセージの文字列を指定します。省略不可の引数のため必ず指定します。
引数「タイトル」はダイアログボックスのタイトルバーに表示するタイトルを指定します。省略可能な引数で省略した場合はアプリケーション名が表示されます。
引数「デフォルト文字列」はユーザーからの入力がない場合の既定文字列としてテキストボックスにあらかじめ表示される文字列です。引数を省略すれば既定のテキストボックスは空の状態になります。
InputBox関数で使用されるダイアログボックスには「OK」と「Cancel」のボタンが設置されています。ユーザーが「OK」ボタンを押すとそのときテキストボックスに表示されている文字列が戻り値として返されます。「Cancel」ボタンを押したときには空欄が返されます。
Dime username As String
username = InputBox(“名前を入力してください”, “名前入力”, “山田 太郎”)
Range(“A1”).Value = username
コメント