Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Событие на форматирование строки - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Событие на форматирование строки (Макросы/Sub)
Событие на форматирование строки
fairylive Дата: Пятница, 25.03.2016, 19:21 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 3 ±
Замечаний: 0% ±

Excel 2016
Подскажите можно ли сделать предупреждение (сообщение) на попытку всей строчке/столбцу присвоить цвет или границы. Что-то типа
Цитата
"Вы пытаетесь изменить цвет или границы для всей строки. Пожалуйста выберите только ячейки из таблицы"
Ещё хорошо чтобы код умел отменять только что совершенное форматирование строки\столбца. То есть кто-то выделяет целиком всю строку/столбец и закрашивает её цветом. Тут вылазит сообщение что делать так нельзя и отменяет закрашивание. Событие на этапе выделения всей строки делать не надо. Всё же строки могут захотеть выделить чтобы удалить или вставить другие строки.

Для чего надо - вычитал что таким образом можно уменьшить файл. Сейчас файл почистил копированием всей таблицы в новый файл. Так закрашенными остались не все строки и столбцы, а только нужные диапазоны. Кроме того удалось таким копированием удалить пустые ячейки без данных, но которые занимали место (если нажимать ctrl+end выделялась ячейка очень далеко от нужной таблицы). Файл уменьшился в размере. Но на будущее хотелось бы бороться хотя бы с этим моментом с помощью макроса.

Сам пока не постиг обработку событий.
 
Ответить
СообщениеПодскажите можно ли сделать предупреждение (сообщение) на попытку всей строчке/столбцу присвоить цвет или границы. Что-то типа
Цитата
"Вы пытаетесь изменить цвет или границы для всей строки. Пожалуйста выберите только ячейки из таблицы"
Ещё хорошо чтобы код умел отменять только что совершенное форматирование строки\столбца. То есть кто-то выделяет целиком всю строку/столбец и закрашивает её цветом. Тут вылазит сообщение что делать так нельзя и отменяет закрашивание. Событие на этапе выделения всей строки делать не надо. Всё же строки могут захотеть выделить чтобы удалить или вставить другие строки.

Для чего надо - вычитал что таким образом можно уменьшить файл. Сейчас файл почистил копированием всей таблицы в новый файл. Так закрашенными остались не все строки и столбцы, а только нужные диапазоны. Кроме того удалось таким копированием удалить пустые ячейки без данных, но которые занимали место (если нажимать ctrl+end выделялась ячейка очень далеко от нужной таблицы). Файл уменьшился в размере. Но на будущее хотелось бы бороться хотя бы с этим моментом с помощью макроса.

Сам пока не постиг обработку событий.

Автор - fairylive
Дата добавления - 25.03.2016 в 19:21
RAN Дата: Пятница, 25.03.2016, 19:28 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Событий, отслеживающих форматирование, в Excel нет. Так что ваши мечты таковыми и останутся.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСобытий, отслеживающих форматирование, в Excel нет. Так что ваши мечты таковыми и останутся.

Автор - RAN
Дата добавления - 25.03.2016 в 19:28
StoTisteg Дата: Пятница, 25.03.2016, 22:55 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Хм. Чисто теоретически можно при переходах на странице отслеживать наличие покрашенных столбцов или строк. Только лекарство будет злее болезни :D
[vba]
Код
For i = 1 To Rows.Count
[/vba]
Дальше рассказывать? :p


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Пятница, 25.03.2016, 22:59
 
Ответить
СообщениеХм. Чисто теоретически можно при переходах на странице отслеживать наличие покрашенных столбцов или строк. Только лекарство будет злее болезни :D
[vba]
Код
For i = 1 To Rows.Count
[/vba]
Дальше рассказывать? :p

Автор - StoTisteg
Дата добавления - 25.03.2016 в 22:55
Wasilich Дата: Воскресенье, 27.03.2016, 00:34 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 858
Репутация: 220 ±
Замечаний: 0% ±

