Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2010, 16:11   #1
Punker1
 
Регистрация: 18.03.2009
Сообщений: 6
По умолчанию Суммирование значение textbox в форме!

Добрый день!
Помогите мне с такой проблемой. Я ввожу данные на лист через форму.
Данные вводятся в текстбоксы на форме. В качестве проверки, сумма чисел введенных в верхние пять текстбоксов с 1-ого по 5-ый должна ровняться сумме чисел введенных в нижние четыре текстбокса с 6-ого по 9-ый. Для проверки равенства я добавил еще два текстбокса в которых соответственно пытаюсь суммировать вводимые данные. Но как ни пытался я менять код: данные не суммируются, а сцепляются. Я так понимаю, что они принимаются как текст, но как правильно сделать так чтобы введенные данные принимались как числа и суммировались я так и не додумал.
Вложения
Тип файла: zip Пример.zip (20.4 Кб, 56 просмотров)

Последний раз редактировалось Punker1; 04.02.2010 в 16:53.
Punker1 вне форума Ответить с цитированием
Старый 04.02.2010, 17:48   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Используйте функции конвертации, т.к. Вы таки правы - текстБоксы возвращают именно текст, не зря они ТекстБоксы.
Вариант1(путые ТекстБоксы не проблема)
Код:
dim dblSumm as double
dblSumm = Val(textBox1)+Val(TextBox2)
Вариант2(при пустом ТекстБоксе будет ошибка)
Код:
dim dblSumm as double
dblSumm = Cdbl(textBox1)+Cdbl(TextBox2)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 05.02.2010, 05:30   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Необходимо добавить, что во 2-м варианте от The_Prist ошибка будет не только при пустом значении, а при любом значении, которое невозможно преобразовать в тип Double. Например, буквы.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 05.02.2010, 09:38   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Необходимо добавить, что во 2-м варианте от The_Prist ошибка будет не только при пустом значении, а при любом значении, которое невозможно преобразовать в тип Double. Например, буквы.
Ну это да, верно. Я думаю автор догадается, что незачем буквы суммировать...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 05.02.2010, 09:51   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Ну это да, верно. Я думаю автор догадается, что незачем буквы суммировать...
Это я к тому, что в подобных случаях, как правило, уместно вставлять проверку вводимых данных. Иначе, по невнимательности пользователя, это может привести к неправильному результату в расчетах, при чем, без сигнализации ошибки несоответствия типов. Так, например, по Вашему 1-му варианту, ошибки не будет никогда, даже при суммировании букв. Чем это обернется в последствии - знает только автор вопроса. Ему решать.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 05.02.2010, 10:05   #6
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Так, например, по Вашему 1-му варианту, ошибки не будет никогда, даже при суммировании букв.
Ладно, SAS888, уговорили
Раз уж начали дискуссию, так будем добивать потихоньку...

Punker1, перед преобразованием можете добавить проверку на числовое значение в ТекстБоксе
Код:
dim dblSumm as double
If IsNumeric(textBox1) and IsNumeric(textBox2) then dblSumm = Val(textBox1)+Val(TextBox2)
А для Cdbl необходимо добавить еще и проверку на строку нулевой длины.
А вообще посоветовал бы контролировать ввод в Боксы только цифр и запятой(или точки - зависит от установленного в качестве разделителя знака).
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 05.02.2010, 10:10   #7
Punker1
 
Регистрация: 18.03.2009
Сообщений: 6
По умолчанию

Спасибо огромное, наконец-то заработало. Да мне подходит первый вариант. В примере, что я выкладывал, в том числе имеется макрос, позволяющий в текстбоксы вводить только цифры, но при этом цифр может и не быть вообще.
Punker1 вне форума Ответить с цитированием
Старый 05.02.2010, 20:27   #8
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

когда у меня возникала проблема преобразования, я присваивал переменной значение из текстбокса и умножая на единицу и проверял ошибку.
КаМММ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
textbox NARTZISS Общие вопросы .NET 5 19.12.2009 14:21
Отрицательное значение TextBox segail Microsoft Office Excel 7 08.11.2009 20:35
значение TextBox в колонтитул segail Microsoft Office Excel 3 15.08.2009 21:58
TextBox в С# Natok Помощь студентам 2 18.05.2009 17:47
TextBox Freeman Общие вопросы C/C++ 3 28.05.2008 00:56