Программирование калькулятора. VBA

компьютеры программирование VBA

При вводе значения в текстбокс там уже есть результат предыдущего вычисления. Нужно чтобы значение в текстбокс в момент ввода нового вычисления автоматически сменялось на вводимое значение. Пока получается, к примеру, что если результат в текстбокс = 3, и здесь кликнуть на CommandButton1 то получится 31.
Вот мой код, если что:
Dim val1, val2 As Double
Dim operate As String
Private Sub Clear_Click()
okno.Value = ""
End Sub
Private Sub CommandButton1_Click()
okno.Value = okno.Value + CommandButton1.Caption
End Sub
Private Sub CommandButton2_Click()
okno.Value = okno.Value + CommandButton2.Caption
End Sub
Private Sub CommandButton3_Click()
okno.Value = okno.Value + CommandButton3.Caption
End Sub
Private Sub CommandButton4_Click()
okno.Value = okno.Value + CommandButton4.Caption
End Sub
Private Sub CommandButton5_Click()
okno.Value = okno.Value + CommandButton5.Caption
End Sub
Private Sub CommandButton6_Click()
okno.Value = okno.Value + CommandButton6.Caption
End Sub
Private Sub CommandButton7_Click()
okno.Value = okno.Value + CommandButton7.Caption
End Sub
Private Sub CommandButton8_Click()
okno.Value = okno.Value + CommandButton8.Caption
End Sub
Private Sub CommandButton9_Click()
okno.Value = okno.Value + CommandButton9.Caption
End Sub
Private Sub CommandButton10_Click()
okno.Value = okno.Value + "0"
End Sub
Private Sub division_of_1_Click()
val1 = okno.Value
If val1 = 0 Then
Result = "Division by 0 is barred"
Else
Result = 1 / val1
End If
Calc.okno.Value = Result
End Sub
Private Sub dot_Click()
okno.Value = okno.Value + ","
End Sub
Private Sub minus_Click()
operate = "-"
val1 = Calc.okno.Value
Calc.okno.Value = ""
End Sub
Private Sub percentage_Click()
operate = "%"
val1 = Calc.okno.Value
Calc.okno.Value = ""
End Sub
Private Sub plus_Click()
operate = "+"
val1 = Calc.okno.Value
Calc.okno.Value = ""
End Sub
Private Sub multiply_Click()
operate = "*"
val1 = Calc.okno.Value
Calc.okno.Value = ""
End Sub
Private Sub divide_Click()
operate = "/"
val1 = Calc.okno.Value
Calc.okno.Value = ""
End Sub
Private Sub sqrt_Click()
val1 = Calc.okno.Value
If val1 < 0 Then
Result = "Violation of sqrt computing"
Else
Result = val1 ^ (1 / 2)
End If
Calc.okno.Value = Result
End Sub
Private Sub square_Click()
operate = "x^2"
val1 = okno.Value
Result = val1 * val1
Calc.okno.Value = Result
End Sub
Private Sub equal_Click()
val2 = Calc.okno.Value
Select Case operate
Case "-"
Result = val1 - val2
Case "+"
Result = val1 + val2
Case "*"
Result = val1 * val2
Case "/"
If val2 = 0 Then
Result = "Division by 0 is barred"
Else
Result = val1 / val2
End If
Case "%"
If val2 = "0" Then
Result = "Division violation"
Else
Result = (val1 / val2) * 100
End If
Case "x^2"
Result = val1 * val1
End Select
Calc.okno.Value = Result
End Sub
Ответы:
Ну во-первых, код ужасен :) Цифровые кнопки - логичнее обслуживать в одном обработчике, например через case / of. Во-вторых, после каждого клика - нужно сохранять значения ввода в переменную, затем очищать ввод и принимать новое значение
Гостям не помогаю. Зарегистрируйся и повтори вопрос


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.