Excel 检查工作表中的字体名称,如果不是Arial,则突出显示整行 i=1至最后一行的 如果单元格(i,1).工作表(“名称”).Font.Name“Arial”,则 单元格(i,1).Entirerow.interior.colorindex=3 Else单元格(i,1).Entirerow.interior.colorindex=2 如果结束 接下来我

Excel 检查工作表中的字体名称,如果不是Arial,则突出显示整行 i=1至最后一行的 如果单元格(i,1).工作表(“名称”).Font.Name“Arial”,则 单元格(i,1).Entirerow.interior.colorindex=3 Else单元格(i,1).Entirerow.interior.colorindex=2 如果结束 接下来我,excel,vba,Excel,Vba,这个代码对我不起作用。我想检查字体是否为Arial,以及是否为“不做任何其他事情”选项,用红色突出显示该行。请指导。您需要将单元格(i,1)的顺序更改为。工作表(“名称”) 另外,将单元格(i,1)更改为 我还建议在工作表中使用(“名称”) 结果: For i=1 to Lastrow If cells(i,1).Worksheets("Name").Font.Name<> "Arial" then cells(i,1).Entirerow.interior.colorindex=

这个代码对我不起作用。我想检查字体是否为Arial,以及是否为“不做任何其他事情”选项,用红色突出显示该行。请指导。

您需要将
单元格(i,1)的顺序更改为。工作表(“名称”)

另外,将
单元格(i,1)更改为

我还建议在工作表中使用
(“名称”)

结果:

For i=1 to Lastrow
If cells(i,1).Worksheets("Name").Font.Name<> "Arial" then
cells(i,1).Entirerow.interior.colorindex= 3
Else cells(i,1).Entirerow.interior.colorindex= 2
End if
Next i
与工作表(“名称”)
对于i=1到最后一行
如果.Cells(i,1).Font.Name为“Arial”,则
.行(i).内部.ColorIndex=3
其他的
.行(i).内部.ColorIndex=2
如果结束
接下来我
以

@user7393973已识别出您的主要问题,但您可以通过这种方式避免If

With Worksheets("Name")
  For i = 1 to Lastrow
    If .Cells(i, 1).Font.Name<> "Arial" then
      .Rows(i).Interior.ColorIndex= 3
    Else
      .Rows(i).Interior.ColorIndex= 2
    End if
  Next i
End With

它到底是怎么不起作用的?它会引发错误还是什么?您需要将
单元格(i,1).工作表(“名称”)
的顺序更改为
工作表(“名称”).单元格(i,1)
。另外,将
单元格(i,1).Entirerow
更改为
工作表(“名称”).Rows(i)
。据我所知,使用Entirerow没有问题吗?@SJR Nothing。我只是喜欢这样。:)你应该将
一起移动到
For
循环之外。@chrisneilsen-为什么,这样更有效?@chrisneilsen我想你是对的。我不确定它在“编译”之后是否会有什么不同,所以我已经将它的范围缩小到了需要的程度,但它可能会在每次迭代中打开和关闭。编辑:ops,我提到了错误的人。这对任何
If…Else…End If
都是可选的,但不管怎样,我都会支持你的答案。再想一想,如果有多个不同的指令,可能并不理想,所以是的,它对任何指令都不是可选的,所以这是一个很好的用法。是的,如果您只有两个选择,那么说明这种方法是最好的,尽管您可以嵌套Iif语句。但是,我建议对于更复杂的场景,坚持使用If或Select Case。这是一个小问题,但是使用
Integer
会更好吗?还是有一些边缘情况不起作用?我的Excel 2013每张工作表有1048576行。不,最好在(几乎)所有情况下都使用Long。在任何情况下,整数通常被转换为长“幕后”,
Sub x()

Dim i As Long

For i = 1 To Lastrow
    Worksheets("Name").Cells(i, 1).EntireRow.Interior.ColorIndex = IIf(Worksheets("Name").Cells(i, 1).Font.Name = "Arial", 2, 3)
Next i

End Sub