Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Здравствуйте!

Из пользовательской функции пытаюсь сделать так, чтобы в выбранной области закрашивал первую ячейку. Но почему то не закрашивается, прерывается. Что тут не так?

Function ПользовательскаяФункция1(rn As Range)
    ThisWorkbook.ActiveSheet.Cells(rn.Cells(1, 1).Row, rn.Cells(1, 1).Column).Interior.Color = 65535
End Function
14 сен 17, 13:44    [20795693]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 17601
Поставь точку останова и проверь, чему равны rn.Cells(1, 1).Row и rn.Cells(1, 1).Column
14 сен 17, 14:17    [20795878]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Shocker.Pro
Поставь точку останова и проверь, чему равны rn.Cells(1, 1).Row и rn.Cells(1, 1).Column
Вот

К сообщению приложен файл. Размер - 69Kb
14 сен 17, 14:36    [20795978]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 17601
На скриншоте и в первом сообщении разный код

ferzmikk
прерывается
а это что значит?
14 сен 17, 15:02    [20796097]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
ferzmikk
прерывается
а это что значит?


К сообщению приложен файл. Размер - 11Kb
14 сен 17, 15:11    [20796122]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086


К сообщению приложен файл (Пользовательская функция.xlsm - 15Kb) cкачать
14 сен 17, 15:13    [20796127]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1610
Shocker.Pro,

Да скорее всего на строке с назначением цвета и прерывается. Т.к. функции пользователя, вызываемые с листа, не могут по умолчанию изменять значения или форматы ячеек. Ни других, ни тех, в которых записаны. Они лишь возвращают в ту ячейку, в которой записаны результат вычисления.
Здесь я приводил обходные пути: Как функцией пользователя изменить значение другой ячейки
но использовать подобный подход не рекомендую, т.к. вполне можно в какой-то момент получить непредсказуемый результат. Хотя сам на ошибки такого подхода не нарывался(однако и использовать в реальных проектах их даже не пробовал).
14 сен 17, 15:14    [20796130]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
The_Prist
Здесь я приводил обходные пути: Как функцией пользователя изменить значение другой ячейки
Значение то меняет, но цвет не меняет.
14 сен 17, 15:34    [20796202]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 17601
А если отложенное изменение на таймер повесить ))
14 сен 17, 15:39    [20796229]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1610
ferzmikk
Значение то меняет
Не путайте результат вычисления функции, который она возвращает в ячейку, в которой записана и изменение статичного значения ячейки. Это разные вещи.
14 сен 17, 16:17    [20796345]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Shocker.Pro
А если отложенное изменение на таймер повесить ))
Не реагирует
14 сен 17, 17:39    [20796656]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Вообще реально как то обойти?
14 сен 17, 17:48    [20796693]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Пользовательская функция может виртуально запустить, например, Worksheet_Change? Если да, то как?
14 сен 17, 20:42    [20797185]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
iMrTidy
Member

Откуда:
Сообщений: 568
ferzmikk
Пользовательская функция может виртуально запустить, например, Worksheet_Change? Если да, то как?


Может, но необходимость таких "обходов" указывает на неверный подход к решению задачи.

К сообщению приложен файл (#UDF#OtherCells.xlsm - 17Kb) cкачать
15 сен 17, 01:00    [20797544]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
iMrTidy,

Спасибо, работает!
15 сен 17, 08:23    [20797684]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Не могу понять, почему закрашивается только последняя ячейка в выбранном Range. Почему так?

К сообщению приложен файл (Пользовательская функция.xlsm - 18Kb) cкачать
15 сен 17, 08:34    [20797700]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
iMrTidy
Member

Откуда:
Сообщений: 568
ferzmikk
Не могу понять, почему закрашивается только последняя ячейка в выбранном Range. Почему так?


Не пренебрегайте Option Explicit, поможет сэкономить время и нервы.

Не у всех VBA офиса поддерживает русский язык, и не все на нем говорят. Это значит, что потенциальный преемник должен настроить правильно офис, да еще и по-русски понимать. Аналогично с помощью.

Событие на листе происходит один раз, по сему в обработчик события попадает последняя ячейка цикла.

В чем смысл этого?
ИзменитьЦвет (ThisWorkbook.ActiveSheet.Cells(Ячейка.Row, Ячейка.Column))


Так не проще ли?
ИзменитьЦвет Ячейка
15 сен 17, 10:04    [20797890]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
ferzmikk
Member

Откуда:
Сообщений: 1086
Вот написал, работает. Но тут важно, чтобы удалялись старые заливки. Учитывая, что событие срабатывает один раз.

Как быть? Второй Range создавать, где не будет заливок? Или как то по другому делать?

К сообщению приложен файл (Пользовательская функция.xlsm - 19Kb) cкачать
15 сен 17, 10:59    [20798060]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
iMrTidy
Member

Откуда:
Сообщений: 568
ferzmikk
Вот написал, работает. Но тут важно, чтобы удалялись старые заливки. Учитывая, что событие срабатывает один раз.

Как быть? Второй Range создавать, где не будет заливок? Или как то по другому делать?


Зачем такие извраты?

Function &#207;&#238;&#235;&#252;&#231;&#238;&#226;&#224;&#242;&#229;&#235;&#252;&#241;&#234;&#224;&#255;&#212;&#243;&#237;&#234;&#246;&#232;&#255;1(&#206;&#225;&#235;&#224;&#241;&#242;&#252; As Range)

&#214;&#226;&#229;&#242; = 65535
&#200;&#231;&#236;&#229;&#237;&#232;&#242;&#252;&#214;&#226;&#229;&#242; &#206;&#225;&#235;&#224;&#241;&#242;&#252;

End Function


Тогда и доп процедура не нужна.
15 сен 17, 12:56    [20798562]     Ответить | Цитировать Сообщить модератору
 Re: Не закрашивается ячейка  [new]
iMrTidy
Member

Откуда:
Сообщений: 568
ferzmikk,

Про поддержку русского я предупреждал.

Что значит, чтобы старые заливки удалялись?
15 сен 17, 12:57    [20798565]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить