Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:如何创建宏以使用if语句更改文本颜色_Vba_Excel - Fatal编程技术网

Excel VBA:如何创建宏以使用if语句更改文本颜色

Excel VBA:如何创建宏以使用if语句更改文本颜色,vba,excel,Vba,Excel,这是以下问题的继续: 为了防止条件格式失控,我决定将其转换为VBA中的代码。我决定从小处着手,从将一种条件格式转换为VBA开始 说明: 在O列中有一系列数字,从不同的表格中获得。用户在F列中输入数字。例如,如果F9中的数字小于O9,字体颜色将变为红色。若并没有,数字保持正常。公式应从第9行开始,可以继续向下,并且应该是自动的。 这意味着在F列输入数字时,字体颜色应立即改变 以下是我迄今为止创建的代码: Sub change_color() With Me.Range("f9", Range("

这是以下问题的继续:

为了防止条件格式失控,我决定将其转换为VBA中的代码。我决定从小处着手,从将一种条件格式转换为VBA开始

说明:

在O列中有一系列数字,从不同的表格中获得。用户在F列中输入数字。例如,如果F9中的数字小于O9,字体颜色将变为红色。若并没有,数字保持正常。公式应从第9行开始,可以继续向下,并且应该是自动的。 这意味着在F列输入数字时,字体颜色应立即改变

以下是我迄今为止创建的代码:

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
Sub change\u color()
使用Me.Range(“f9”,Range(“f”和Rows.Count).End(xlUp)),因此公式将从f9开始
如果f9

但遗憾的是,它没有起作用。我还试着把它链接到一个按钮上,但什么也没发生。我还记得删除旧的条件格式。有什么我遗漏的吗?

您想要的是下面的代码

此代码只需运行一次,它将在工作表中的整个“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

这对你有用吗

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
选项显式
子ChangeColor()
使用此工作簿。工作表(您的工作表名称)“根据您的工作簿替换为工作表名称。”
最后一排一样长
Lastrow=.cells(.rows.count,“F”).end(xlup).row
变暗,变长
对于rowindex=9到最后一行
如果.cells(行索引,“F”).value2<.cells(行索引,“O”).value2,则
.cells(行索引,“F”).font.color=vbred
如果结束
下一行索引
以
端接头

在工作表模块中没有使用
Me
,它会自动将该工作表称为
ActiveSheet
,您可以使用Me
删除
,并且它可以在移动设备上以同样的方式工作,未经测试。我并没有摆脱With,只是改变了它返回的对象,所以我认为所有的。应该可以。你认为
前缀放在哪里错了?我看这里没有明显的错误@ShaiRado@eirikdaude你说得对,注释被删除了,我错过了他用这个工作簿替换的
行。工作表(你的工作表名)
Sweet。工作起来很有魅力。我不得不使用常规的模块代码,因为另一个似乎不适合我。我的代码中已经有一个工作表更改模块,所以我只是使用call函数来执行任务。谢谢。现在再重复11次。。。
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