Excel 2013 マクロ講座 21回

ユーザーから情報を受取るInputBox

ダイアログボックスを表示してユーザーからの情報を文字列として入力してもらう便利な関数がInputBox関数です。

(サンプルファイルは、こちらから 2013マクロ講座21回サンプルデータ

InputBox関数は自由な文字列の情報を取得する

[構文]


引数のPrompt以外は省略可能です。

Defaultは、規定値を指定します。

ダイアログボックスの位置の設定は、引数Xpos、Yposで指定します。

ユーザーに身長を聞いて入力してもらい、標準体重を教えるというマクロを作ります。

InputBox(Prompt, Title) 部分は
InputBox(”メッセージ”, ”ウィンドウタイトル”) なので、
InputBox(”体重教えてよ”, ”平均体重”) みたいな感じでいいでしょう。

変数ですが、
ユーザーの身長を変数に s (sinchyoのs)
計算した標準体重を変数に h (hyoujyunのh)

このようなコードになりました。
Sub BMI()
    Dim s As Double
    Dim h As Double
    s = InputBox("あなたの身長は何cmですか?", "あなたのBMI")
    h = 22 * s * s / 10000
    MsgBox ("あなたの標準体重は" & h & "kgです")
End Sub
    
マクロを実行すると、ダイアログボックスが表示され、
「あなたの身長は何cmですか?」と聞いてきますから、入力してもらいます。


OKをクリックすると、標準体重を表示します。

数値が入力されたら続行、文字なら

上記のコードで、うっかり 文字を入力した場合や[キャンセル]ボタンをクリックした場合は工ラーになってしまいます。
工ラー回避する場合は、まず変数をVariant バリアント型にします。
また数値が、入力されたら処理を続行し、文字列が入力された場合は処理を中止するようにしましょう。 入力されたデータが数値かどうかを調べるために、ここではIsNumeric関数を使用します。
Sub BMI2()
    Dim s As Variant
    Dim h As Variant
    s = InputBox("あなたの身長は何cmですか?", "あなたのBMI")
	If IsNumeric(s) Then
    	h = 22 * s * s / 10000
    MsgBox ("あなたの標準体重は" & h & "kgです")
    End If
End Sub
    
スポンサーリンク
スポンサーリンク