Excel VBA循环删除行不以某些东西开头

时间:2015-06-22 13:31:57

标签: excel excel-vba vba

我在工作中有一些数据如下:

00 some data here...
00 some data here...
00 some data here...
00 some data here...
Other data I want to remove
Other data I want to remove
Other data I want to remove
Other data I want to remove
00I also want to remove
002 some other data I want to remove
003 remove this as well

我想删除所有不以00(空格)开头的行。但是我的功能并没有删除所有这些功能(仅限部分功能)。有拼写错误吗?

观察:我的代码会在每次运行时删除几行,如果我运行4-5次,它最终将删除所有这些行。

Sub ProcessRemittance()
    Dim remitDate, remitNumber, myString, tempString As String
    Dim myRange, cell As Range
    Dim StringArray As Variant

    Set myRange = Range("A1:A500")

    ' Remove all the empty rows in the worksheet
    myRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete

    ' Clean up every row does not belong to invoices
    For Each cell In myRange
        myString = Left(cell.Value, 3)

        If myString <> "00 " Then
            cell.EntireRow.Delete
        End If
    Next cell
End Sub

1 个答案:

答案 0 :(得分:3)

这是因为你向前移动行 - 如果删除第4行,那么第5行将变为第4行,代码将跳转到第5行 - 实际上是第6行。

希望有道理。 :)

解决方案是使用For Next Loop - 向后踩踏而不是For Each Loop。

此外 - 如果没有空白行,特殊单元格删除行将失败。

我已更新您的代码以包含这些更改:

     boolean isLastVisible = ((LinearLayoutManager)((RecyclerView) v).getLayoutManager()).findLastCompletelyVisibleItemPosition() == ((RecyclerView) v).getAdapter().getItemCount() - 1);

   boolean isFirstVisible =  ((LinearLayoutManager)((RecyclerView) v).getLayoutManager()).findFirstCompletelyVisibleItemPosition() == 0);

                if(isFirstVisible && isLastVisible){
                    mOldScrollFlags = mOldScrollFlags == -1 ?  params.getScrollFlags() : mOldScrolFlags;
                    params.setScrollFlags(0);
                }else{
                    params.setScrollFlags(mOldScrollFlags);
                }
                mToolbar.setLayoutParams(params);