Как перемещаться по пустым и заполненным ячейкам - PullRequest
1 голос
/ 13 июня 2019

Я пытаюсь написать vba, чтобы изолировать определенную ячейку в ряду. Мой код до сих пор привел меня в активную камеру, и отсюда я застрял.
Ячейка, которая мне нужна, всегда будет 3-й непустой / пустой ячейкой в ​​ряду. Между активной ячейкой и требуемой ячейкой находятся пустые ячейки и две несущественные непустые / пустые ячейки. Расстояние между ними не фиксировано, поэтому я не могу сместить определенное количество ячеек. У меня была помощь в какой-то момент, но я застрял, любая помощь будет очень оценена!

i = 1
    For Each cell In ws.Rows(ActiveCell.Row).Cells

    If Not IsEmpty(cell) = True Then i = i + 1
    If i = 4 Then cell.Select: Exit For

    Next cell

1 Ответ

0 голосов
/ 13 июня 2019

Вы не должны использовать ActiveCell & .Select в идеале.Посмотрите, поможет ли это:

Sub thirdNonBlank()

Dim ws As Worksheet: Set ws = ActiveWorkbook.Sheets("sheet name")
Dim lRow As Long: lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

Dim C As Long, cnt As Long
Dim rngCellFind As Range

With ws.Range("A1:A" & lRow)
    Set rngCellFind = .Find( _
                        What:="Hello", _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext _
                        ).Offset(1, 0)
End With

For C = 1 To ws.Cells(rngCellFind.Row, Columns.Count).End(xlToLeft).Column
    If Not IsEmpty(ws.Cells(rngCellFind.Row, C)) Then cnt = cnt + 1
    If cnt = 3 Then
        ws.Cells(rngCellFind.Row, C).Select 'I'd advise against using .Select
        Exit For
    End If
Next C
End Sub

РЕДАКТИРОВАТЬ: изменено в соответствии с новым входом OP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...