2003
кто-то выделяет целиком всю строку/столбец и закрашивает её цветом.
А защита листа не помогает от этих действий?
 
Ответить
Сообщение
кто-то выделяет целиком всю строку/столбец и закрашивает её цветом.
А защита листа не помогает от этих действий?

Автор - Wasilich
Дата добавления - 27.03.2016 в 00:34
StoTisteg Дата: Воскресенье, 27.03.2016, 02:10 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Хм. Попробовал. Не помогло почему-то.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеХм. Попробовал. Не помогло почему-то.

Автор - StoTisteg
Дата добавления - 27.03.2016 в 02:10
Wasilich Дата: Воскресенье, 27.03.2016, 09:26 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 858
Репутация: 220 ±
Замечаний: 0% ±

2003
Не помогло почему-то.
Ну не знаю, может в 2010-м и можно залить цветом и поменять формат ячеек то в 2003-м у меня не получается. Проверяем.
К сообщению приложен файл: 11111.xls(14Kb)


Сообщение отредактировал Wasilich - Воскресенье, 27.03.2016, 21:38
 
Ответить
Сообщение
Не помогло почему-то.
Ну не знаю, может в 2010-м и можно залить цветом и поменять формат ячеек то в 2003-м у меня не получается. Проверяем.

Автор - Wasilich
Дата добавления - 27.03.2016 в 09:26
KuklP Дата: Воскресенье, 27.03.2016, 09:54 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 1994
Репутация: 435 ±
Замечаний: 0% ±

В 2010 тоже нельзя.


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВ 2010 тоже нельзя.

Автор - KuklP
Дата добавления - 27.03.2016 в 09:54
StoTisteg Дата: Воскресенье, 27.03.2016, 13:31 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Всё, понял. "Поздравляю тебя Шарик, ты осёл"© А ячейки кто за меня защищать будет? Но как я понял, ТС нужна не полная зашита, а невозможность залить только всю строку или весь столбец...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеВсё, понял. "Поздравляю тебя Шарик, ты осёл"© А ячейки кто за меня защищать будет? Но как я понял, ТС нужна не полная зашита, а невозможность залить только всю строку или весь столбец...

Автор - StoTisteg
Дата добавления - 27.03.2016 в 13:31
al-Ex Дата: Воскресенье, 27.03.2016, 14:53 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 53 ±
Замечаний: 20% ±

Excel 2010
Событий, отслеживающих форматирование, в Excel нет
Ну, попробуем отследить тем что есть, например так:
К сообщению приложен файл: Format_Event.xlsm(23Kb)


Сообщение отредактировал al-Ex - Воскресенье, 27.03.2016, 18:15
 
Ответить
Сообщение
Событий, отслеживающих форматирование, в Excel нет
Ну, попробуем отследить тем что есть, например так:

Автор - al-Ex
Дата добавления - 27.03.2016 в 14:53
fairylive Дата: Воскресенье, 27.03.2016, 20:49 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 3 ±
Замечаний: 0% ±

Excel 2016
А защита листа не помогает от этих действий?

С защитой листа игрался перед тем как тему создать. Не помогает. Защищаются ведь все ячейки (столбцы) справа от таблицы. И тогда нельзя удалять строки. А закрашивать всё равно можно. А надо наоборот. Строка может лишняя создаться или не нужная. Сейчас ещё думаем как те строчки которые заполнены всеми участниками полностью, оптравлять в архив (в другой файл). Вобщем удалять строки надо.

Ну, попробуем отследить тем что есть, например так:

Почти то что надо! Только в таком варинте вообще ничего не закрасить))) А мы всё же некоторые ячейки закрашиваем. Например если что-то изменилось в заказе или заказ отменился - закрашиваем красным. Ну и всё в таком духе.
 
Ответить
Сообщение
А защита листа не помогает от этих действий?

