Изменить цвет вкладки на основе ячейки (в которой есть формула) на другом листе для многих листов - PullRequest
0 голосов
/ 27 мая 2020

Первая попытка была закрыта как дубликат, и я использовал предложенный поток ( Код VBA не запускается, когда ячейка изменяется по формуле ), и я внес некоторые изменения, но он все еще не работает не работает, ничего не происходит.

Я хотел бы изменить цвет вкладки листа в зависимости от значения ячейки (в которой есть формула) на другом листе, но в той же книге. Другой лист - это главный лист «Сводки тестов», и ячейка, на которую я хотел бы сослаться, отличается для каждого листа.

Что мне нужно:

  • Вкладка «Микроскопия» », чтобы изменить любой цвет на красный / оранжевый / зеленый на основе формулы в ячейке« C2 »(в данном случае красный) листа« Сводки тестов »(в данном случае красный). Вкладка
  • « Культура »для изменения любого цвета на красный / оранжевый / зеленый на основе формулы в ячейке «C3» листа «Сводки тестов» (в данном случае красный)
  • ... и так далее

На картинке вы ' Я вижу, что у меня есть формула, которая сообщает мне, какого цвета должна быть вкладка на основе определенных c критериев тестирования. Я пробовал следующий код, но он не изменит цвет вкладки, если ячейка не содержит текст, а макрос позволяет мне ссылаться только на одну ячейку.

Мой обновленный код, который является в объекте Sheet "Microscopy".

    Private Sub Worksheet_Calculate1(ByVal Target As Range)
Dim MyVal$
MyVal = ActiveWorkbook.Sheets("Test Summaries").Range("C2")

With ActiveSheet.Tab
    Select Case MyVal
        Case "RED"
            .Color = vbRed
       Case "GREEN"
            .Color = vbGreen
        Case "AMBER"
            .ColorIndex = 45

    End Select
End With
End Sub

Private Sub Worksheet_Calculate()
    If Range("A1").Value <> PrevVal Then
        MsgBox "Value Changed"
        PrevVal = Range("A1").Value
    End If
End Sub

Но это не сработало (ничего не происходит), поэтому я добавил следующее на основе потока. Я внес некоторые изменения в свой код, но ничего не происходит. .

Этот код в объекты ThisWorkbook (но я не понимаю, что он должен делать, но это кажется неправильным, поскольку мне нужно, чтобы каждая вкладка ссылалась на другую ячейку)

Private Sub Workbook_Open()
    PrevVal = Sheet1.Range("C3").Value
End Sub

Затем в Модули 1 я поместил это

Private Sub Workbook_Open()
    PrevVal = Sheet1.Range("C3").Value
End Sub

Я был бы очень признателен за помощь. Кстати, я работаю в Excel 2010

1 Ответ

0 голосов
/ 27 мая 2020

Что-то вроде следующего должно помочь, перебирая список имен рабочих листов в столбце A и используя Offset для ссылки на соответствующую формулу в столбце C.

Private Sub Worksheet_Calculate()
    Dim rng As Range
    For Each rng In Me.Range("A2:A5") ' change as needed
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Worksheets(rng.Value)

        Select Case rng.Offset(, 2).Value
            Case "RED"
                ws.Tab.Color = vbRed
            Case "GREEN"
                ws.Tab.Color = vbGreen
            Case "AMBER"
                ws.Tab.ColorIndex = 45
        End Select
    Next
End Sub

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...