Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

Форма с ComboBox и TextBox. Формат ввода 0.00 и суммирование TextBox-сов.

Автор SergioGach, 17.05.2011, 13:43

« назад - далее »

SergioGach

Добрый день!
Не подскажете, как можно решить подобную задачу:
Есть форма с ComboBox и TextBox, 10 строк.
Нужно Количество (без формата) * Цену (0,00) = Сумма (0,00).
Внизу суммировать колонку Сумма (0,00).
Пересчет приизменении любого TextBox-а.

См. прикрипленный файл.
Спасибо!

Andrey Lenets

пример в файле...   :D
не знаю, так совпало или Вы намеренно сделали имена суммируемых ТекстБоксов кратными 5, но это ОЧЕНЬ помогло!

там работы еще хватает - проверять, например, вводимые значения на признак isnumeric, на пустое значение и тд, чтобы исключить ошибки в момент заполнения формы...

можно оптимизировать цикл - просматривать не все контролы, а только нужные, присвоив им определенные имена (признаки)... или заключив их в определенных рамках порядковых номеров на форме и тд..

Удачи!  ;)

SergioGach

Да, спасобо, но Вы начали с конца. Как ввести в TextBox (Цена) например 2,15 (формат 0,00). Вылетает ошибка. Еще проблемы с локализацией (. или ,).

Andrey Lenets

Цитата: SergioGach от 17.05.2011, 14:44
Да, спасобо, но Вы начали с конца. Как ввести в TextBox (Цена) например 2,15 (формат 0,00). Вылетает ошибка. Еще проблемы с локализацией (. или ,).
-разделитель запятой проверяется с помощью Application.DecimalSeparator и разделитель заменяется на нужный.
-проверять изменения нужно в каждом ТекстБоксе по которому считается сумма.

ничего сложного здесь нет - нужно для себя понять логику!  :)
удачи!

SergioGach

Цитировать-разделитель запятой проверяется с помощью Application.DecimalSeparator и разделитель заменяется на нужный.
-проверять изменения нужно в каждом ТекстБоксе по которому считается сумма.

Тут ясно, но в количество нельзя ввести разделитель (напр. 0,25 ) и в TextBox цифры представлены в виде текста.
Напр. Цена 2,55 в TextBox9, а на ячейку вставляется 2,00
.Cells(ActiveCell.Row, "E") = Val(Прихидна.TextBox9)

Andrey Lenets

Цитата: SergioGach от 17.05.2011, 17:30
Тут ясно, но в количество нельзя ввести разделитель (напр. 0,25 ) и в TextBox цифры представлены в виде текста.
Напр. Цена 2,55 в TextBox9, а на ячейку вставляется 2,00
.Cells(ActiveCell.Row, "E") = Val(Прихидна.TextBox9)
я не обратил внимание, что разные ед измерения, наложил ограничение на целое число...
код чекера не сложный же! чтобы в кол-ве можно было ввести дробное число замените строчку:
If IsNumeric(cValue) Then Me.Controls(cName).Value = Round(cValue, 0)
на
If IsNumeric(cValue) Then Me.Controls(cName).Value = cValue

по поводу второго вопроса - все TextBox, в частности TextBox9 в ячейки данные скидывают без проблем в числовом виде! проверяйте форматы ячеек, куда выгружаете данные! и саму выгрузку...


SergioGach

Большое Спасибо!!! Все получилося.
Цитироватьпо поводу второго вопроса - все TextBox, в частности TextBox9 в ячейки данные скидывают без проблем в числовом виде! проверяйте форматы ячеек, куда выгружаете данные! и саму выгрузку...

Сделал так:
.Cells(ActiveCell.Row, "H") = Str(UserForm.TextBox3)