Если оператор не работает с ActiveCell.Font.Size = 20, то - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь очистить некоторые данные для длинного списка данных, которые у меня есть. Начало каждого сегмента, из которого мне нужно очистить (активная ячейка, которую мне нужно активировать), имеет размер шрифта 20. Однако этот цикл работает и работает, но когда ячейка, в которой мне нужно выйти из цикла,снова идет в другое (делая бесконечный цикл). Ниже приведен мой код:

Dim repeat As Boolean
repeat = True    

Do While repeat = True
   If ActiveCell.Font.Size = 20 Then
      repeat = False
   Else
      ActiveCell.End(xlDown).Activate
   End If
Loop

Я хочу, чтобы программа вышла из цикла, когда активная ячейка имеет шрифт размером 20.

1 Ответ

1 голос
/ 10 октября 2019

Если вы используете Range.Find с SearchFormat, это может выглядеть примерно так:

Sub Macro1()
    Application.FindFormat.Clear
    Application.FindFormat.Font.Size = 20

    Dim ws As Worksheet
    Set ws = ActiveSheet

    Dim foundCell As Range
    Set foundCell = ws.Range("A:A").Find(What:="", _
                                         After:=ws.Cells(ws.Rows.Count, 1), _
                                         LookIn:=xlFormulas, _
                                         LookAt:=xlPart, _
                                         SearchDirection:=xlNext, _
                                         MatchCase:=False, _
                                         SearchFormat:=True)

    If Not foundCell Is Nothing Then
        Debug.Print foundCell.Address '<- foundCell is the one you want
    End If

End Sub

Если вам нужен обычный цикл For:

Dim ws as Worksheet
Set ws = ActiveSheet

Dim lastRow as Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

Dim i as Long
For i = 1 to lastRow
    If ws.Cells(i, 1).Font.Size = 20 Then 
        Exit For '<- Cells(i, 1) is the one you want
    End IF
Next i
...