Excel VBA:如何使用if语句创buildmacros来更改文本颜色

这是以下问题的延续: 条件格式混乱的原因是什么?

为了防止我的条件格式变得不合时宜,我决定把它转换成VBA中的代码。 我决定从小处着手,将一个条件格式转换成VBA。

说明:

在O栏中有一系列数字,从不同的表格中获得。 用户在列F中input数字。例如,如果F9中的数字小于O9,则字体颜色将变为红色。 如果没有号码保持正常。 该公式应该从第9行开始,可以继续向下,应该是自动的。 意思是在F列键入数字的那一刻,字体颜色应该立即改变。

以下是我迄今创build的代码:

Sub change_color() With Me.Range("f9", Range("f" & Rows.Count).End(xlUp)) 'so the formula will carry onwards from f9 onwards If f9 < o9 Then Range(f).Font.Color = vbRed End If End With End Sub 

但是,唉,它不起作用。 我也尝试链接到一个button,没有任何反应。 我也记得删除我的旧条件格式。 有什么我失踪?

你是在像下面的代码之后。

此代码将被运行一次,它将在工作表中的整个列“F”中变换,并更改所有实例的字体。

常规模块代码

 Option Explicit Sub change_color() Dim LastRow As Long, i As Long With Worksheets("Sheet1") ' modify to your sheet's name LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row For i = 1 To LastRow If .Range("F" & i).Value < .Range("O" & i).Value Then .Range("F" & i).Font.Color = vbRed Else .Range("F" & i).Font.Color = vbBlack End If Next i End With End Sub 

要实时“ 捕捉 ”修改,当某人更改“F”列中的值,然后根据指定的标准更改字体时,需要将以下代码添加到工作表模块中,在该工作表模块中具有数据,并将下面的代码添加到Worksheet_Change事件。

Sheet1模块中的代码 (修改为您的工作表)

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 6 Then ' if someone changes a value in column "F" Application.EnableEvents = False If Target.Value < Range("O" & Target.Row).Value Then Target.Font.Color = vbRed Else Target.Font.Color = vbBlack End If End If Application.EnableEvents = True End Sub 

这对你有用吗?

 Option explicit Sub ChangeColor() With thisworkbook.worksheets(YOURSHEETNAME) 'Replace with sheet name as per your workbook.' Dim LastRow as long Lastrow = .cells(.rows.count,"F").end(xlup).row Dim RowIndex as long For rowindex = 9 to LastRow If .cells(rowindex,"F").value2 < .cells(rowindex,"O").value2 then .cells(rowindex,"F").font.color = vbred End if Next rowindex End With End Sub