Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/1004 application-defined or object-defined в макрорекодере - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » 1004 application-defined or object-defined в макрорекодере (Макросы/Sub)
1004 application-defined or object-defined в макрорекодере
Gaspra Дата: Четверг, 31.07.2014, 19:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Приветствую всех.
Вставлял большие формулы в макросе. Выполнил всё в том стиле, в котором писалось в аналогичных темах на форуме ранее. Пробовал пользоваться даже макрорекодером.
Формула работает. Казалось бы, всё работает правильно, но всё равно выдаётся 1004 при запуске макроса.

Код

  ActiveCell.FormulaR1C1 = _
         "=IF(AND(Проверка!R[-10]C,Проверка!R[-9]C,Проверка!R[-8]C),IF(MONTH(R[-23]C)=1,((R[-23]C-EDATE(R[-23]C,-12))*(HLOOKUP(R[-23]C,'Скорректированный баланс'!R6C3:R60C27,42,0)+HLOOKUP(EDATE(R[-23]C,-12),'Скорректированный баланс'!R6C3:R60C27,42,0))/2/(ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,12,0))+ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,22,0))+ABS(HLOOKUP(R[-23]C,'ФR6C3:R100C27,23,0)))),((R[-23]C-EDATE(R[-23]C,-12))*(HLOOKUP(R[-23]C,'Скорректированный баланс'!R6C3:R60C27,42,0)+HLOOKUP(EDATE(R[-23]C,-12),'Скорректированный баланс'!R6C3:R60C27,42,0))/2/(ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,12,0))+ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,22,0))+ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,23,0))))),"")"

Во вложении пример.
Интерес представляет только Лист1. Остальные нужны для проверки работоспособности формулы.
Формулы, которые нужно вставить через макрос, находятся в ячейках С30 и С31.

Буду очень признателен, если поможете понять, в чём ошибка.
К сообщению приложен файл: 3226600.xls (90.5 Kb)
 
Ответить
СообщениеПриветствую всех.
Вставлял большие формулы в макросе. Выполнил всё в том стиле, в котором писалось в аналогичных темах на форуме ранее. Пробовал пользоваться даже макрорекодером.
Формула работает. Казалось бы, всё работает правильно, но всё равно выдаётся 1004 при запуске макроса.

Код

  ActiveCell.FormulaR1C1 = _
         "=IF(AND(Проверка!R[-10]C,Проверка!R[-9]C,Проверка!R[-8]C),IF(MONTH(R[-23]C)=1,((R[-23]C-EDATE(R[-23]C,-12))*(HLOOKUP(R[-23]C,'Скорректированный баланс'!R6C3:R60C27,42,0)+HLOOKUP(EDATE(R[-23]C,-12),'Скорректированный баланс'!R6C3:R60C27,42,0))/2/(ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,12,0))+ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,22,0))+ABS(HLOOKUP(R[-23]C,'ФR6C3:R100C27,23,0)))),((R[-23]C-EDATE(R[-23]C,-12))*(HLOOKUP(R[-23]C,'Скорректированный баланс'!R6C3:R60C27,42,0)+HLOOKUP(EDATE(R[-23]C,-12),'Скорректированный баланс'!R6C3:R60C27,42,0))/2/(ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,12,0))+ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,22,0))+ABS(HLOOKUP(R[-23]C,'Форма 2'!R6C3:R100C27,23,0))))),"")"

Во вложении пример.
Интерес представляет только Лист1. Остальные нужны для проверки работоспособности формулы.
Формулы, которые нужно вставить через макрос, находятся в ячейках С30 и С31.

Буду очень признателен, если поможете понять, в чём ошибка.

Автор - Gaspra
Дата добавления - 31.07.2014 в 19:33
ikki Дата: Четверг, 31.07.2014, 19:45 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
посмотрите, что у Вас получилось в первой строке кода для второй формулы?
у меня открылось так:
[vba]
Код
...HLOOKUP(R[-23]C,'Ф" & _
[/vba]
а следующая строка начинается
[vba]
Код
"R6C3:R100C27,23,0)...
[/vba]
в итоге у Вас апостроф в ссылке не закрыт, восклицательного знака нет - синтаксическая ошибка в формуле.
то, что такого листа "Ф" у Вас нет - здесь не причина. просто формула давала бы ошибку при вычислении.
а вот синтаксически неверную формулу ввести в ячейку нельзя.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Четверг, 31.07.2014, 19:55
 
Ответить
Сообщениепосмотрите, что у Вас получилось в первой строке кода для второй формулы?
у меня открылось так:
[vba]
Код
...HLOOKUP(R[-23]C,'Ф" & _
[/vba]
а следующая строка начинается
[vba]
Код
"R6C3:R100C27,23,0)...
[/vba]
в итоге у Вас апостроф в ссылке не закрыт, восклицательного знака нет - синтаксическая ошибка в формуле.
то, что такого листа "Ф" у Вас нет - здесь не причина. просто формула давала бы ошибку при вычислении.
а вот синтаксически неверную формулу ввести в ячейку нельзя.

Автор - ikki
Дата добавления - 31.07.2014 в 19:45
ikki Дата: Четверг, 31.07.2014, 20:57 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
более другую менее длинную
:D


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
более другую менее длинную
:D

Автор - ikki
Дата добавления - 31.07.2014 в 20:57
RAN Дата: Четверг, 31.07.2014, 21:53 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не хихикай! Отрастишь бороду, не такое напишешь!
А _Boroda_ такое построение выражений ндравица! beer


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе хихикай! Отрастишь бороду, не такое напишешь!
А _Boroda_ такое построение выражений ндравица! beer

Автор - RAN
Дата добавления - 31.07.2014 в 21:53
ikki Дата: Четверг, 31.07.2014, 22:13 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
а я чо я ничо B)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеа я чо я ничо B)

