![]() |
|
Модераторы: mihanik |
![]()
|
|
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Завтра на работе попробую сделать пример, покажу... Не совсем это, но очень похоже...
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Ну если там будет и автозаполнение, и изм. адресов ячеек - будет хорошо! То есть можно считать, что ввод нескольких формул у нас есть.
Но если их (автозап+изм.адресов) и не получится сделать, наверно, написать самому эти функции реально вполне? Это сообщение отредактировал(а) motorway - 12.7.2009, 14:28 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
ТЮ на меня за несообразительность! Наконец я понял ЧТО тебе нужно.
В Экселе, при написании функций есть возможность создавать Функции с неограниченным количеством Аргументов. Эти аргументы будут отрабатываться по всем правилам работы с функциями в том числе и Автозаполнение. Во декларация:
Инструкция ParamArray указывает, что Аргументы - это массив. В теле функции, все переданные аргументы можно получить из массива Formulas(). Дерзай. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
О, это вроде бы лучший из вариантов, который я пока видел!
иногда мне нужно, чтобы формула начиналась со знаков > или <. Приходится их брать в кавычки, а далее &. Ну и квадратные скобки надо брать в кавычки. Это немного усложнит жизнь пользователям. Пока, наверно, возьму в качестве рабочего варианта. -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Да. Это единственный недостаток.
Но, как ты сам сказал, идеал недостижим стандартными средствами Экселя. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Другим выходом могло быть использование СЦЕПИТЬ с кавычками, чтобы можно было писать все, что хочешь, но тогда нужно самому реализовать автозаполнение и реакцию на событие изм. адресов ячеек. Это просто займет время и силы. Все-таки писать функции, которые уже есть... Лучше, наверно, пойти на компромисс с доп. символами, иногда требующимися.
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Naghual, а не подскажешь, как получить в виде строки все, что находится у Ф в скобках?
Т.е., если в ячейке =Ф(">="&1; -B4>=C6+D3*F4/H8-5; G13<=6; x="[30,200]"; a>5&"->"& x=3+SIN(3)) Чтобы она возвращала ">="&1; -B4>=C6+D3*F4/H8-5; G13<=6; x="[30,200]"; a>5&"->"& x=3+SIN(3) -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Пройтись по массиву аргументов циклом и сложить все в одну переменную.
-------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Да, я пробовал так:
но пишет #ЗНАЧ! - знач., исп. в формуле, имеет неправ. тип данных - пробовал разные варианты, напр. для Ф(1) Как, кстати, проверить, не пуст ли какой-нибудь массив? Например, если массив ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas) пуст, выдается "Не найдено ни одной ячейки, удовл. заданным условиям". Поэтому нужно сначала проверить, чтобы ошибки не было. Это сообщение отредактировал(а) motorway - 13.7.2009, 21:55 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Я попробовал получать для помещения в примечание переменную Cell.Formula, но почему-то разделители для аргументов функции Ф из точки с запятой превращаются в запятую. Из-за этого будет непонятно, где должно быть правильное окончание одной формулы и начало другой. Можно как-то получить именно то, что в аргументе формулы было?
Это сообщение отредактировал(а) motorway - 13.7.2009, 22:56 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Был неправ. Приношу свои извинения. Нужно так:
А затем парсиш strCellFormula. ;) -------------------- Я желаю всем Счастья! |
||||
|
|||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Что-то у меня ерунда какая-то. Возвращает вместо точки с запятой запятую для разделителей. Может, еще как-то можно?!
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Ход конем:
-------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Не очень понял, зачем тут используется тогда Formulas и что возвращает функция. В принципе, из положения можно выйти, если заменять на точку с запятой запятые, находящиеся не в скобках () и [] - так как обычно все запятые находятся внутри скобок у какой-то функции. Только это надо понять как.
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Ну тогда попробуй без нее. Приведенный мною код лишен необходимости в этом. -------------------- Я желаю всем Счастья! |
|||
|
||||
![]()
|
| Правила форума "Программирование, связанное с 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. |