在我选择另一张纸后,为什么它在第3行停止

时间:2016-05-15 05:37:47

标签: excel vba excel-vba loops do-while

我正在通过删除和添加更多数据来测试我的编码,当我意识到我的编码出了问题时就是这样。最初,我开始使用#34; LEAVE"部分。

所以我尝试删除该部分的人,编码仍然有效。当我在该部分下添加一个人时,我意识到我的编码不起作用。当我将数据从3人改为4人时,它仍然停在第3个人身上。它没有继续循环检测第四人。

我测试并意识到这是我开始时的

Sheets("Cash").Select

以后它没有工作。

没有它,循环仍然有效,它可以检测到第四个人。

Do While Cells(ShiftRowName, 1) <> ""
    Set ShiftName = Sheets("Shift Roster").Cells(ShiftRowName, ShiftColName)

    If ShiftName = "" Or IsEmpty(ShiftName) Then
        Exit Do
    Else
        'When the following coding was added,
        'It stopped detecting at the 3rd person.
        Sheets("Cash").Select

        Range("C1").Select
        Cells.Find("Name").Activate
        r2 = ActiveCell.Row

        CashRowName = r2 + 1

        Do While Cells(CashRowName, 1) <> ""
            Set CashName = Sheets("Cash").Cells(CashRowName, CashColName)

            If CashName = "" Or IsEmpty(CashName) Then
                Exit Do
            Else
                MsgBox CashName
                MsgBox ShiftName

                End If
            CashRowName = CashRowName + 1
        Loop

        End If
    ShiftRowName = ShiftRowName + 1
Loop

有可能解决这个问题吗?

编辑:

由于Forw​​ard Ed的启蒙,我找到了问题的答案。谢谢。

我使用了以下代码

With Sheets("Cash")
    Set FindRow = .Range("C:C").Find(What:="Name", LookIn:=xlValues)
End With
Dim FindRowNumber As Long
CashRowName = FindRow.Row

1 个答案:

答案 0 :(得分:1)

redux-async-connect

这是您编辑的代码的一小部分。我很确定我的语法已关闭。要点是它避免在循环中间更改工作表。此外,重复使用select会降低代码速度,应该避免使用。