Первая попытка была закрыта как дубликат, и я использовал предложенный поток ( Код 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