С защитой листа игрался перед тем как тему создать. Не помогает. Защищаются ведь все ячейки (столбцы) справа от таблицы. И тогда нельзя удалять строки. А закрашивать всё равно можно. А надо наоборот. Строка может лишняя создаться или не нужная. Сейчас ещё думаем как те строчки которые заполнены всеми участниками полностью, оптравлять в архив (в другой файл). Вобщем удалять строки надо.

Ну, попробуем отследить тем что есть, например так:

Почти то что надо! Только в таком варинте вообще ничего не закрасить))) А мы всё же некоторые ячейки закрашиваем. Например если что-то изменилось в заказе или заказ отменился - закрашиваем красным. Ну и всё в таком духе.

Автор - fairylive
Дата добавления - 27.03.2016 в 20:49
fairylive Дата: Воскресенье, 27.03.2016, 20:57 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 3 ±
Замечаний: 0% ±

Excel 2016
Ну не знаю, может в 2010-м и можно залить цветом и поменять формат ячеек то в 2003-м у меня на получается. Проверяем.

Так я тоже делал. Но так вообще ничего не закрасить и границы не присвоить. А в самой таблицы мы всё же закрашиваем некоторые ячейки.
 
Ответить
Сообщение
Ну не знаю, может в 2010-м и можно залить цветом и поменять формат ячеек то в 2003-м у меня на получается. Проверяем.

Так я тоже делал. Но так вообще ничего не закрасить и границы не присвоить. А в самой таблицы мы всё же закрашиваем некоторые ячейки.

Автор - fairylive
Дата добавления - 27.03.2016 в 20:57
StoTisteg Дата: Воскресенье, 27.03.2016, 21:22 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Но al-Ex в правильную сторону думает, ИМХО. Осталось отследить только ситуации, когда Target — ряд или колонка...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеНо al-Ex в правильную сторону думает, ИМХО. Осталось отследить только ситуации, когда Target — ряд или колонка...

Автор - StoTisteg
Дата добавления - 27.03.2016 в 21:22
Wasilich Дата: Воскресенье, 27.03.2016, 21:36 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 858
Репутация: 220 ±
Замечаний: 0% ±

2003
"Поздравляю тебя Шарик, ты осёл"
Я не понял!!! Ты это кому? И как это понимать?


Сообщение отредактировал Wasilich - Воскресенье, 27.03.2016, 21:58
 
Ответить
Сообщение
"Поздравляю тебя Шарик, ты осёл"
Я не понял!!! Ты это кому? И как это понимать?

Автор - Wasilich
Дата добавления - 27.03.2016 в 21:36
Wasilich Дата: Воскресенье, 27.03.2016, 21:42 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 858
Репутация: 220 ±
Замечаний: 0% ±

2003
И тогда нельзя удалять строки. А закрашивать всё равно можно
Я выложил пример. Вы проверяли? Закрашивается? Строки не удаляются?
Я не на чем не настаиваю. Есть варианты, используйте!


Сообщение отредактировал Wasilich - Воскресенье, 27.03.2016, 21:46
 
Ответить
Сообщение
И тогда нельзя удалять строки. А закрашивать всё равно можно
Я выложил пример. Вы проверяли? Закрашивается? Строки не удаляются?
Я не на чем не настаиваю. Есть варианты, используйте!

Автор - Wasilich
Дата добавления - 27.03.2016 в 21:42
StoTisteg Дата: Воскресенье, 27.03.2016, 21:49 | Сообщение № 15
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Я не понял!!! Ты это кому? И как это понимать?

Это я про себя, забывшего про одну из галок в защите.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
Сообщение
Я не понял!!! Ты это кому? И как это понимать?

Это я про себя, забывшего про одну из галок в защите.

Автор - StoTisteg
Дата добавления - 27.03.2016 в 21:49
al-Ex Дата: Понедельник, 28.03.2016, 00:09 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 53 ±
Замечаний: 20% ±

