Страницы: 1 2 След.
RSS
Ошибка при делении TextBox в UserForm <Run-time error "6" Overflow>
 
Доброго времени суток уважаемые форумчане.
Пожалуйста помогите с макросом. Выдает ошибку при делении на последний текстбокс, но при написании конкретного значения всё работает.
Однако нужно чтобы суммированные текстбоксы делились на один текстбокс как в этом коде.
Здесь делиться на текстбокс евро, однако есть идентичный текстбокс с долларом в значении (он сверху этого кода), который делится без проблем.
Ссылался на другой текстбокс с другим именем, но выходит тоже самое.

Run-time error "6" Overflow

Код
Me.DebitEur.value = (Val(Me.Deb1.value) + Val(Me.Deb2.value) + Val(Me.Deb3.value) + Val(Me.Deb4.value) + Val(Me.Deb5.value)) / Val(Me.CurrencyEur.value)


Спасибо
 
Fuad1992, кто ж знает что у Вас там в текстбоксах за значения. Вы в отладчике то посмотрите.
По вопросам из тем форума, личку не читаю.
 
Там только цифры (2.0132) Пишу другие числа, опять не работает. Так ругается именно на эту строку. Значения в них пустое когда мышкой на строку с ошибкой смотреть. Хотя во всех все заполнено. Да еще при умножении, сложении или вычитании все нормально работает) По разному пробовал писать, но не хочет делить что-то)
 
Цитата
Fuad1992 написал:
Me.CurrencyEur
а такой текстбокс точно есть?
 
Конечно есть, пробовал на другие боксы тоже. Все получается, только что делить не хочет. Такой же код сверху есть, который делит на другой бокс, он работает, нормально все делит.
 
Я думаю, что выскажу общее мнение - в данном случае без примера не обойтись
 
Такое впечатление, что в целом коде он может делить только раз. А такого рода кода в целом Sub целых 3. Первый делит, на 2-ой и 3-й ругается. Вот целый код посмотрите. Думаю так станет понятно.

Первый просто суммирует, к нему притензий вообще нет)
Код
Sub DebitCurrencySum()
    Me.DebitAzn.value = Val(Me.Deb1.value) + Val(Me.Deb2.value) + Val(Me.Deb3.value) + Val(Me.Deb4.value) + Val(Me.Deb5.value)
    Me.DebitUsd.value = (Val(Me.Deb1.value) + Val(Me.Deb2.value) + Val(Me.Deb3.value) + Val(Me.Deb4.value) + Val(Me.Deb5.value)) / Val(Me.CurrencyUsd.value)
    Me.DebitEur.value = (Val(Me.Deb1.value) + Val(Me.Deb2.value) + Val(Me.Deb3.value) + Val(Me.Deb4.value) + Val(Me.Deb5.value)) / Val(Me.CurrencyEur.value)
    Me.DebitAed.value = (Val(Me.Deb1.value) + Val(Me.Deb2.value) + Val(Me.Deb3.value) + Val(Me.Deb4.value) + Val(Me.Deb5.value)) / Val(Me.CurrencyAed.value)
End Sub
Изменено: Fuad1992 - 05.06.2018 18:59:20 (Чтобы было понятно видно)
 
webley, пример кода выше. Легче стало? :-)
Fuad1992, бе примера файла в котором воспроизводится ошибка, сложно.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Легче стало? :-)
нет :) думаю тут будет недостаточно даже скриншота формы
 
Вот пожалуйста) не шокируйтесь от не правильности написания макросов) Я новичек) Толькобы эту ошибку исправить.
Спасибо вам реально
New Invoice кликните
Изменено: Fuad1992 - 05.06.2018 19:02:19
 
Там ведётся конвертация валют, на верху есть выпадающий список который отображает все просуммировав в разных валютах, надо только выбрать валюту и он покажет.
Берется все из других ячеек (сбоку справа, их я скрою потом). А так все работает.
 
Fuad1992, Дело не в коде, а скорее всего в значении которое вбито в TextBox, на который делится.
Это  
Код
Val(Me.CurrencyAed.value)
может быть 0, а на ноль как известно делить нельзя, поэтому и ошибка вылетает.
"Все гениальное просто, а все простое гениально!!!"
 
А где вообще все эти CurrencyEur без значений?
 
Код
х/Val(Me.CurrencyEur.value)

И что Вы хотите? CurrencyEur.value = "", Val("")=0, деление на ноль - ошибка
 
Спасибо за отзыв. Всем спасибо.
Нет там есть значение. Ну если допустим что нет значения, и там стоит 0, тогда почему в первом делении все ок?
 
У меня уже на стадии активации формы ошибка   8-0
"Все гениальное просто, а все простое гениально!!!"
 
Чтобы не мешали открыть, я отключил две строки, вызывающие ошибку при активации.

CurrencyUsd.value=1.7050
Там нет деления на ноль. Доллар, видимо, в большем почете, чем евро :)
 
Нашёл, забил в свойствах по единице - открылось без ошибок.
Откуда значение в долларах - не копал. Но после открытия вместо единиц 2.0120 и 0.4900
Изменено: Hugo - 05.06.2018 19:21:11
 
Цитата
vikttur написал: CurrencyEur.value = ""
Уважаемый Модератор. Проблема в том, что значение там есть.
CurrencyUsd и CurrencyEur и CurrencyAed  можете найти во Frame  Exchange.
Проверьте сделав зеленым строки ошибочных записей и увидите что значения стоят.
А так на 0 делить нельзя знаю)
 
Цитата
vikttur написал:
Там нет деления на ноль. Доллар, видимо, в большем почете, чем евро
)))
 
В коде черт ногу сломает, посмотрите в сторону модулей класса, может и делиться начнет нормально  :D
"Все гениальное просто, а все простое гениально!!!"
 
Я дописал решение выше.
 
Я а VBA не полный 0 конечно, но чуть чуть есть) Мне кажется только 1 раз делить можно,, такое впечатление создалось.
Может ошибаюсь,,
 
1. Сообщение не от модератора, а от посетителя форума.
2. То, что где-то там есть. не видел, я код смотрю. Поместите указатель мыши над записанным в строке контролом - Вам редактор покажет значение. Там "" - пусто.
 
У меня тоже получилось вызвать эту ошибку только разделив на ноль. А так работает...
 
Цитата
Hugo написал:
P.S. Копнул - так сами и накосячили, вот что там в коде:
Нет нет, это не ошибка зеленый появился методом проб. А так там валюты все разные.
В текстбоксах должно же быть значение. Вот эти значения по умолчанию там стоят, чтобы на 0 не делить
Изменено: Fuad1992 - 05.06.2018 19:22:19
 
Да, увидел уже...
 
Цитата
Nordheim написал:
В коде черт ногу сломает  
Согласен) сам путаюсь иногда)
 
Вот, в коде инициализации:
Код
        CurrencyUsd.value = "1.7050"
        'CurrencyEur.value = "1.7050"
        CurrencyEur.value = "2.0120"

Евро Вы таки обидели.
 
Виктор, я это уже проходил. Ты тоже без очков смотришь? :)
Думаю самое простое - сделать как я в начале - прописать в свойствах единицу, чтоб не ругалось. Если конечно это на другое не влияет, вроде нет.
Или нужно на время инициализации отключать события этих элементов - т.к. доллары начинают отрабатывать , а евро ещё пустые...
P.S. добавил общую булеву переменную в модуль - помогает.
Изменено: Hugo - 05.06.2018 19:34:54
Страницы: 1 2 След.
Читают тему
Наверх