Excel 在VBA中使用IF

Excel 在VBA中使用IF,excel,vba,Excel,Vba,有人能告诉我这是否是表达这个VBA宏的正确方法吗 其想法是检查A2:A70范围内的所有单元格(实际上,如果更容易,可以是A列的所有单元格),如果有FA_Win_2或FA_Win_3的文本,则将单元格加粗 If Range(“A2:A70”) = FA_Win_2 Or _ Range(“A2:A70”) = FA_Win_3 Then Range(“A2:A70”).font.Bold = “True” End If 我尝试过不同的方法,比如将fau Win_2括在“”中,在范围后

有人能告诉我这是否是表达这个VBA宏的正确方法吗

其想法是检查A2:A70范围内的所有单元格(实际上,如果更容易,可以是A列的所有单元格),如果有FA_Win_2或FA_Win_3的文本,则将单元格加粗

If Range(“A2:A70”) = FA_Win_2 Or _
   Range(“A2:A70”) = FA_Win_3 Then
   Range(“A2:A70”).font.Bold = “True”
End If
我尝试过不同的方法,比如将fau Win_2括在“”中,在范围后添加.Value,但总是出现编译错误

任何帮助都将不胜感激

干杯

检查数值范围 下一个循环 对于每个循环 编辑 对于每个循环2
我的方法是将
.Font.Bold=TRUE/FALSE
设置为与测试语句相等

我不确定您是否真的只需要在这个范围内循环,但您可以通过将
70
替换为变量last row calc来轻松地进行更新,使其更具动态性


子测试()
我想我会坚持多久

使用此工作簿.Sheets(“Sheet1”)时,您需要循环范围并单独测试每个单元格。请注意,您使用的引号无效。VBA中不允许使用这些引号,请将它们更改为常规引号!您正在使用的花式字体不起作用。因此,要给文本和单元格上色,是否只需要在.Font.Bold之后使用它和.Color=RGB(0,176,80)和.Font.Color=RGB(255,255,255)之类的字体?或者是否需要为每个字体和单元格使用完整的与For Each方法相比?
For Each
循环更快,这将是对该解决方案的改进@VBasic2008@honkin不,您必须有两个不同的语句才能应用多种格式,这会导致此解决方案不理想,因为您不希望在答案已知时重复发送测试垃圾邮件。我还想问,为什么不直接使用条件格式呢?问题是你的方法,它对所有单元格都做了一些事情(“应用字体”),而if方法只对符合条件的单元格做。在A2:A50000中,每个did为3.3秒,下一个did为4.1,您的解决方案为10.5秒,每个did为7.7秒,使用1到5之间的“随机”值。所有这些都无关紧要,反正我投了更高的票,因为我永远不会想到这种方法。将来可能会有用。Thx.@urderboy:FE:11,FN:13,Y:22,YFE:17,这次当然是毫秒(毫秒)。我们都知道,没有什么不可忍受的。@Urderboy:我不这么认为。你只要做你自己的事情,发挥创造力,当效率问题发生时,你就会知道如何解决它。我遇到过类似于CountIf与Match的情况,其中CountIf对每个值进行整个范围的匹配,但一旦找到一个值,匹配就会停止。正如您所知,上面的for-each循环的for-Next循环解决方案都没有对列a中的单元格做任何处理,因此无法按原样使用它们。遗憾的是,他们增加了使用多种格式的能力,比如单元格和字体color@honkin:我不知道您是如何使用它们的,但对于初学者,您应该使用此工作簿。工作表(“Sheet3”)。范围(“注释中提到的Sheet3”)而不是范围,并且不要忘记更改FA_Win的值。。常量或将其丢失,但您必须将常量扩展添加为String=“A2:A70”。@vbasic208;这是Excel的一部分,我对它非常陌生。我只是简单地复制并粘贴了你的代码,就像在代码区一样。因此Thisworkbook.Worksheets(“Sheet3”).范围将以字符串形式位于常量范围之上,还是正好位于“A2:A70”之前?不完全确定FA_Win使用什么值。。变量,因为我不知道它在说什么。最初分别为=2和=3
Sub ForNext()

    Dim i As Long   ' Source Column Range Cells Counter

    ' In Source Column Range
    With Range(A2:A70)
        ' Loop through cells of Source Column Range.
        For i = 1 To .Cells.Count
            ' Check for Search Criterias.
            If .Cells(i) = "FA_Win_2" Or .Cells(i) = "FA_Win_3" Then
                ' Apply formatting.
                .Cells(i).Font.Bold = True
            End If
        Next
    End With

End Sub
Sub ForEach()

    Dim Cell As Range   ' Current Cell Range (For Each Control Variable)

    ' Loop through cells of Source Column Range.
    For Each Cell In Range("A2:A70")
        ' Check for Search Criterias.
        If Cell = "FA_Win_2" Or Cell = "FA_Win_3" Then
            ' Apply formatting.
            Cell.Font.Bold = True
        End If
    Next

End Sub
Sub ForEach2()

    Const cSheet As String = "Sheet3"   ' Source Worksheet Name
    Const cRange As String = "A2:A70"   ' Source Column Range Address
    Const cStr1 As String = "FA_Win_2"  ' Search Criteria 1"
    Const cStr2 As String = "FA_Win_3"  ' Search Criteria 2"

    Dim Cell As Range   ' Current Cell Range (For Each Control Variable)

    ' Loop through cells of Source Column Range in Source Worksheet.
    For Each Cell In ThisWorkbook.Worksheets(cSheet).Range(cRange)
        ' Check for Search Criterias.
        If Cell = cStr1 Or Cell = cStr2 Then
            ' Apply formatting.
            With Cell
                .Font.Bold = True
                .Font.Color = RGB(255, 255, 255)    ' White
                .Interior.Color = RGB(255, 0, 255)  ' Pink
            End With
        End If
    Next

End Sub
Sub Test()

Dim i as Long

With ThisWorkbook.Sheets("Sheet1") '<-- Update
    For i = 2 To 70
        .Range("A" & i).Font.Bold = .Range("A" & i) = "FA_Win_2" Or .Range("A" & i) = "FA_Win_3"
    Next i
End With

End Sub