【问题标题】:How to move across empty & filled cells如何在空单元格和填充单元格之间移动
【发布时间】:2019-06-13 18:39:26
【问题描述】:

我正在尝试编写一个 vba 来隔离一行中的特定单元格。到目前为止,我的代码已将我带到一个活动单元格,从这里我被卡住了。
我需要的单元格将始终是该行的第三个非空白/空单元格。在活动单元格和所需单元格之间是空白单元格,以及两个不相关的非空白/空单元格。 它们之间的间距不是固定的,所以我不能偏移一定数量的单元格。 我已经得到了一定程度的帮助,但我现在卡住了,任何帮助都会非常感激!

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    理想情况下,您不应该使用 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 新输入进行更改。

    【讨论】:

    • 感谢您,它本身就可以满足我的需要。但是我似乎无法让它与我之前的编码集成。对此有何提示或提示?
    • 设置 rngCellFind = Worksheets("Sheet1").Range("A:A").Find(What:="Hello", LookIn:=xlValues, LookAt _ :=xlWhole, SearchOrder:= xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) Sheets("Sheet1").Activate rngCellFind.Activate ActiveCell.Offset(1, 0).Select
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2015-06-04
    • 2013-03-09
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多