Уважаемые гуру форума! Столкнулся с проблемой связанной со сложным логическим выражением. Присвоение цвета ярлычку должно происходить если выполнится логическое выражение: ЕСЛИ (А1 не пусто) и (В2 не пусто) и (В3 не пусто) и (С4 не пусто) и (одно из диапазона ячеек Е2:Е7 не пусто) и (одно из диапазона ячеек G2:J2 не пусто) ТО присваивается цвет ИНАЧЕ без цвета. Как в VBA прикрутить логический выбор из диапазона не знаю..Нужна помощь.
Макросы встроены в каждый лист [vba]
Код
Private Sub Worksheet_Deactivate() If Range("A1") <> "" And Range("B2") <> "" And Range("B3") <> "" And Range("C4") <> "" Then ThisWorkbook.Worksheets(1).Tab.Color = RGB(204, 255, 153) Else ThisWorkbook.Worksheets(1).Tab.ColorIndex = xlNone End If End Sub
[/vba]
Уважаемые гуру форума! Столкнулся с проблемой связанной со сложным логическим выражением. Присвоение цвета ярлычку должно происходить если выполнится логическое выражение: ЕСЛИ (А1 не пусто) и (В2 не пусто) и (В3 не пусто) и (С4 не пусто) и (одно из диапазона ячеек Е2:Е7 не пусто) и (одно из диапазона ячеек G2:J2 не пусто) ТО присваивается цвет ИНАЧЕ без цвета. Как в VBA прикрутить логический выбор из диапазона не знаю..Нужна помощь.
Макросы встроены в каждый лист [vba]
Код
Private Sub Worksheet_Deactivate() If Range("A1") <> "" And Range("B2") <> "" And Range("B3") <> "" And Range("C4") <> "" Then ThisWorkbook.Worksheets(1).Tab.Color = RGB(204, 255, 153) Else ThisWorkbook.Worksheets(1).Tab.ColorIndex = xlNone End If End Sub
А зачем в каждый лист, когда можно один в модуль книги? [vba]
Код
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) With Sh If Len(.Range("A1")) And Len(.Range("B2")) And Len(.Range("B3")) And Len(.Range("C4")) _ And Application.CountA(.Range("E2:E7")) > 0 And Application.CountA(.Range("G2:J2")) > 0 Then .Tab.Color = RGB(204, 255, 153) Else .Tab.ColorIndex = xlNone End If End With End Sub
[/vba]
А зачем в каждый лист, когда можно один в модуль книги? [vba]
Код
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) With Sh If Len(.Range("A1")) And Len(.Range("B2")) And Len(.Range("B3")) And Len(.Range("C4")) _ And Application.CountA(.Range("E2:E7")) > 0 And Application.CountA(.Range("G2:J2")) > 0 Then .Tab.Color = RGB(204, 255, 153) Else .Tab.ColorIndex = xlNone End If End With End Sub
RAN, да согласен. Ваш код конечно помог. Почему делал на каждый лист - в реальном файле 30 листов и последние 3 листа в случае ИНАЧЕ должны окрашиваться в другой цвет. Думаю конечно что и этот момент можно учесть, но у меня знаний не хватает..
RAN, да согласен. Ваш код конечно помог. Почему делал на каждый лист - в реальном файле 30 листов и последние 3 листа в случае ИНАЧЕ должны окрашиваться в другой цвет. Думаю конечно что и этот момент можно учесть, но у меня знаний не хватает..kolesnikovfamily2012
В итоге для моей задачи получился такой код к листу (учитывая, что в ячейках А,В,С могут быть как числа так и текст, а в диапазонах только одна из ячеек должна содержать число)
[vba]
Код
Private Sub Worksheet_Deactivate() If Len(Range("A1")) > 0 And Len(Range("B2")) > 0 And Len(Range("B3")) > 0 And Len(Range("C4")) > 0 _ And Application.Count(Range("E2:E7")) = 1 And Application.Count(Range("G2:J2")) = 1 Then ThisWorkbook.Worksheets(1).Tab.Color = RGB(204, 255, 153) Else ThisWorkbook.Worksheets(1).Tab.Color = xlNone End If End Sub
[/vba]
В итоге для моей задачи получился такой код к листу (учитывая, что в ячейках А,В,С могут быть как числа так и текст, а в диапазонах только одна из ячеек должна содержать число)
[vba]
Код
Private Sub Worksheet_Deactivate() If Len(Range("A1")) > 0 And Len(Range("B2")) > 0 And Len(Range("B3")) > 0 And Len(Range("C4")) > 0 _ And Application.Count(Range("E2:E7")) = 1 And Application.Count(Range("G2:J2")) = 1 Then ThisWorkbook.Worksheets(1).Tab.Color = RGB(204, 255, 153) Else ThisWorkbook.Worksheets(1).Tab.Color = xlNone End If End Sub