投稿者 mmmzk  (社会人) 投稿日時 2023/9/5 11:53:05
Visual Studio2019(VB.net)のフォームアプリで電卓作成しています。
四則演算ができ、小数点の計算にも対応するもの
(VBを始めて約2週間ド初心者)


表示や計算自体に特に問題はありませんでしたが、
小数点ボタンを連続で2回クリックすると、
下から3行目のCDbl(TextBox1.Text)部分にエラーが出てしまいます。

【エラー内容】
'String "1.." から型 'Double' への変換は無効です
↑入力した1..が数値と認められず、数値に変換して代入できない

エラーの意味は理解できたつもりですが、
対処するコードをどう書けばいいか悩んでいます。

具体的な対処法としては、
小数点がクリックされたタイミングを起点にし、
小数点を2回クリックされた場合に対して処理をする
というのがいいかと思い色々試しましたがうまくいきません。

ご助言いただけますと幸いです。
以下が現状作成しているコードになります。



    '数字・小数点ボタンクリック時処理
    Private Sub CM_Num(intKey As Integer)

        If iType = OP_ERROR Then Exit Sub

        If lastKey <> KEY_NUMBER Then '直前に押されたキーが数字以外(演算子キー押した)
            TextBox1.Text = "0" '表示値を0に

        End If


        If intKey = -1 Then  '今回入力値が小数点である
            TextBox1.Text = TextBox1.Text & "." '現在の表示値に小数点を追加
        Else
            If TextBox1.Text = "0" Then '元から0の場合
                    TextBox1.Text = CStr(intKey) '今回入力値を表示する
                Else
                    TextBox1.Text = TextBox1.Text & CStr(intKey) 'それ以外(0-9)の場合は入力値を表示する
                End If


            End If

        cNum = CDbl(TextBox1.Text) '数値に変換して代入
        lastKey = KEY_NUMBER '直前に押された数字キーを記憶

    End Sub