Автор - ikki
Дата добавления - 31.07.2014 в 22:13
Gaspra Дата: Пятница, 01.08.2014, 09:21 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, спасибо. Исходная формула в ячейке корректна. Вот она:
Код

=ЕСЛИ(И(Проверка!C21;Проверка!C22;Проверка!C23);ЕСЛИ(МЕСЯЦ(C8)=1;((C8-ДАТАМЕС(C8;-12))*(ГПР(C8;'Скорректированный баланс'!$C$6:$AA$60;42;0)+ГПР(ДАТАМЕС(C8;-12);'Скорректированный баланс'!$C$6:$AA$60;42;0))/2/(ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;12;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;22;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;23;0))));((C8-ДАТАМЕС(C8;-12))*(ГПР(C8;'Скорректированный баланс'!$C$6:$AA$60;42;0)+ГПР(ДАТАМЕС(C8;-12);'Скорректированный баланс'!$C$6:$AA$60;42;0))/2/(ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;12;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;22;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;23;0)))));"")


Ошибка появляется, когда я пытаюсь её загнать в макрос. Именно это меня удивляет больше всего. Ладно бы сам формулу кривую придумал, так нет, проблема именно в конвертации.
 
Ответить
Сообщение_Boroda_, спасибо. Исходная формула в ячейке корректна. Вот она:
Код

=ЕСЛИ(И(Проверка!C21;Проверка!C22;Проверка!C23);ЕСЛИ(МЕСЯЦ(C8)=1;((C8-ДАТАМЕС(C8;-12))*(ГПР(C8;'Скорректированный баланс'!$C$6:$AA$60;42;0)+ГПР(ДАТАМЕС(C8;-12);'Скорректированный баланс'!$C$6:$AA$60;42;0))/2/(ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;12;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;22;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;23;0))));((C8-ДАТАМЕС(C8;-12))*(ГПР(C8;'Скорректированный баланс'!$C$6:$AA$60;42;0)+ГПР(ДАТАМЕС(C8;-12);'Скорректированный баланс'!$C$6:$AA$60;42;0))/2/(ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;12;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;22;0))+ABS(ГПР(C8;'Форма 2'!$C$6:$AA$100;23;0)))));"")


Ошибка появляется, когда я пытаюсь её загнать в макрос. Именно это меня удивляет больше всего. Ладно бы сам формулу кривую придумал, так нет, проблема именно в конвертации.

Автор - Gaspra
Дата добавления - 01.08.2014 в 09:21
Gaspra Дата: Пятница, 01.08.2014, 09:27 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_ikki_,
всё-таки пропустил? Вижу, спасибо большое!
 
Ответить
Сообщение_ikki_,
всё-таки пропустил? Вижу, спасибо большое!

Автор - Gaspra
Дата добавления - 01.08.2014 в 09:27
Gaspra Дата: Пятница, 01.08.2014, 15:36 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем ещё раз спасибо, проблема решена.
 
Ответить
СообщениеВсем ещё раз спасибо, проблема решена.

Автор - Gaspra
Дата добавления - 01.08.2014 в 15:36
ikki Дата: Пятница, 01.08.2014, 16:27 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
всё-таки пропустил?
а как Вы это делали, если не секрет? :)
вообще-то стандартный способ - перед редактированием готовой формулы жмакнуть кнопку "запись макроса", потом зайти в редактирование ячейки с формулой и тут же нажать Enter (ну или ctrl+shift+enter, если это формула массива). остановить запись макроса.
всё :D


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщение
всё-таки пропустил?
а как Вы это делали, если не секрет? :)
вообще-то стандартный способ - перед редактированием готовой формулы жмакнуть кнопку "запись макроса", потом зайти в редактирование ячейки с формулой и тут же нажать Enter (ну или ctrl+shift+enter, если это формула массива). остановить запись макроса.
всё :D

Автор - ikki
Дата добавления - 01.08.2014 в 16:27
Hugo Дата: Пятница, 01.08.2014, 18:14 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Или в окне отладки ?selection.formula enter - что проще.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеИли в окне отладки ?selection.formula enter - что проще.

Автор - Hugo
Дата добавления - 01.08.2014 в 18:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » 1004 application-defined or object-defined в макрорекодере (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!