Условное условие форматирования: если выбранная ячейка ("cel7") не пуста, тогда поместите в нее черную заливку. Как я могу изменить мой текущий код так, чтобы условное форматирование использовалось в cel7. Я попытался использовать xlnoblankscondition, но я не смог найти примеры VBA в Интернете. П.С .: Поскольку я написал все ячейки cel7 как С1, каждое условие будет истинным, т.е. НЕ ПУСТО.

x = ws.Range("A4").Value
y = ws.Range("A5").Value
ocol = 4
Set cel = Range("E6")
Set cel7 = cel.Offset(2, 0)
For m = 1 To x
For o = 1 To y
        cel7.Value = "C1"
         cel7.Select
            With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        End With
        Set cel7 = cel7.Offset(4, 0)
        Next
Set cel = cel.Offset(0, ocol)
Set cel7 = cel7.Offset(0, ocol)
Next
0
Pramod Pandit 4 Май 2020 в 12:31

2 ответа

Извините, так как мне все еще не ясно, что вы имеете в виду.

Во всяком случае, я предполагаю, что вы хотите кодировать условное форматирование, так же, как когда вы делаете это вручную.

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

Sub test()
    Cells.FormatConditions.Delete
    cel7.Select
    cf = cel7.Address(0, 0)

    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=NOT(ISBLANK(" & cf & "))"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Application.WindowState = xlMaximized
End Sub

Я пытаюсь код выше, имея переменную cel7 обратиться к ячейке D10. После запуска кода, если я что-то наберу в ячейке D10, D10 заполняет черный шрифт белым цветом. Если я очищаю содержимое D10, D10 возвращается в нормальное состояние (без заполнения).

Также я пытаюсь иметь переменную cel7 в диапазоне от D2 до D10. Если я наберу на любой ячейке в D2: D10, ячейка заполнится черным с белым шрифтом. Если я это уберу, клетка вернется в норму.

Но еще раз, может быть, это не то, что вы хотите достичь.

0
karma 4 Май 2020 в 10:37

В приведенном ниже коде я вынул ваш Выбор Cel7. Вы можете обратиться к диапазону напрямую. Я также добавил объявления переменных. Отказ от них вызывает больше работы, чем экономит. В остальном цвет ячейки применяется, если найдено, что ячейка не Empty.

Sub Macro1()

    Dim Ws As Worksheet
    Dim Cel As Range, Cel7 As Range
    Dim Tmp As Variant
    Dim oCol As Long
    Dim x As Long, y As Long
    Dim m As Long, o As Long

    Set Ws = ActiveSheet
    x = Ws.Range("A4").Value
    y = Ws.Range("A5").Value
    oCol = 4

    Set Cel = Ws.Range("E6")
    Set Cel7 = Cel.Offset(2, 0)
    For m = 1 To x
        For o = 1 To y
            With Cel7
                Tmp = "C1"          ' avoid read/write to  sheet multiple times
                .Value = Tmp
                If IsEmpty(Tmp) Then
                    .Interior.Pattern = xlNone
                Else
                    .Interior.Color = vbBlack
                End If

                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
            Set Cel7 = Cel7.Offset(4, 0)
        Next o
        Set Cel = Cel.Offset(0, oCol)
        Set Cel7 = Cel7.Offset(0, oCol)
    Next m
End Sub
0
Variatus 4 Май 2020 в 11:14