Попытка автоматически изменить цвета вкладки в Excel - PullRequest
0 голосов
/ 20 февраля 2019

Справочная информация: я работаю над проектом контрольного списка, который имеет около 100 похожих листов.У меня все работает до сводной таблицы.Если флажок снят, то он отображается в этом сводном разделе внизу каждого листа.В нижней части сводного раздела есть итоговая строка, которая в основном показывает количество непроверенных элементов на листе.

ТАК, теперь на мой вопрос.Если эта ячейка имеет значение больше 0, тогда я хочу, чтобы цвет вкладки был красным.Если оно имеет значение 0, тогда я хочу, чтобы цвет вкладки был зеленым для этого листа.

Я видел форумы, на которых люди говорят, что я должен поместить свой код в функцию Worksheet_Change в редакторе VBA для этого листа.,НО это не сработает.Я добавлю туда код, и он не запустится.Мне было интересно, если кто-нибудь знает, где я делаю что-то не так.

Я также пытался поместить код в модуль и вызвать его в коде листа, но это тоже не сработало.Похоже, что другие люди имеют успех с такими вещами, поэтому я уверен, что я просто не думаю о чем-то.

Для справки:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("B104")) Is Nothing Then
    Select Case Target.Value
        Case Is > 0
            ActiveSheet.Tab.ColorIndex = 3 'red
        Case Is = 0
            ActiveSheet.Tab.ColorIndex = 4 'green
        Case Else
            ActiveSheet.Tab.ColorIndex = xlNone 'no color
    End Select
 End If
End Sub

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Используя предложение Тима и вашу логику ... Я бы сделал что-то вроде этого:

Sub Workbook_SheetCalculate(ByVal Sh As Object)

 If sh.name = "thatname" or sh.name = "anothername" then exit sub

      Select Case sh.Range("B104").Value
          Case Is > 0
                Sh.Tab.ColorIndex = 3 'red
          Case Is = 0
                Sh.Tab.ColorIndex = 4 'green
          Case Else
                Sh.Tab.ColorIndex = xlNone 'no color
     End Select
End Sub

Извиняюсь за любые проблемы с отступами, отправляя сообщения с моего телефона.

0 голосов
/ 20 февраля 2019

Это работает для меня.Прокрутите каждый лист (измените A14) и код цвета.

    Sub ColorCodeWS()

      ' loop thru each sheet
      For Each ws In Sheets
         ws.Activate

         If Range("A14") > 0 Then
           ActiveSheet.Tab.ColorIndex = 3 'red
         ElseIf Range("A14") = 0 Then
           ActiveSheet.Tab.ColorIndex = 4 'green
         Else
           ActiveSheet.Tab.ColorIndex = xlNone 'no color
         End If
      Next ws    
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...