Страницы: 1
RSS
Использование дробных переменных в формулах
 
Добрый вечер всем! Нужна помощь в использовании дробных переменных в формулах, вводимых макросом.
Есть некая пользовательская форма, в которой выбирается скидка галочками и вводится формула с этой скидкой в определенные ячейки в листе.
При выборе первой галочки, все отрабатывается нормально, ошибок нет, при выборе любой другой галочки, появляется ошибка
application-defined or object-defined error.  Понимаю, что это связано с дробными переменными (соответствующую переменную объявил), но не понимаю, в чем именно проблема. Дайте пояснения пожалуйста. Важно, чтобы вводилась именно формула, а не вычисленное значение.
Изменено: komparator07 - 04.12.2019 22:11:28
 
Цитата
komparator07 написал:
Понимаю, что это связано с дробными переменными
и да и нет. В форме у вас значения через привычную Вам запятую, используйте так.
Код
"=RC[-2]*" & Replace(coeff, ",", ".") & ""
Изменено: БМВ - 04.12.2019 22:29:26
По вопросам из тем форума, личку не читаю.
 
Зачем макросом вставлять формулу? Считайте в коде и вставляйте значение.
Что-то Вы перемудрили с именем листа - к чему такие сложности?
 
Цитата
Юрий М написал:
Зачем макросом вставлять формулу?
а за тем что коэффициент задается, а основное значение может меняться после.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
и да и нет. В форме у вас значения через привычную Вам запятую, используйте так.Код ? 1"=RC[-2]*" & Replace(coeff, ",", ".") & ""
Хорошо, попробую так. Этот способ я еще не знаю, буду изучать.
 
Цитата
Юрий М написал:
Зачем макросом вставлять формулу? Считайте в коде и вставляйте значение.
Это специфика работы и обсуждению не подлежит, так надо. Короче говоря, это часть сложной системы, для составления спецификаций, и в нем нужно видеть формулы, правильный ли коэффициент использовано, частенько меняются цены, поэтому нужно формулой.  
 
Цитата
Юрий М написал:
Что-то Вы перемудрили с именем листа - к чему такие сложности?
С именем тоже вынужденная мера, в спецификации может быть несколько листов, и в VBA не пропишешь, на какой лист, на какую ячейку вставить формулу. Необходимо определить, с какого листа была активирована эта форма, в какой ячейке было выделение. Поэтому код считывает имя активного листа, координаты выделенного диапазона, и вставляет туда формулу.  
 
Цитата
БМВ написал:
а за тем что коэффициент задается, а основное значение может меняться после.
да, именно так.
 
Цитата
БМВ написал:
"=RC[-2]*" & Replace(coeff, ",", ".") & "
Спасибо! Все работает. Правда, сколько бы не читал про эту функцию, все равно ничего не понял, как она работает, и как она связана с запятыми. Ну да ладно, новичек я пока, пойму со временем.
 
Все верно. Меняем запятую на точку, которая является общим десятичным разделителем. Это потом она в ячейке для вас становится снова запятой, но это уже  делает формат ячейки.
По вопросам из тем форума, личку не читаю.
 
Цитата
komparator07 написал:
и как она связана с запятыми
функция  Replace конкретно с запятыми не связана НИКАК
функция связана с заменой в тексте одной его части на какую-то другую (даже не из этого текста)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
БМВ, спасибо, теперь допёр.
 
Ігор Гончаренко, спасибо, теперь понятно.
Страницы: 1
Наверх