Другие языки программирования и технологии

Программирование в VBA. Создание формы

Сделала форму, есть SpinButton и TextBox, связанные между собой. При вводе в текстбокс дробного числа (допустим, 4,6), оно округляется в большую сторону. Если ввести 4,4 - не округляет. Пожскажите, что за функция (свойство) за это отвечает? :(

Private Sub SpinButton1_Change()
SpinButton1.Min = 1
TextBox2.Value = SpinButton1.Value

Private Sub TextBox2_Change()
If TextBox2.Value < 0 Then
MsgBox "Размер годовой ставки не может быть отрицательным. Пожалуйста, введите положительное значение"
TextBox2.Value = Empty
Exit Sub
End If
TextBox2.Value = Replace(TextBox2.Value, ".", ",")
If IsNumeric(TextBox2.Value) = False And TextBox2.Value <> Empty Then
MsgBox "В поле РАЗМЕР ГОДОВОЙ СТАВКИ допускается ввод только положительных значений"
TextBox2.Value = Empty
Exit Sub
End If
If TextBox2.Value <> Empty Then
SpinButton1.Value = TextBox2.Value
Exit Sub
End If
End Sub
Уважаемая Tris! Вы продолжаете шокировать общественность чудовищной аватаркой
и непонятной фразой "есть SpinButton и TextBox, связанные между собой"
С точки зрения программирования, эти два компонента никак не могут
быть связаны, они даже не подозревают о существовании друг-друга.
Они могут знать, что принадлежат своему родительскому контейнеру (в данном случае - форме).
Поэтому, давайте выражаться правильно! :)))
По поводу округления...
Мне кажется, что вы в своем образовании упустили самую важную вещь, а именно
как представляются различные типы данных в компьютере.
Для человека введенные в TextBox "Вася" и "3,14" - разные вещи, а вот для компьютера
это две одинаковые строки. Именно СТРОКИ, так как они введены в TextBox.
TextBox - от слова ТЕКСТ, а не от слова ЧИСЛО. Улавливаете разницу?
А у вас что?
SpinButton1.Value = TextBox2.Value
Т. е. Вы пытаетесь строку присвоить числу!!!
Не, Вы можете сказать, что оно работает... Работает, но видите с каким непонятным результатом.
Это называется неявное преобразование типов. Собственно, то, за что ругают VBA - за слишком большие вольности которые может позволить себе программист при обращении с данными.
При неявном преобразовании и позднем связывании VBA пытается сам "додумать" и исправить то, что Вы должны указать ему явно!
Еще...
TextBox2.Value = Empty
Правильнее будет так
TextBox2.Text = "" ' присвоили TextBox пустую строку (строку без единого символа)
Почему так, а не как у вас, объяснять не буду. Не хочу писать еще одно пособие по VBA...
Сергей Борзяев
Сергей Борзяев
95 189
Лучший ответ
Сергей Борзяев Я Вам очень рекомендую начать с самых азов.
Переменные, типы данных, область видимости, время жизни переменных.
Функции преобразования типов.
Массивы одномерные и многомерные, статические, динамические.
Циклы, ветвления, процедуры, функции.

Поверьте, как только вы хорошо усвоите данный материал, большинство вопросов отпадут
(появятся другие вопросы, но потом...)
Никто не начинает изучать математику с интегралов, начинают изучать с таблицы умножения...
;)
тип переменной отвечает
Олег Холин
Олег Холин
39 908