![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
masterofmind |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Доброго дня, коллеги.
Т.к. я не являюсь программистом в его сакраментальной трактовке ![]() Компилятор VBA Ну никак не хочет кушать вот такую конструкцию:
Ошибка 2015 - Type mismatch 3 часа угробил - не могу понять, что не так. Данный код, лишь фрагмент функции- не мой, взят с сайта http://www.cpearson.com. Моя задача - получить цвет ячейки окрашенной условным форматированием. Соответсвенно цвет и кол-во ячеек будет постоянно меняться. Мне нужна была функция, которая бы это все считала. У уважаемого коллеги, чей сайт я выложил выше - все работает, но к сожалению на простых формулах, типа "=100" и т.д. С моей же формулой - не хочет ;-(. Сама формула - рабочая, условное форматирование по ней отрабатывает четко. Выкладывю текст самих функций:
Если кому-то пригодится-буду только рад. Если у кого есть свои наработки - прошу поделится. На поиски кода нашего зарубежноо коллеги у меня ушло 5 часов. ;) Прошу помощи. Это сообщение отредактировал(а) masterofmind - 22.4.2009, 17:52 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
masterofmind |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Почему тогда в такая конструкция:
при
У меня не срабатывает, а при другом условии на значении - все ок? Например вот таком:
Проверял неоднократно в отладчике. Брал 2 ячейки с разным условным форматированием. На 1 не работает, на 2 - работает. Это сообщение отредактировал(а) masterofmind - 22.4.2009, 18:09 |
||||||
|
|||||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Блин, каком??? мы что тут, телепаты??? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
masterofmind |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Я же указал при каком...
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Просто прелестное указание. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
masterofmind |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Извиняюсь, может спешил, и неверно выразился, вот они :
Т.е. эти формулы и являлись условиями для форматирования ячеек. На этих значениях я запускал функцию. Причину ошибки отловил - при добавление в условное форматирование ячейки вычисляемой формулы (на русском, т.к. excel 2007 русский) - функция начинает отваливаться при вызове Application.Evaluate(FC.formula1) с той же самой ошибкой. При этом на листе - все прекрасно работает. Функция работает также при простых условиях типа - <,>,= <> и т.д. применяемых к ячейкам, т.е. вызов Application.Evaluate(FC.formula1) проходит корректно. Как победить ошибку - не знаю. Помогите пожалуйста, данный функционал очень нужен. Это сообщение отредактировал(а) masterofmind - 23.4.2009, 09:02 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Замените русские имена на аглицкие... для конвертации можно использовать как статику (FUNC.XLS), так и временную ячейку
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
masterofmind |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Огромный респект Akina!
Все работает! Единственная просьба, можно маленький ликбез - почему так получается? Дабы не флудить более и знать корни.
![]() Да и еще вопрос - на больших объемах данных, не скажется ли такой метод на быстродействии? Прошу прощения сразу - я не программист, я логист аналитик. А вот кодить, как говорится жизнь заставила...;) Хорошо в юности увлекался. ;) Это сообщение отредактировал(а) masterofmind - 23.4.2009, 09:25 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Внимательно читаем справку по тому, чем отличаются formula от formulalocal - этого должно хватить.
На больших объёмах данных Эксель - неправильный инструмент для работы. Вопрос лишён смысла. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
masterofmind |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Ну и еще один вопрос в тему-как преобразовать формулу, на основании ячейки. Т.е. подставить в неё относительные ссылки, на основании текущей ячейки?
Вот такой код - не работает. Я не правильно вызываю функцию конверта? Должна вернуть вот так - И(СУММ($C20:$E20)>0;СУММ(F20:G20)=0) |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Да, неправильно. Читайте справку. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
masterofmind |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
Akina, ну сжальтесь. Я же писал, я не программист, но поставленную задачу нужно выполнить.
Хоть убейте, не пойму как мне вычислить формулу относительно текущей ячейки. Метод application.convertformula уже и так и эдак, все не получается. В свойсве FormatCondition.formula - содержится формула которая задается при условном форматировании. Она едина и неизменна для всего диапазона. Эксель же при применении усл. формата сам подменяет и расчитывает его для каждой ячейки. Мне нужно сделать тоже самое, как? Вот пример: нужно расчитать её к примеру для ячейки "G50". Вот так - не получается: FC.Formula1= "=И(СУММ($C6:$E6)>0;СУММ(F6:G6)=0)"
rng - as Range, ячейка передаваемая при вызове функции. Т.е. он содержит ссылку на текущую ячейку. FC=rng.FormatConditions(Ndx) - тут я думаю понятно, ndx - счетчик условных форматов для ячейки. Что я делаю не так? Прошу, помогите. Это сообщение отредактировал(а) masterofmind - 23.4.2009, 15:59 |
|||
|
||||
Akina |
|
||||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
Повторяю - читайте справку. Конкретно - на месте False должно стоять совершенно иное значение.
А вот это мне совершенно безразлично. Не хотите делать самостоятельно? нет проблем - отправляйтесь в ЦП, там может кто за вас и сделает... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Программирование, связанное с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |