Страницы: 1
RSS
группировка листов по цвету или имени одним макросом
 
Как сделать макрос который на 1 срабатывание группирует листы по ЦВЕТУ  
причем например синие листы поставить первыми    желтые-вторыми  красные- третьими желтые-четвертыми   без цвета - пятыми  
 
а на на 2 срабатывание группирует листы по имени 1,2,3,4,5 и тд  
 
возможно ли такое сделать ?
 
Как сейчас - 1,11,13,2,22 - это по порядку, или надо 1,2,...,11,13,22,...?
 
группировку по имени листа нашел ввел в пример  
 
осталоссь только группировка по цвету и условиям (в файле отметил что надо)
 
Вам нужна группировка или сортировка? Сортировка есть в "Приемах": <BR>http://www.planetaexcel.ru/tip.php?aid=75
 
сортировка по цвету листов нужна  
в примере http://www.planetaexcel.ru/tip.php?aid=75 сортировка по имени листа  
 
файл подправил
 
Нужна сортировка, а пишете про группировку...
 
сорри попутал определения
 
Вариант: привлечь внутренние имена листов, предварительно исправив их.
 
http://www.planetaexcel.ru/tip.php?aid=50  написано про функцию  
   
   Public Function ColorIndex(Cell As Range)        
       ColorIndex = Cell.Interior.ColorIndex    
   End Function    
 
но это к ячейкам ...  
как то можно к листам привязать ?
 
с образцами цвета в ячейках на отдельном листе
 
Цвет ярлычка задаётся также как цвет заливки ячейки. Макрорекордер Вам покажет  
Sheets("Лист1").Tab.ColorIndex = 6
 
Sub Макрос2()  
Dim i&, j&  
For j = 2 To Worksheets.Count  
For i = 2 To Worksheets.Count  
If Sheets(i).Tab.Color < Sheets(i - 1).Tab.Color Then  
   Sheets(i).Move Before:=Sheets(i - 1)  
End If  
Next  
Next  
End Sub
 
Sub SortSheetsColor()  
   Dim I As Integer, J As Integer  
 
   For I = 1 To Sheets.Count - 1  
       For J = I + 1 To Sheets.Count  
           If UCase(Sheets(I).Tab.ColorIndex) > UCase(Sheets(J).Tab.ColorIndex) Then  
               Sheets(J).Move Before:=Sheets(I)  
           End If  
       Next J  
   Next I  
Sheets("Сорт листов").Select  
End Sub  
 
 
так сделал 2-м макросом по сортировке по цвету
 
Осталалось 2 вопроса - как сделать  чтоб    
 
1   как задать цветам последовательность выстраивания при сортировке по цвету  
по условию синие листы поставить первыми    желтые-вторыми  красные- третьими зеленые-четвертыми   без цвета - пятыми  
 
 
2    как сделать одной кнопкой чтоб по 1 нажатию макрос1 выполнялся по 2 нажатию этой же кнопки-макрос2
 
файл отредактировал
 
По первому вопросу: отсортируйте по цвету, как есть, затем перекрасьте исходные в нужном порядке, учитывая индексы цветов.  
По второму: добавьте некую логическую переменную и проверяйте её состояние: если Истина - выполняется первый макрос и после этого ей присваивается значение Ложь. Зачем Вам всё это?
 
на вопрос зачем - ярлыки  красятся по опр условию ;условий штук 6;    
листов (ярлыков) в книге будет много    
 
важно отсортировать листы по цвету ярлыка чтоб наглядно было видно (а не смотреть по всей книге)
 
я не силен в программировании по примерам только могу чтото сделать поэтому и прошу помощи
 
Вот пример:  
Dim Переменная As Boolean  
 
Sub Test()  
   If Переменная Then  
       MsgBox "Вызываем Первый макрос"  
       Переменная = Not Переменная  
   Else  
       MsgBox "Вызываем Второй макрос"  
       Переменная = Not Переменная  
   End If  
End Sub
 
получилось вроде  
Юрий спасибо огромное за совет с примером  
 
а вот как по вашему совету перекрасить листы это не знаю к сожалению
 
Вы ведь не можете поменять индексы у палитры. Придётся подстроиться под них - перекрасить свои ярлычки по убыванию/возрастанию значений индексов. И в дальнейшем уже использовать такой набор цветов для ярлычков.
 
Вот так получше будет :-)
 
простой пример перекраски 1 ярлыка если можно покажите
 
а ваш пример с кнопкой лучше - быстрее и не моргает при выполнении макроса
 
{quote}{login=tes3}{date=13.09.2011 01:03}{thema=}{post}простой пример перекраски 1 ярлыка если можно покажите{/post}{/quote}Какой может быть пример? Правый клик по нужному ярлычку - Цвет ярлыка. Раскрасьте свои ярлыки вручную, ориентируясь на индексы: ведь сортировка будет фактически по номеру, а этот номер (индекс) Вы поменять не можете.
Страницы: 1
Читают тему
Наверх