Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2016, 15:03   #1
ADV_P
 
Регистрация: 15.07.2016
Сообщений: 7
По умолчанию Запуск процедуры и изменение цвета ячейки

Добрый день!
Помогите дилетанту.
Установлен Excel 2013.

Вводная:
Маленькая процедура, которая по идее должна менять цвет указанной в качестве параметра ячейки.

Sub Set_CollorCell(Cell As Range)
Application.Volatile

With Cell.Interior
.ColorIndex = 14
.Color = 255
End With
End Sub

Вставляю процедуру в ячейку "=Set_CollorCell(А1)"
1. Excel сразу начинает ругаться и не позволяет даже выйти из ячейки. Если "Sub" меняю на "Function" или переобъявляю процедуру без параметра, то все номально.
2. В отладчике пошагово дохожу до строчки ".ColorIndex = 14" и на ней вылетает.
В тоже время подобная функция (с процедурой та же картина) на считывание значения цвета ячейки отрабатывает нормально.

Прошу помощи!
ADV_P вне форума Ответить с цитированием
Старый 15.07.2016, 15:21   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а давайте Вы отвлечетесь от рассказа как и какими способами Вы этого добивались и сосредоточитесь на рассказе, что необходимо получить в итоге, чего Вы добиваетесь?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.07.2016, 15:26   #3
ADV_P
 
Регистрация: 15.07.2016
Сообщений: 7
По умолчанию

Изменить цвет заданной (переданной через параметр) ячейки.
ADV_P вне форума Ответить с цитированием
Старый 15.07.2016, 15:28   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

UDF имеет целый ряд ограничений - https://support.microsoft.com/ru-ru/kb/170787


вот (автоперевод)
Цитата:
Определяемые пользователем функции, вызываемой классом формулу в ячейке листа нельзя изменить среде Microsoft Excel. Это означает, что такая функция не может выполнять следующее:
Добавить, удалить или отформатировать ячейки электронной таблицы.
Измените значения другой ячейки.
Перемещение, переименование, удаление или добавления листов в книге.
Измените параметры среды, такие как расчет экрана или режим представления.
Добавление имен в книге.
Установка свойств или выполнения большинства методов.
Определяемые пользователем функции предназначен для того, чтобы разрешить пользователю создание пользовательской функции, отсутствующие в функциях, которые поставляются с Microsoft Excel. Функции, включенные в Microsoft Excel нельзя изменить среду. Функции можно выполнять вычисление, которое возвращает значение или текст в ячейку, они вводятся в. Любые изменения окружающей среды должны выполняться с помощью Visual Basic подпрограммы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2016, 15:35   #5
ADV_P
 
Регистрация: 15.07.2016
Сообщений: 7
По умолчанию

Честно говоря не совсем понимаю какое отношение UDF имеет к моей проблеме. ((
Как то же можно программно поменять цвет заданной ячейки.
ADV_P вне форума Ответить с цитированием
Старый 15.07.2016, 15:42   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Изменить цвет заданной (переданной через параметр) ячейки
вот процедура, которая изменит цвет ячейки переданной ей как параметр
Код:
Sub CngColor(rg As Range)
  rg.Interior.Color = rg.Interior.Color - 222222
End Sub
а вот процедура, которая изменит цвет ячейки А5 активного листа, используя процедуру изменения цвета ячейки
Код:
Sub Start()
  CngColor [a5]
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.07.2016, 15:50   #7
ADV_P
 
Регистрация: 15.07.2016
Сообщений: 7
По умолчанию

Эту процедуру мне нужно вызвать в листе Excel и когда я это делаю, Excel ругается, что имя неизвестно. Если меняю на "Function", то Excel принимает, но вылетает на строке присвоения значения.
ADV_P вне форума Ответить с цитированием
Старый 15.07.2016, 15:52   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Честно говоря не совсем понимаю какое отношение UDF имеет к моей проблеме. ((
то, что Вы записываете в ячейке : "=Set_CollorCell(А1)"
и есть вызов пользовательской функции (user defined function)
она ничего не может сделать.
Сделайте макрос, повесьте его вызов по какому-то событию (хоть на кнопку, хоть на изменение значения в ячейке A1) и всё будет работать.

Так понятно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2016, 15:54   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Честно говоря не совсем понимаю какое отношение UDF имеет к моей проблеме. ((
Цитата:
Если меняю на "Function", то Excel принимает, но вылетает на строке присвоения значения
вот Вам иллюстрация отношения, которое имеет UDF к Вашей проблеме

так все-таки - чего Вы добиваетесь?

потому что на это:
Цитата:
Изменить цвет заданной (переданной через параметр) ячейки.
я ответил
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 15.07.2016 в 15:56.
IgorGO вне форума Ответить с цитированием
Старый 15.07.2016, 15:56   #10
ADV_P
 
Регистрация: 15.07.2016
Сообщений: 7
По умолчанию

Так понятно.

Хорошо, попробую такой вариант.

Спасибо!
ADV_P вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета ячейки согласно словарю nifra Microsoft Office Excel 8 11.06.2014 10:57
изменение цвета ячейки dbgrid(a) Konstantin_ua БД в Delphi 13 25.12.2013 14:16
Изменение цвета ячейки по гипессылке Ayse Microsoft Office Excel 15 17.07.2013 10:46
Изменение цвета ячейки DBGridEh Dandy777 Общие вопросы Delphi 2 07.11.2012 14:46
DBGrid изменение цвета ячейки S.T.U.D.E.N.T C++ Builder 6 24.04.2012 13:21