質問: "0" End Sub Private Sub Label1_Click(sender As Object, e As EventArgs) Handles LblAnser.Click End Sub End Class ### 試したこと ネットでの検索(4時間) ### 補足情報(言語/FW/ツール等のバージョンなど) IDE:VS2015
回答: まず質問に対する回答ですが、これは他の方も書かれている通り、単純に=ボタンクリック処理の中で最初に直前の入力(beforeIn)を判定し、四則演算であれば処理を抜けるようにしてあげればいいと思います。 ``` Private Sub BtnEqual_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnEqual.Click Try If (beforeIn = "+" Or beforeIn = "-" Or beforeIn = "*" Or beforeIn = "/") Then Exit Sub If beforeIn >= "0" And beforeIn <= "9" Then '・・・以下略 ``` その他のアドバイスとして、同じような処理を何度も記述しているので、やりたいこと以上にコードが長く、メンテナンス性も悪くなっていると思います。 参考までに、例えば数字ボタン(0-9)のクリックイベントであれば以下のようにまとめられます。 ※事前に各ボタンのプロパティ設定でTagプロパティに0-9の値をセットしておき、クリック時にその値から処理を分岐します ``` ' 数字ボタンクリック処理 Private Sub BtnNumber_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, _ Button4.Click, Button5.Click, Button6.Click, _ Button7.Click, Button8.Click, Button9.Click, BtnZero.Click Dim strNum As String strNum = Directcast(sender, Button).Tag 'ボタンのTagプロパティから押したボタンの数値を取得する If beforeIn >= "0" And beforeIn <= "9" Then ' 直前の押されたのが数字ボタンのとき ' かつ、8桁未満の数値が入力されているとき If LblAnser.Text.Length < 8 Then ' 現在値の後に追記 LblAnser.Text &= strNum ' 値をセットしたら前回値として保管 beforeIn = strNum End If Else ' 直前の押されたのが数字以外のボタンのとき ' 値にセット LblAnser.Text = strNum ' 値をセットしたら前回値として保管 beforeIn = strNum End If End Sub ``` 四則演算ボタンなども同様で、他にもたくさん簡潔にできる部分があると思います。 コードを整理すると問題点も見つけやすくなりますので頑張ってみてください。