如果单元格包含数字
,我必须运行Subtwice
删除所有行
我无法弄清楚什么不能正常工作
由于
Sub DoesCellHaveNumer()
Dim ws As Worksheet
Dim Rng As Range
Dim acell As Range
Dim LR As Long
Set ws = ThisWorkbook.Sheets(1)
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set Rng = ws.Range("B2:B" & LR)
For Each acell In Rng
If HasNumber(acell) = True Then acell.EntireRow.Delete
Next acell
End Sub
Function HasNumber(strData As Variant) As Boolean
Dim iCnt As Integer
For iCnt = 1 To Len(strData)
If IsNumeric(Mid(strData, iCnt, 1)) Then
HasNumber = True
Exit Function
End If
Next iCnt
End Function
答案 0 :(得分:1)
当您在循环中删除行时,您的循环会变得歪斜。修复它的一种方法 - 向后循环,但更快的是:
Sub DoesCellHaveNumer()
Dim ws As Worksheet
Dim Rng As Range
Dim acell As Range
Dim rngToDel As Range
Dim LR As Long
Set ws = ThisWorkbook.Sheets(1)
With ws
LR = .Range("A" & .Rows.Count).End(xlUp).Row
Set Rng = .Range("B2:B" & LR)
End With
For Each acell In Rng
If HasNumber(acell) Then
If rngToDel Is Nothing Then
Set rngToDel = acell
Else
Set rngToDel = Union(rngToDel, acell)
End If
End If
Next acell
If Not rngToDel Is Nothing Then rngToDel.EntireRow.Delete
End Sub