Изменение цвета ярлыков листов
09.12.2013, 14:44 | |
[ Файл-пример (68.5 Kb) ] | |
В примере ярлык листа с названием «Лист1» станет черным, ярлык второго листа книги станет красным, третьего листа — желтым:
Sub ChangeTabColor() ThisWorkbook.Worksheets("Лист1").Tab.ColorIndex = 1 ThisWorkbook.Worksheets(2).Tab.Color = vbRed ThisWorkbook.Worksheets(3).Tab.Color = RGB(255, 255, 0) End Sub Удалить раскраску ярлыков листов во всей книге можно так: Sub ClearTabColor() Dim ws As Worksheet For Each ws In Worksheets ws.Tab.ColorIndex = xlColorIndexNone Next ws End Sub |
|
Добавил: Serge_007 | | Теги: ярлыки листов, vba, ВБА, цвет ярлыка листа |
|
Просмотров: 10468
| Рейтинг: 5.0/1 |
Всего комментариев: 4 | |
Порядок вывода комментариев:
|
|
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
wertual Пользователь Сообщений: 24 |
Добрый день! Изменение цвета ярлыка листа при каком либо условии вообще возможно? Если да, то как? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
Nic70y Пользователь Сообщений: 3289 Win7 MSO 2013 |
Ни чего в макросах не понимаю. Прикрепленные файлы
|
wertual Пользователь Сообщений: 24 |
К сожалению, у меня ничего не получилось… |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#5 01.05.2013 00:39:35
Если ячейка А1 активного листа > 5, то ярлычок второго листа заливаем красным. Иначе без заливки. |
||
wertual Пользователь Сообщений: 24 |
Юрий М, Спасибо! ПОдскажите,а если значение текстовое, например «Да» или «НЕТ»? |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#7 01.05.2013 01:17:07
|
||
wertual Пользователь Сообщений: 24 |
C цифрами получается, а вот с текстом получается только в одну сторону: Спасибо , что откликнулись! Изменено: wertual — 01.05.2013 01:33:18 |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#9 01.05.2013 01:37:21
Не верю. А «на лету» — тоже макрос. См. пример: в ячейку А1 Лист1 вводим Да — второй ярлык будет красный, Нет — синий, любое другое значение — без заливки. Код в модуле листа. Прикрепленные файлы
|
||
wertual Пользователь Сообщений: 24 |
нет, не работает, видимо у меня что-то не то с Excel… Даже Ваш файлик, за что Вам огромное спасибо, не работает,я его просто качаю, открываю, пишу да в желтой ячейке, а он ничего… ААА, оказывается я регистр не учел, все работает и прекрасно работает, большущая Вам благодарность!!! |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Про регистронезависимость Вы ничего не говорили, а для Excel «Да» и «да» — разные вещи)) |
Добрый День Всем!!! |
|
Разобрался немного. Исправил макрос. Теперь при выборе из ячеек А1:А6 закрашиваются ярлычки соответствующих выбранных листов, но если какой либо параметр убираешь из ячеек А1:А6, то закрашенные листы все равно остаются. Не могу сообразить как дописать макрос, чтобы при отсутствии параметра в ячейках А1:А6 на соответствующем листе убиралось бы закрашивание ярлычка листа. |
|
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
Юрий, Спасибо большое! Все отлично работает! |
|
Не могу под свой пример этот макрос переписать. |
|
k61 Пользователь Сообщений: 2441 |
#17 22.08.2013 07:56:55 Для столба «B», в этой части кода Юрия исправьте 1 на 2:
|
||
С этим да, я уже разобрался. Но почему то когда вставляю в свой пример, у меня выводит ошибку на строчку кода: А так впринципе листы закрашиваются даже с ошибкой… только не могу понять что за ошибка |
|
k61 Пользователь Сообщений: 2441 |
Ну видимо листа с именем равным значению в ячейке Cells(i, 4) не существует. |
AlexZanderG Пользователь Сообщений: 41 |
#20 22.08.2013 08:32:40 Извините. да немного перепутал. Вот код я изменил немного.
Но не знаю как поменять данную строчку кода чтоб он не по всем 26 строчкам считывал а только по данным (1, 6, 11, 16, 21, 26):
Файл прилагаю так же. Прикрепленные файлы
|
||||
k61 Пользователь Сообщений: 2441 |
#21 22.08.2013 08:49:14
|
||
k61, спасибо большое Вам! все работает хорошо! Код понял как работает. |
|
k61 Пользователь Сообщений: 2441 |
#23 22.08.2013 09:09:38 Укоротим.
|
||
Да, последний код будет универсальнее. Спасибо большое Вам! |
|
sandiro Пользователь Сообщений: 27 |
Добрый день! На листе Лист1 в зависимости от результатов вычислений ячейки A1 и B1 окрашиваются обе в красный или зелёный цвет . |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
sandiro, можно. С Вас файл-пример. <#0> |
sandiro Пользователь Сообщений: 27 |
Вот пример Прикрепленные файлы
|
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
#28 28.10.2015 15:39:03
Прикрепленные файлы
<#0> |
|
sandiro Пользователь Сообщений: 27 |
|
sandiro Пользователь Сообщений: 27 |
#30 29.10.2015 16:15:56 Тогда ещё спрошу… Очень надо… Прикрепленные файлы
|
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
1 |
|
Как автоматически выделить красным ярлычок листа в книге22.01.2013, 02:29. Показов 4685. Ответов 14
Вот такая проблема.. Есть книга — в ней 140 листов таблиц с финданными (все заполнены однотипными таблицами).. некоторые в зависимости от задания заполняются, некоторые пустые.. Как можно средствами Экселя (2003) или с помощью макроса сделать так,чтобы например автоматически выделялся ярлычок листа красным цветом, если , допустим, ячейка A1 в листе содержит цифровую или текстовую информацию ? Как это можно сделать ?
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,932 |
||||
22.01.2013, 10:18 |
2 |
|||
для одного листа
в модуль Лист1
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
22.01.2013, 10:25 [ТС] |
3 |
Спасибо, Но нужно как раз для всех листов
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
22.01.2013, 10:28 |
4 |
|||
данный код можно вставить во все листы… Не надо, можно вставить в модуль книги
Но нужно ли вызывать эту процедуру при любом изменении в книге?
1 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,932 |
|
22.01.2013, 10:56 |
5 |
Не надо, можно вставить в модуль книги Казанский а разве в 3 строка данного мной кода не нужно ничего менять? Имею ввиду
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
22.01.2013, 11:06 [ТС] |
6 |
Да наверное с «Лист1» что надо делать.. просто с Sub Workbook_BeforeSave макрос не запускается..У меня 2003 ЭКсель !
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,932 |
||||
22.01.2013, 12:29 |
7 |
|||
код на кнопку
Добавлено через 14 минут
1 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
22.01.2013, 12:45 |
8 |
|||
а разве в 3 строка данного мной кода не нужно ничего менять? Имею ввиду Конечно, надо.
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
24.01.2013, 01:17 [ТС] |
9 |
Добавлено через 14 минут Да, тоже было бы неплохо иметь.. Типа если данные в ячейке (A1) исчезают, то ярлычок становится снова белым.. Если можно пришлите пример в экселевском файле на 2003 версию Excel.. что-то не запускается у меня макрос..
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,932 |
|
24.01.2013, 09:21 |
10 |
вставил код от Казанский
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
25.01.2013, 10:05 [ТС] |
11 |
а как собственно говоря сам макрос в excel 2003 перенести..Я делаю так — кликаю правой кнопкой мыши на ярлычке затем сохраняю через экспорт в нужном файле, меняя номер ячейки, но он что-то отказывается работать.. может что-то не так делаю ? Спасибо большое..
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,932 |
|
25.01.2013, 10:25 |
12 |
Alt+F11 в окне слева находите ваш файл (если окна нет жмем Ctrl+R) а в нем «Эта книга» двойной клик — откроется код для книги. Выделяем копируем переходим в другую книгу там же слева открываем у него «Эта книга» вставляем.
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
25.01.2013, 11:02 [ТС] |
13 |
Да. Все работает замечательно.. спасибо большое..а предыдущий пример не получается сделать ? , т.е. с одним макросом на 4 столбца на всю книгу с добавлением в диапазоны (4 диапазона) новых текстов.. или как можно сделать 4 отдельных макроса ?
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,932 |
|
25.01.2013, 11:08 |
14 |
Там я пас — моих знаний VBA недостаточно.
1 |
0 / 0 / 0 Регистрация: 23.09.2011 Сообщений: 61 |
|
25.01.2013, 13:14 [ТС] |
15 |
Там я пас — моих знаний VBA недостаточно. А Казанский может помочь ?
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
25.01.2013, 13:14 |
Помогаю со студенческими работами здесь Сохранение текущего листа с сохранением имени листа и присвоением новой книге имени текущего листа Как перенести данные с одного листа на другой в одной книге Тестер. Как выделить правильные ответы зелёным, а не правильные красным? Как задать условие проверки того, что вводимое название листа уже есть в этой книге? (Да-да, я не шучу) Как в Excel создать правило, чтобы данные автоматически с одного листа на другой Выделить прошедшую дату красным Задача: в приложенном файле надо… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 15 |
Задача: Нужно програмно создать новый лист, при этом выдается запрос о его имени и цвете.
С именем пользую просто инпутбокс, а вот с выбором цвета ярлычка…
цвет меняется через
лист.tab.index = цвет
но он не подчиняется стандартной схеме RGB!
А выберается из константного набора около 20-30 цветов.
Когда просто из екселя меняешь цвет, то вылезает маленькое окошечко с этой палитрой.
Главный вопрос: как его вызвать программно?
ЗЫ: а еще заодно как вызвать стандартную палитру RGB?
5 ответов
275
19 марта 2006 года
pashulka
985 / / 19.09.2004
Код:
Application.CommandBars.FindControl(ID:=5747).Execute
16K
21 марта 2006 года
Dixon_Che
3 / / 13.03.2006
Цитата:
Originally posted by pashulka
Код:
Application.CommandBars.FindControl(ID:=5747).Execute
Спасибо большое!!!
А этот
ID:=5747
от версии офиса не зависит?
275
21 марта 2006 года
pashulka
985 / / 19.09.2004
Насколько мне известно этот идентификационный номер уникален, но он появился только в MS Excel XP, так как в более ранних версиях изменить цвет ярлычка было нельзя (средствами MS Excel) Но если возможен вариант, что версии приложений будут отличаться, то можно использовать что-то вроде :
Код:
With Application
If Val(.Version) >= 10 Then
.CommandBars.FindControl(ID:=5747).Execute
Else
MsgBox «В версии : » & .Version & vbCrLf & _
«невозможно вызвать диалоговое окно» & vbCrLf & _
«изменения цвета ярлычка», vbExclamation, «»
End If
End With
Код:
With Application
Set iFindControl = .CommandBars.FindControl(ID:=5747)
If Not iFindControl Is Nothing Then
iFindControl.Execute
Else
MsgBox «В версии : » & .Version & vbCrLf & _
«невозможно вызвать диалоговое окно» & vbCrLf & _
«изменения цвета ярлычка», vbExclamation, «»
End If
End With
16K
21 марта 2006 года
Dixon_Che
3 / / 13.03.2006
Цитата:
Originally posted by pashulka
Насколько мне известно этот идентификационный номер уникален, но он появился только в MS Excel XP, так как в более ранних версиях изменить цвет ярлычка было нельзя (средствами MS Excel) Но если возможен вариант, что версии приложений будут отличаться, то можно использовать что-то вроде :
Код:
With Application
If Val(.Version) >= 10 Then
.CommandBars.FindControl(ID:=5747).Execute
Else
MsgBox «В версии : » & .Version & vbCrLf & _
«невозможно вызвать диалоговое окно» & vbCrLf & _
«изменения цвета ярлычка», vbExclamation, «»
End If
End With
Код:
With Application
Set iFindControl = .CommandBars.FindControl(ID:=5747)
If Not iFindControl Is Nothing Then
iFindControl.Execute
Else
MsgBox «В версии : » & .Version & vbCrLf & _
«невозможно вызвать диалоговое окно» & vbCrLf & _
«изменения цвета ярлычка», vbExclamation, «»
End If
End With
Как исключительную ситуацию обработать я понял. FindControl ищет по номеру именно кнопоку которая запускает это окошко и уже как бы ее нажимает (я прально понимаю?)
Использовать так можно и понятно, а непосредственно само окошко вызвать без обращения к CommandBars.. а?
зы: Как ты это нашол?
275
22 марта 2006 года
pashulka
985 / / 19.09.2004
1. Всё правильно, метод .FindControl и .FindControls (MS Excel 2000) ищут CommandBarControl, только найденный контрол, может быть не только кнопкой.
2. Cтандартные диалоговые окна можно вызвать так :
Код:
Application.Dialogs(xlDialogWorkbookName).Show
Но вопрос, можно ли подобным образом, вызвать нужное Вам диалоговое окно, необходимо переадресовать владельцам MS Excel XP
3. Просто зашёл к людям, у которых установлен именно MS Excel XP и посмотрел нужный мне ID
Формулировка задачи:
как создать по средствам VBA процедуру, которая будет при каждом создании нового листа в Excel будет
перекрашивать ярлык созданного листа в случайный цвет?
Код к задаче: «VBA при каждом создании нового листа в Excel окрашивать ярлык»
textual
Private Sub Workbook_NewSheet(ByVal Sh As Object) Randomize Sh.Tab.ColorIndex = Int((55 * Rnd)) + 3 End Sub
Полезно ли:
15 голосов , оценка 4.200 из 5