電卓で、小数点を二度クリックした場合、
エラーが出てしまいます。
対策として、電卓の"."がすでにあるとき
その処理をしないでexit subで抜けるようにしたいのですが、
うまくいきません。
小数点用のboolean型の変数を宣言し(camma)そこからif文に
どう組み込んでいけばよいのかわかりません。
助言などよろしくお願いいたします。
サブプロシージャ intkeyは引数です。
If intKey = -1 Then
txtDisplay.Text = txtDisplay.Text & "."
Else
If txtDisplay.Text = "0" Then
txtDisplay.Text = CStr(intKey)
Else
txtDisplay.Text = txtDisplay.Text & CStr(intKey)
End If
End If
dblCurrentNumber = CDbl(txtDisplay.Text)
intLastKey = KEY_NUMBER
入力されたキーとして、intKeyに-1が入っていれば、今回のキーは小数点であったことになります(cmdPeriod_Clickプロシージャで、OnNumber(-1)としているので)。そこで、現在の電卓の表示に、"."をつなげます。
intKeyが-1以外の場合には、0〜9の数字が押されたことになります。この時、元の表示が 0であった場合は、今回のキーだけを表示します。つまり、元々0であり、今回1を押したとすれば、結果は"01"ではなくて"1"とします。
表示している数値(これは文字列)を数値に変換して、dblCurrentNumber、つまり二つ目の数値の変数に代入します。
押されたキーが数字キーであることを覚えておきます。
入力されたキーとして、intKeyに-1が入っていれば、
camma が True なら既に入力されているので追加しないで終了
camma が False ならまだ入力されていないので追加して camma を True にして終了
…どこがうまくいかないですか?
# 質問とは関係ないですが、カンマのスペルは comma です。
ありがとうございます。
条件分岐がうまくいきません。
よろしければ添削お願いいたします。
If intKey = -1 Then
If comma = True Then Exit Sub
txtDisplay.Text = txtDisplay.Text & "."
comma = True
If txtDisplay.Text = "0" Then
txtDisplay.Text = CStr(intKey)
Else
txtDisplay.Text = txtDisplay.Text & CStr(intKey)
End If
End If
>If txtDisplay.Text = "0" Then
ElseIf txtDisplay.Text = "0" Then
?
| ツイート |
|