我在工作中有一些数据如下:
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
答案 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);