Страницы: 1 2 3 След.
RSS
Изменение цвета ярлыка листа при каком либо условии
 
Добрый день!

Изменение цвета ярлыка листа при каком либо условии вообще возможно? Если да, то как?
Помогите пожалуйста.
 
Возможно. Макросом.
 
Ни чего в макросах не понимаю.
Для интереса записал рекордерем (чуть изменил) работает:
 
К сожалению, у меня ничего не получилось...
 
Код
Sub Макрос1()
    If Range("A1") > 5 Then
        Sheets("Лист2").Tab.ColorIndex = 3
    Else
        Sheets("Лист2").Tab.ColorIndex = xlNone
    End If
End Sub

Если ячейка А1 активного листа > 5, то ярлычок второго листа заливаем красным. Иначе без заливки.
 
Юрий М, Спасибо! ПОдскажите,а если значение текстовое, например "Да" или "НЕТ"?
 
Код
If Range("A1") = "Да" Then
 
C цифрами получается, а вот с текстом получается только в одну сторону:
Если "да", то цвет меняет, а вот еслине да, то не меняет...

Спасибо , что откликнулись!
Этот форум очень полезен мне!
Изменено: wertual - 01.05.2013 01:33:18
 
Цитата
wertual пишет: C цифрами получается, а вот с текстом нет.
Не верю. А "на лету" - тоже макрос. См. пример: в ячейку А1 Лист1 вводим Да - второй ярлык будет красный, Нет - синий, любое другое значение - без заливки. Код в модуле листа.
 
нет, не работает, видимо у меня что-то не то с Excel... Даже Ваш файлик, за что Вам огромное спасибо, не работает,я его просто качаю, открываю, пишу да в желтой ячейке, а он ничего...  ААА, оказывается я регистр не учел, все работает и прекрасно работает, большущая Вам благодарность!!!
 
Про регистронезависимость Вы ничего не говорили, а для Excel "Да" и "да" - разные вещи))
 
Добрый День Всем!!!
Данный макрос привязал к своему примеру. Все хорошо работает.
Только в моем примере нужно немного по другому реализовать.
Допустим есть выбор в ячейках А1:А6 из диапазона D1:D6. Нужно чтобы При выборе хотя бы одного параметра в ячейках  А1:А6 выделялся цветом соответствующий этому параметру лист. Повторений в ячейках А1:А6 быть не может.
Файл примера прилагаю.
Макрос немного изменил, написал сначала для ячейки А1. Почти все работает. Только остается заливка цветом ярлычка предыдущего выбора.
 
Разобрался немного. Исправил макрос. Теперь при выборе из ячеек А1:А6 закрашиваются ярлычки соответствующих выбранных листов, но если какой либо параметр убираешь из ячеек А1:А6, то закрашенные листы все равно остаются. Не могу сообразить как дописать макрос, чтобы при отсутствии параметра в ячейках А1:А6 на соответствующем листе убиралось бы закрашивание ярлычка листа.
Файл переделанный прилагаю. Подскажите пожалуйста кто знает как сделать.
 
См. файл.
 
Юрий, Спасибо большое! Все отлично работает!
P.S.: только не могу понять как этот макрос работает.
 
Не могу под свой пример этот макрос переписать.
Например если перемещаю диапазон A1:A6 в колонку B, получается диапазон B1:B6 и меняю в макросе естественно на диапазон B1:B6, то макрос почему то перестает работать
 
Для столба "B", в этой части кода Юрия исправьте 1 на 2:
Код
If Not IsEmpty(Cells(i, 1)) Then
Sheets(Cells(i, 1).Value).Tab.ColorIndex = 3
End If
 
С этим да, я уже разобрался. Но почему то когда вставляю в свой пример, у меня выводит ошибку на строчку кода:
[CODE][/CODE] Sheets(Cells(i, 4).Value).Tab.ColorIndex = 3

А так впринципе листы закрашиваются даже с ошибкой... только не могу понять что за ошибка
 
Ну видимо листа с именем равным значению в ячейке Cells(i, 4) не существует.
Почему Cells(i, 4).Value, если речь идёт о столбце "B" (втором)?
 
Извините. да немного перепутал.
Допустим речь идет о столбце B. Но данные параметры находятся в ячейках B1, B6, B11, B16, B21, B26.
В других ячейках B2, B3 и т.д. находятся какие либо слова, по которым не надо проводить закрашивание листов.

Вот код я изменил немного.

Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B1, B6, B11, B16, B21, B26")) Is Nothing Then
        
        For i = 2 To Sheets.Count
            Sheets(i).Tab.ColorIndex = xlNone
        Next
        For i = 1 To 26
            If Not IsEmpty(Cells(i, 2)) Then
                Sheets(Cells(i, 2).Value).Tab.ColorIndex = 3
            End If
        Next
    End If
End Sub


Но не знаю как поменять данную строчку кода чтоб он не по всем 26 строчкам считывал а только по данным (1, 6, 11, 16, 21, 26):

Код
        For i = 1 To 26


Файл прилагаю так же.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim sss()
If Target.Cells.Count > 1 Then Exit Sub
  If Not Intersect(Target, Range("B1, B6, B11, B16, B21, B26")) Is Nothing Then
  For i = 2 To Sheets.Count
  Sheets(i).Tab.ColorIndex = xlNone
  Next
  sss = Array("1", "6", "11", "16", "21", "26")
  For i = 0 To 5
    If Not IsEmpty(Cells(Val(sss(i)), 2)) Then
    Sheets(Cells(Val(sss(i)), 2).Value).Tab.ColorIndex = 3
    End If
  Next
End If
End Sub
 
k61, спасибо большое Вам! все работает хорошо! Код понял как работает.
 
Укоротим.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set rrr = Range("B1, B6, B11, B16, B21, B26")
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, rrr) Is Nothing Then
  For i = 2 To Sheets.Count
  Sheets(i).Tab.ColorIndex = xlNone
  Next
  For Each r In rrr
    If Not IsEmpty(r) Then
    Sheets(r.Value).Tab.ColorIndex = 3
    End If
  Next r
End If
End Sub
 
Да, последний код будет универсальнее. Спасибо большое Вам!
 
Добрый день!
Подскажите новичку

На листе Лист1 в зависимости от результатов вычислений ячейки  A1 и B1 окрашиваются обе в красный или зелёный цвет .
А можно ли сделать так что б  цвет листа Лист1  окрашивался тем же цветом что и ячейки ?
 
sandiro, можно. С Вас файл-пример.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Вот пример
 
в модуле листа

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Спасибо ! Всё работает !
 
Тогда ещё спрошу...
Есть Лист1 на нём три диапазона с данными  B3 : B6 , C3 : C6 , D3 : D6
Если сумма значений в (B3 : B6) =  (C3 : C6) + (D3 : D6) ярлык Лист1 был зелёного цвета,
если не равно - красного

Очень надо...
 
Страницы: 1 2 3 След.
Наверх