電卓作成時の小数点が2つ、エラー


まとば  2007-03-30 01:04:50  No: 98436

電卓で、小数点を二度クリックした場合、
エラーが出てしまいます。

対策として、電卓の"."がすでにあるとき
その処理をしないで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、つまり二つ目の数値の変数に代入します。

押されたキーが数字キーであることを覚えておきます。


特攻隊長まるるう  2007-03-30 09:14:43  No: 98437

入力されたキーとして、intKeyに-1が入っていれば、
  camma が True なら既に入力されているので追加しないで終了
  camma が False ならまだ入力されていないので追加して camma を True にして終了


…どこがうまくいかないですか?
 # 質問とは関係ないですが、カンマのスペルは comma です。


まとば  2007-03-30 14:16:26  No: 98438

ありがとうございます。
条件分岐がうまくいきません。
よろしければ添削お願いいたします。
 
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


 2007-03-30 15:00:29  No: 98439

>If txtDisplay.Text = "0" Then

ElseIf txtDisplay.Text = "0" Then


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加