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

マクロ講座21回 InputBoxで体重を聞いてみる
ユーザーから情報を受取るInputBox

InputBox関数 Excel 2013 マクロ講座 21回

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

ダイアログボックスを表示してユーザーからの情報を文字列として入力してもらう便利な関数がInputBox関数です。
今回はInputBox関数の使い方をマスターして、ユーザーの標準体重を算出したり、BMIを教えるマクロを作りましょう。
(サンプルファイルは、こちらから 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
    

ユーザーのBMIを教えるマクロ

こちらは応用として、ユーザーから身長と体重を入力してもらって、BMIを返すマクロになります。
Sub BMIを教える()
    Dim s As Variant, w As Variant, h As Long
    s = InputBox("あなたの身長は何cmですか?", "あなたの身長", 160)
    w = InputBox("ありがとうございます。続いて体重を教えてください?", "あなたの体重", 60)
    If IsNumeric(s) And IsNumeric(w) Then
      h = Round((w / (s / 100) ^ 2), 1)
      MsgBox "あなたのBMIは" & h & "kgです"
    Else
      MsgBox "まじめに入力してください。もう、終わります。"
    End If
End Sub