Как суммировать два числа с помощью пользовательской формы и вывести их в MsgBox?

Я создал пользовательскую форму с тремя текстовыми полями.

Первое текстовое поле предназначено для ввода первого числа, второе — для ввода второго числа, а последнее — результат.

Я создал кнопку с именем Calculate.

У меня есть этот код для textbox1:

Private Sub TextBox1_Change()
Dim a As Integer
a = Val(TextBox1.Text)
End Sub

и это для textbox2:

Private Sub TextBox2_Change()
Dim b As Integer
b = Val(TextBox2.Text)
End Sub

и у меня есть кнопка, которая показывает результат

Private Sub CommandButton1_Click()
Dim c As Integer
c = a + b
MsgBox (c)
End Sub

Я ввожу 1 для textbox1 и 2 для textbox2, 1+2 будет 3, но в MsgBox я вижу 0. Почему это и как это исправить?


person Inside Man    schedule 28.05.2012    source источник
comment
Что вы пробовали? Простой поиск в Интернете должен подсказать вам, как написать код VBA для этого — StackOverflow больше поможет, когда вы застряли, а не когда вы еще не пытались его закодировать.   -  person aevanko    schedule 28.05.2012
comment
@Issun Я обновил первый пост   -  person Inside Man    schedule 28.05.2012


Ответы (3)


Я бы не стал назначать значения полей переменным (и, если они не являются глобальными переменными, областью действия переменных является рутина, поэтому переменная умрет после того, как sub() для каждого закончится, поэтому, когда кнопка команды событие, переменные больше не действуют), просто ссылайтесь на них напрямую. Просто добавьте это для своей командной кнопки, и она должна выполнять свою работу.

Private Sub CommandButton1_Click()

MsgBox(TextBox1.Value + TextBox2.Value)

End Sub
person aevanko    schedule 28.05.2012
comment
Конечно, вы можете добавить проверку данных, чтобы убедиться, что они являются числами :) Самое замечательное в формах — это возможность считывать значения частей в любое время ^^ - person aevanko; 28.05.2012

объявление переменных должно быть вообще, его не должно быть под Sub...


Dim a As Integer
Dim c As Double
Dim b As Integer

Private Sub CommandButton1_Click()
 c = a + b
 MsgBox (c)

End Sub

Private Sub TextBox1_Change()
a = Val(TextBox1.Text)
End Sub

Private Sub TextBox2_Change()
b = Val(TextBox2.Text)
End Sub
person Macklein reyes    schedule 29.11.2013

person    schedule
comment
Привет, Амит, добро пожаловать в SE! Публикуя ответы, обязательно объясните, что происходит, и преимущества вашего решения. Также посмотрите справку по редактированию, чтобы узнать, как правильно форматировать код. - person Jazzschmidt; 08.04.2019