2014-01-16

対話型プログラム

条件分岐

場合分けのためのIF文は重要ですので、今週もIF文の使い方を中心にします。

InputBox

昨年は1から100までの合計を計算しましたが、マクロを実行する時に、幾つまでの合計を計算するか尋ねるマクロを書いてみましょう。

Sub 対話型合計()
n = InputBox("幾つまでの和を計算しますか")
'ここに1からnまでの合計を計算してwaという変数に代入するプログラムを書いてください
cells(1,1)=wa
End Sub

条件分岐

先ほどのマクロを、正の数が入力された時だけ計算するように書き換えましょう。
このような条件判断にはIf文を使います。
If文の書き方は、

If 条件 Then
 条件が成り立つときに実行する文
End If

でしたので、

Sub 対話型合計()
n = InputBox("幾つまでの和を計算しますか")
If n > 0 Then
 'ここに1からnまでの合計を計算してwaという変数に代入するプログラムを書いてください
 cells(1,1)=wa
End If
End Sub

と書きます。

数字の判定

先ほどのInputBoxに、数字以外のものを入れると計算できません。
だから、単に0より大きいかどうかだけでなく、数字かどうかも含めて判定しましょう。
nが数字かどうかは

IsNumeric(n)

で判断します。
If文で、二つの条件が共に成り立つことは And で表すので、If文は

If IsNumeric(n) And n > 0 Then

となります。

Else文

条件が成り立たなかった場合に実行する文がある時には

If 条件 Then
 条件が成り立つときに実行する文
Else
 条件が成り立たなかったときに実行する文
End If

のように書きます。

練習

  • 正の数が入力されたらその数までの和を計算して表示する
  • 正の数が入力されなかったら、「正の数を入力してください」というメッセージを表示する
このようなマクロを書いてください。
メッセージを表示するには

MsgBox ("正の数を入力してください")

と書きます。

MsgBoxの使い方

MsgBox( )の(括弧)の中に" "で囲まれた文字を書くと、その文字が表示されます。

MsgBox ("正の数を入力してください")

" "なしで変数の名前を書くと、その変数の値が表示されます。
例えば、和を計算するプログラムで
Cells(1, 1) = wa
の代わりに
MsgBox(wa)
と書いてみてください。

MsgBoxによる質問

MsgBoxは、単に文字を表示するだけでなく、OK、キャンセルなど、どのボタンがクリックされたかを知ることも出来ます。
試しに

x = MsgBox("あなたはお昼ごはんを食べましたか", 4, "質問")
If x = 6 Then
  MsgBox ("午後も元気ですね")
Else
  MsgBox ("ちゃんと食べてくださいね")
End If

を実行して、質問に答えてください。

使い方一覧

aとかbの文字は必要に応じて書き換えてください。

x = MsgBox("a", 0, "b")

x = MsgBox("a", 1, "b")

OKをクリックするとxに1が代入され、キャンセルをクリックするとxに2が代入されます。

x = MsgBox("a", 1, "b")
MsgBox (x)

を実行して、xの値を確かめてください。

他にも、次のようなメッセージボックスがあります。

x = MsgBox("a", 2, "b")

x = MsgBox("a", 3, "b")

x = MsgBox("a", 4, "b")

x = MsgBox("a", 5, "b")

クリックしたボタンとxに代入される値の関係は次のようになっています。

1OK
2キャンセル
3中止
4再試行
5無視
6はい
7いいえ

練習問題

この流れ図をマクロに書いてください。

0 件のコメント: