Использование IF в VBA - PullRequest
       3

Использование IF в VBA

0 голосов
/ 20 февраля 2019

Может кто-нибудь сказать мне, если это правильный способ выражения этого макроса 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

Я пробовал разные вещи, такие как включение FA_Win_2 в "", добавление .Value после диапазона, но я всегда получаю ошибки компиляции.

Любая помощь будет принята с благодарностью.

ура

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Мой подход - установить .Font.Bold = TRUE/FALSE равным вашему тесту.

Я не уверен, что вам действительно нужно циклически проходить через этот диапазон, но вы можете легко обновить его, чтобы сделать его более динамичным, поменяв 70 на переменную последней строки calc


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
0 голосов
/ 20 февраля 2019

Проверка диапазона значений

для следующего цикла

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

РЕДАКТИРОВАНИЕ

для каждого цикла 2

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...