从以下代码开始:
Dim lastRow As Long
With ActiveSheet
lastRow = .Range("C" & .Rows.Count).End(xlUp).Row
End With
Dim HeadCell As Range
For Each HeadCell In Range("C1:C" & lastRow)
If Len(HeadCell) < 6 And Len(HeadCell) > 1 Then
HeadCell.Select
With Selection.Font
.Bold = True
.Underline = xlUnderlineStyleSingle
End With
Else
End If
ActiveCell.Offset(1, 0).Select
Next
到目前为止,它的效果和我预期的一样。它会扫描我的工作表“C”列,查找特定长度的值,然后相应地格式化它。我希望它做的是检查单元格是否是任何其他特定值,如果是,则忽略格式化要求并像往常一样转到下一个单元格。
我认为添加嵌入式 For 循环可以实现这一点,但我的逻辑一定是错的,因为它基本上完全忽略了 For 循环并正常运行它。
If Len(HeadCell) < 6 And Len(HeadCell) > 1 Then
For i = 1 To 99
If HeadCell = i Then
Exit For
End If
Next i
我实际上是想忽略值等于 1 到 99 的单元格。这不是拼写错误。如果 HeadCell 的值等于 1 到 99,则忽略原始条件的格式部分并转到下一个单元格。
答案1
有两种方法可以解决此问题:
使用 IF
只需在 for 循环中添加第二个 if 语句并将代码放在该 if 中即可。(查看下面代码中的 2 行以了解需要添加的内容)
你的 for 循环代码看起来会像这样:
For Each HeadCell In Range("C1:C" & lastRow)
If Len(HeadCell) < 6 And Len(HeadCell) > 1 Then
if HeadCell <= 0 OR HeadCell >= 100 then
HeadCell.Select
With Selection.Font
.Bold = True
.Underline = xlUnderlineStyleSingle
End With
End If
Else
End If
ActiveCell.Offset(1, 0).Select
Next
继续 for 循环
您尝试继续第一个循环,但 exit for 只是退出该循环。您正在寻找Next nextcell