Excel 2010
Почти то что надо!
Ну да, именно что почти, один баг есть, не соображу как исключить.
если в выделенном диапазоне ячейка залита чёрным, то и диапазон весь чёрным покрасить можно.
чёт сходу не пойму как исключить это.
Только в таком варинте вообще ничего не закрасить
1.Моя задача была, - отследить событие листа - ("изменение цвета заливки"), подручными средствами.
Получилось,( пока за исключением чёрного цвета).
2.Теперь вы на это событие свои условия повесить можете, а не просто "Undo" и "Msg", как у меня в примере.
Например список исключений ввести.


Сообщение отредактировал al-Ex - Понедельник, 28.03.2016, 00:28
 
Ответить
Сообщение
Почти то что надо!
Ну да, именно что почти, один баг есть, не соображу как исключить.
если в выделенном диапазоне ячейка залита чёрным, то и диапазон весь чёрным покрасить можно.
чёт сходу не пойму как исключить это.
Только в таком варинте вообще ничего не закрасить
1.Моя задача была, - отследить событие листа - ("изменение цвета заливки"), подручными средствами.
Получилось,( пока за исключением чёрного цвета).
2.Теперь вы на это событие свои условия повесить можете, а не просто "Undo" и "Msg", как у меня в примере.
Например список исключений ввести.

Автор - al-Ex
Дата добавления - 28.03.2016 в 00:09
fairylive Дата: Понедельник, 28.03.2016, 00:31 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 3 ±
Замечаний: 0% ±

Excel 2016
Я выложил пример. Вы проверяли? Закрашивается? Строки не удаляются?

Разумеется смотрел. Нельзя закрасить целиком строчку. И вообще никаких ячеек на листе. А мне надо только чтоб строка не закрашивалась а всё остальное в моей таблице чтоб можно было редактировать. Заливать заливкой в том числе. Вобщем защита листа это не совсем то что надо.
 
Ответить
Сообщение
Я выложил пример. Вы проверяли? Закрашивается? Строки не удаляются?

Разумеется смотрел. Нельзя закрасить целиком строчку. И вообще никаких ячеек на листе. А мне надо только чтоб строка не закрашивалась а всё остальное в моей таблице чтоб можно было редактировать. Заливать заливкой в том числе. Вобщем защита листа это не совсем то что надо.

Автор - fairylive
Дата добавления - 28.03.2016 в 00:31
fairylive Дата: Понедельник, 28.03.2016, 00:37 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 3 ±
Замечаний: 0% ±

Excel 2016
2.Теперь вы на это событие свои условия повесить можете, а не просто "Undo" и "Msg", как у меня в примере.
Например список исключений ввести.

Условие по идее такое - надо позволить закрашивать красным и жёлтым. Но не позволять закрашивать всю строчку. По идее последнее может означать не позволять закрашивать некий пустой диапазон справа от моей таблицы. Если кто-то закрашивают всю строчку то этот диапазон закрашивается и тогда ему говорят что так делать нельзя. А если он красит только строчку выделяя её в таблице то надо такое закрашивание разрешить. Причём только красный и жёлтый цвет. Для меня пока это будет сложно. Но если никто не напишет код попробую вернуться к этой проблеме когда более менее начну разбираться в VBA.
 
Ответить
Сообщение
2.Теперь вы на это событие свои условия повесить можете, а не просто "Undo" и "Msg", как у меня в примере.
Например список исключений ввести.

Условие по идее такое - надо позволить закрашивать красным и жёлтым. Но не позволять закрашивать всю строчку. По идее последнее может означать не позволять закрашивать некий пустой диапазон справа от моей таблицы. Если кто-то закрашивают всю строчку то этот диапазон закрашивается и тогда ему говорят что так делать нельзя. А если он красит только строчку выделяя её в таблице то надо такое закрашивание разрешить. Причём только красный и жёлтый цвет. Для меня пока это будет сложно. Но если никто не напишет код попробую вернуться к этой проблеме когда более менее начну разбираться в VBA.

