Раскраска вкладок Excel на основе значения ячейки на каждом листе - PullRequest
0 голосов
/ 17 мая 2018

Попытка заставить VBA циклически проходить по листам и выделять красным цветом вкладку, если K1 на каждом листе> 0. То, что у меня до сих пор не получается, проходить по листам, просто цвета активного листа:

    Sub IfJNegRedTab()
'
'
'
Dim sht As Worksheet

For Each sht In ActiveWorkbook.Worksheets

Range("K1").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(C[-1],""<0"")"

If Range("K1").Value > 0 Then
With ActiveWorkbook.ActiveSheet.Tab
        .Color = 255
        .TintAndShade = 0
End With
End If
Next sht
'
End Sub

1 Ответ

0 голосов
/ 17 мая 2018

Всегда убедитесь, что вы ссылаетесь на намеченный лист.Просто Range(A1) будет ссылаться на активный лист.Вам нужно сделать Sheets("MySheet").Range(A1).Обратите внимание, что также лучше всего избегать использования .Select / .Activate

Sub IfJNegRedTab()
Dim sht     As Worksheet

For Each sht In ActiveWorkbook.Worksheets
    With sht
        .Range("K1").FormulaR1C1 = "=COUNTIF(C[-1],""<0"")"
        If .Range("K1").Value > 0 Then
            With .Tab
                .Color = 255
                .TintAndShade = 0
            End With
        End If
    End With
Next sht
End Sub

Кроме того, формула в K1, используемая только для проверки значения в столбце слева, может бытьудалено:

Sub IfJNegRedTab_v2()
Dim sht     As Worksheet

For Each sht In ActiveWorkbook.Worksheets
    With sht
        If .Range("K1").Offset(0, -1).Value < 0 Then
            With .Tab
                .Color = 255
                .TintAndShade = 0
            End With
        End If
    End With
Next sht
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...