Изменить цвет шрифта, когда условие ячейки не выполняется VBA - PullRequest
0 голосов
/ 01 ноября 2018

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

Ниже приведен снимок экрана экрана ввода данных:

enter image description here Ниже приведен код, который я написал на листе:

Option Explicit
Public Rec_Cnt As Integer
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng3 As Range
Dim Rng4 As Range

Rec_Cnt = Sheets("MD").Cells(3, 7)

Set Rng1 = Range("G2:G" & Rec_Cnt + 1)
Set Rng2 = Range("M2:M" & Rec_Cnt + 1)
Set Rng3 = Range("S2:S" & Rec_Cnt + 1)
Set Rng4 = Range("D2:E" & Rec_Cnt + 1)

If Not Application.Intersect(Target, Rng1) Is Nothing Then
    If Len(Target) > 10 Then
       Call Original_Ticket_Greater_Error
    ElseIf Len(Target) < 10 Then
       Call Original_Ticket_Lesser_Error
    ElseIf Len(Target) = 10 Then
        Cells(Target.Row, 8).Value = 9
        Cells(Target.Row, 9).Value = "|"
        Cells(Target.Row, 10).Value = "|"
        Cells(Target.Row, 11).Value = "|"
        Cells(Target.Row, 12).Value = "|"
    Exit Sub
    End If
ElseIf Not Application.Intersect(Target, Rng2) Is Nothing Then
    If Len(Target) > 10 Then
       Call Original_Cnj_Ticket_Greater_Error
    ElseIf Len(Target) < 10 Then
       Call Original_Cnj_Ticket_Lesser_Error
    ElseIf Len(Target) = 10 Then
        Cells(Target.Row, 14).Value = 9
        Cells(Target.Row, 15).Value = "|"
        Cells(Target.Row, 16).Value = "|"
        Cells(Target.Row, 17).Value = "|"
        Cells(Target.Row, 18).Value = "|"
    Exit Sub
    End If
ElseIf Not Application.Intersect(Target, Rng3) Is Nothing Then
    If Len(Target) > 10 Then
       Call Original_Ticket_Greater_Error
    Exit Sub
    ElseIf Len(Target) < 10 Then
       Call Original_Ticket_Lesser_Error
    Exit Sub
    End If
ElseIf Not Application.Intersect(Target, Rng4) Is Nothing Then
    If Cells(Target.Row, 3).Value = "Sales" Or Cells(Target.Row, 3).Value = "Sales Conjunction" Then
        Cells(Target.Row, 6).Value = Application.Sum((Cells(Target.Row, 4).Value), (Cells(Target.Row, 5).Value))
        Cells(Target.Row, 6).Value = Int(Cells(Target.Row, 6).Value * 100)
    End If
End If

End Sub

Sub Original_Ticket_Greater_Error()
    MsgBox "Original Ticket Number is more than 10 characters"
End Sub

Sub Original_Cnj_Ticket_Greater_Error()
    MsgBox "Original Conj. Ticket Number is more than 10 characters"
End Sub

Sub Original_Ticket_Lesser_Error()
    MsgBox "Original Ticket Number is less than 10 characters"
End Sub

Sub Original_Cnj_Ticket_Lesser_Error()
    MsgBox "Original Conj. Ticket Number is less than 10 characters"
End Sub

На основании кода вы можете заметить, что я обновляю определенные ячейки только тогда, когда Цель = 10, а в противном случае - нет.

Я хотел изменить шрифт на КРАСНЫЙ, если Цель составляет> 10 или <10, и перепробовал несколько вариантов, но цвет шрифта не изменился. Я использовал Target.Font.Color и аналогичные параметры. </p>

Любая помощь очень ценится.

Спасибо, Сэчин

1 Ответ

0 голосов
/ 02 ноября 2018

Этого можно добиться с помощью условного форматирования.

На ленте Home нажмите Условное форматирование и Управление правилами . Затем выберите Новое правило .

home ribbon

В текстовом поле формулы введите =INDIRECT("G"&ROW())<>10

edit formatting rule

В текстовом поле относится к столбцу минус заголовок =$G$2:$G$1048576

conditional formatting rules manager

Пример результатов:

screenshot

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