Автор - fairylive
Дата добавления - 28.03.2016 в 00:37
al-Ex Дата: Понедельник, 28.03.2016, 00:44 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 146
Репутация: 53 ±
Замечаний: 20% ±

Excel 2010
последнее может означать не позволять закрашивать некий пустой диапазон справа от моей таблицы
можно увидеть таблицу эту в примере?, или обозначить правую границу каким либо столбцом ?
Если кто-то закрашивают всю строчку то этот диапазон закрашивается и тогда ему говорят что так делать нельзя
Может не запрещать, а просто зачистить лишнюю заливку? (ту, что правее и ниже таблицы)
Проверку сделать, - разрешить
только красный и жёлтый цвет
это проблемно.
А это просто, вот в примере макрос удаляет любую заливку вне пределов таблицы.
Ну и вообще, скрывает лишнее.
К сообщению приложен файл: Format_Event2.xlsm(24Kb)


Сообщение отредактировал al-Ex - Понедельник, 28.03.2016, 03:45
 
Ответить
Сообщение
последнее может означать не позволять закрашивать некий пустой диапазон справа от моей таблицы
можно увидеть таблицу эту в примере?, или обозначить правую границу каким либо столбцом ?
Если кто-то закрашивают всю строчку то этот диапазон закрашивается и тогда ему говорят что так делать нельзя
Может не запрещать, а просто зачистить лишнюю заливку? (ту, что правее и ниже таблицы)
Проверку сделать, - разрешить
только красный и жёлтый цвет
это проблемно.
А это просто, вот в примере макрос удаляет любую заливку вне пределов таблицы.
Ну и вообще, скрывает лишнее.

Автор - al-Ex
Дата добавления - 28.03.2016 в 00:44
fairylive Дата: Понедельник, 28.03.2016, 12:37 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 3 ±
Замечаний: 0% ±

Excel 2016
К сообщению приложен файл: Format_Event2.xlsm(24Kb)


Интересное решение на счёт видимости отдельных столбцов. Как это реализовано? Что происходит с остальными столбцами если закрашивать всю строчку?

Прикладываю файл. Обычная таблица. Ничего сверхъестественного. Но в общем доступе разбухает и тормозит. Поэтому пытаюсь уменьшить его размер всеми доступными способами.

PS. Сам файл почистил довольно кардинально. Перерыл пол интернета. Советов много. Помогло копирование таблицы в новую книгу. При этом исчезли пустые ячейки, пустые объекты, скрытые имена. Уменьшил журнал изменений до 7 дней (копия файла на сервере делается ежедневно начиная с начала года). Сейчас всё летает. Но чую скоро он опять распухнет и затормозит.
К сообщению приложен файл: ___-2-.rar(72Kb)
 
Ответить
Сообщение
К сообщению приложен файл: Format_Event2.xlsm(24Kb)


Интересное решение на счёт видимости отдельных столбцов. Как это реализовано? Что происходит с остальными столбцами если закрашивать всю строчку?

Прикладываю файл. Обычная таблица. Ничего сверхъестественного. Но в общем доступе разбухает и тормозит. Поэтому пытаюсь уменьшить его размер всеми доступными способами.

PS. Сам файл почистил довольно кардинально. Перерыл пол интернета. Советов много. Помогло копирование таблицы в новую книгу. При этом исчезли пустые ячейки, пустые объекты, скрытые имена. Уменьшил журнал изменений до 7 дней (копия файла на сервере делается ежедневно начиная с начала года). Сейчас всё летает. Но чую скоро он опять распухнет и затормозит.

Автор - fairylive
Дата добавления - 28.03.2016 в 12:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Событие на форматирование строки (Макросы/Sub)
Страница 1 из 212»
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!