Страницы: 1
RSS
Ошибка при записи макроса: #ИМЯ?
 
Помогите, пожалуйста,
в макросе заношу значение в ячейку:
Range("G17";).Value = "=СУММ(F" + CStr(17 - fst + 1) + ":F17)/" + CStr(fst)

где fst- целое число, например 2.

В результате в ячейке появляется #ИМЯ?
и избавиться от него удается только встав на эту ячейку и нажав Enter.
ни Range("G17";).Calculate ни прочие танцы с бубном не помогли.
что я делаю некошерно?
 
Так не пробовали?
 
Код
Range("G17").FormulaLocal = "=СУММ(F" + CStr(17 - fst + 1) + ":F17)/" + CStr(fst)


А лучше записывать сразу на английском. Самый лучший способ правильно написать формулу - запишите макрорекордером вставку этой формулы в ячейку:
-Записали формулу - убедились в её правильных расчетах.
-Начали запись макроса.
-F2-Enter.
-Остановили макрос.
-Все, формула для вставки готова. Обритите внимание, что там она будет: .FormulaR1C1. Вы должны записать так же. А потом просто заменить номер строки на нужную переменную.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
спасибо, получилось.
.FormulaR1C1  я тоже пробовал именно с помощью записи макроса. эффект был тот же.
а вот с помощью .FormulaLocal получилось.
шаманство какое-то  :)
 
Цитата
andre_bae пишет:
.FormulaR1C1 я тоже пробовал именно с помощью записи макроса. эффект был тот же.
Чего-то не договариваете. Вы явно изменили не только ссылку на формулу, а тупо заменили:
Код
Range("G17").FormulaR1C1 = "=СУММ(F" + CStr(17 - fst + 1) + ":F17)/" + CStr(fst)


или что-то в этом духе. Excel этого не понимает.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
по-любому я это сейчас исправил просто как "мартышка", без понимания различия применения .FormulaR1C1 и .FormulaLocal.
и, хотя проблема и решена, но не понята - что именно было "не так", из-за чего ячейка ругалась на #ИМЯ и что происходит когда я не исправляя ничего в записанной в ячейке формуле просто нажимаю на этой ячейке Enter?
ведь простого нажатия Enter достаточно, чтобы Excel "понял" что я от него хочу и сосчитал формулу не ругаясь...

я понимаю, что здесь не совсем место для ликбеза, но вдруг? может пальцем ткнете в какой RTFM?
 
тыкаю: свойство .Value ячейки отвечает за запись в ячейку значения. Вы попытались вписать, скажем, значение =СУММ(F19:F17)/2
Для Excel все, что начинается с =,+ или - формула. Он естественным образом это в формулу преобразовывает. Но, т.к. Вы это записываете из VBA делает он это на английском(родным для формул и Excel в целом). А в англоязычной локализации нет формулы СУММ и он не находит соответствия формулы в ячейке своей базе англоязычных формул. Поэтому получаете #ИМЯ!. Как только Вы нажали внутри ячейки Enter уже сам Excel(не VBA) смотрит локализацию и соответствует ли ей формула. Естественно, находит совпадение и проводит вычисление.
Вот и все.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо. Теперь понятно. Не люблю мартышкой быть.
Страницы: 1
Наверх