Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не закрашивается ячейка / 20 сообщений из 20, страница 1 из 1
14.09.2017, 13:44
    #39521093
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Здравствуйте!

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

Код: vbnet
1.
2.
3.
Function ПользовательскаяФункция1(rn As Range)
    ThisWorkbook.ActiveSheet.Cells(rn.Cells(1, 1).Row, rn.Cells(1, 1).Column).Interior.Color = 65535
End Function
...
Рейтинг: 0 / 0
14.09.2017, 14:17
    #39521130
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Поставь точку останова и проверь, чему равны rn.Cells(1, 1).Row и rn.Cells(1, 1).Column
...
Рейтинг: 0 / 0
14.09.2017, 14:36
    #39521159
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Shocker.ProПоставь точку останова и проверь, чему равны rn.Cells(1, 1).Row и rn.Cells(1, 1).ColumnВот
...
Рейтинг: 0 / 0
14.09.2017, 15:02
    #39521181
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
На скриншоте и в первом сообщении разный код

ferzmikkпрерываетсяа это что значит?
...
Рейтинг: 0 / 0
14.09.2017, 15:11
    #39521186
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
ferzmikkпрерываетсяа это что значит?
...
Рейтинг: 0 / 0
14.09.2017, 15:13
    #39521189
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
...
Рейтинг: 0 / 0
14.09.2017, 15:14
    #39521190
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Shocker.Pro,

Да скорее всего на строке с назначением цвета и прерывается. Т.к. функции пользователя, вызываемые с листа, не могут по умолчанию изменять значения или форматы ячеек. Ни других, ни тех, в которых записаны. Они лишь возвращают в ту ячейку, в которой записаны результат вычисления.
Здесь я приводил обходные пути: Как функцией пользователя изменить значение другой ячейки
но использовать подобный подход не рекомендую, т.к. вполне можно в какой-то момент получить непредсказуемый результат. Хотя сам на ошибки такого подхода не нарывался(однако и использовать в реальных проектах их даже не пробовал).
...
Рейтинг: 0 / 0
14.09.2017, 15:34
    #39521204
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
The_PristЗдесь я приводил обходные пути: Как функцией пользователя изменить значение другой ячейки Значение то меняет, но цвет не меняет.
...
Рейтинг: 0 / 0
14.09.2017, 15:39
    #39521211
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
А если отложенное изменение на таймер повесить ))
...
Рейтинг: 0 / 0
14.09.2017, 16:17
    #39521235
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
ferzmikkЗначение то меняетНе путайте результат вычисления функции, который она возвращает в ячейку, в которой записана и изменение статичного значения ячейки. Это разные вещи.
...
Рейтинг: 0 / 0
14.09.2017, 17:39
    #39521291
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Shocker.ProА если отложенное изменение на таймер повесить ))Не реагирует
...
Рейтинг: 0 / 0
14.09.2017, 17:48
    #39521296
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Вообще реально как то обойти?
...
Рейтинг: 0 / 0
14.09.2017, 20:42
    #39521360
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Пользовательская функция может виртуально запустить, например, Worksheet_Change? Если да, то как?
...
Рейтинг: 0 / 0
15.09.2017, 01:00
    #39521430
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
ferzmikkПользовательская функция может виртуально запустить, например, Worksheet_Change? Если да, то как?

Может, но необходимость таких "обходов" указывает на неверный подход к решению задачи.
...
Рейтинг: 0 / 0
15.09.2017, 08:23
    #39521502
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
iMrTidy,

Спасибо, работает!
...
Рейтинг: 0 / 0
15.09.2017, 08:34
    #39521506
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Не могу понять, почему закрашивается только последняя ячейка в выбранном Range. Почему так?
...
Рейтинг: 0 / 0
15.09.2017, 10:04
    #39521577
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
ferzmikkНе могу понять, почему закрашивается только последняя ячейка в выбранном Range. Почему так?

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

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

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

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



Так не проще ли?
Код: vbnet
1.
ИзменитьЦвет Ячейка
...
Рейтинг: 0 / 0
15.09.2017, 10:59
    #39521619
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
Вот написал, работает. Но тут важно, чтобы удалялись старые заливки. Учитывая, что событие срабатывает один раз.

Как быть? Второй Range создавать, где не будет заливок? Или как то по другому делать?
...
Рейтинг: 0 / 0
15.09.2017, 12:56
    #39521787
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
ferzmikkВот написал, работает. Но тут важно, чтобы удалялись старые заливки. Учитывая, что событие срабатывает один раз.

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

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

Код: vbnet
1.
2.
3.
4.
5.
6.
Function ÏîëüçîâàòåëüñêàÿÔóíêöèÿ1(Îáëàñòü As Range)

Öâåò = 65535
ÈçìåíèòüÖâåò Îáëàñòü

End Function



Тогда и доп процедура не нужна.
...
Рейтинг: 0 / 0
15.09.2017, 12:57
    #39521788
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не закрашивается ячейка
ferzmikk,

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

Что значит, чтобы старые заливки удалялись?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не закрашивается ячейка / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]