如果第一个单元格不是数字(文本或空白单元格),我使用以下代码删除行
Dim LR3 As Long, i3 As Long
With Sheets("Productos")
LR3 = Range("A" & Rows.Count).End(xlUp).Row
For i3 = LR3 To 2 Step -1
If IsNumeric(Sheets("Productos").Range("A" & i3).Value) Then
Else
Rows(i3).Delete
End If
Next i3
End With
使用LR3到2,因为第一行是标题行,我不想删除它。我没有看到代码有任何问题,我甚至没有错误。你看错了吗?这可能是一个错误的程序?
答案 0 :(得分:3)
我怀疑您的代码存在的问题是Sheets("Productos")
不是活动表。因此Rows(i3).Delete
指的是活动表格,可能不是Sheets("Productos")
请注意在下面的代码中使用DOTS。
尝试此操作(已完成测试)
Sub Sample()
Dim LR3 As Long, i3 As Long
With Sheets("Productos")
LR3 = .Range("A" & .Rows.Count).End(xlUp).Row
For i3 = LR3 To 2 Step -1
If Not IsNumeric(.Range("A" & i3).Value) Then .Rows(i3).Delete
Next i3
End With
End Sub
编辑:我错过了Blank Cell部分,但感谢Jimmy的帖子,我看到了。
修订后的代码
Sub Sample()
Dim LR3 As Long, i3 As Long
With Sheets("Productos")
LR3 = .Range("A" & .Rows.Count).End(xlUp).Row
For i3 = LR3 To 2 Step -1
If Not IsNumeric(.Range("A" & i3).Value) Or _
.Range("A" & i3).Value = "" Then .Rows(i3).Delete
Next i3
End With
End Sub
答案 1 :(得分:3)
如果单元格为空,则IsNumeric将返回true。你可以尝试使用len,
Dim LR3 As Long, i3 As Long
With Sheets("Productos")
LR3 = .Range("A" & .Rows.Count).End(xlUp).Row
For i3 = LR3 To 2 Step -1
If IsNumeric(.Range("A" & i3).Value) And _
len(.Range("A" & i3).Value) > 0 Then
Else
.Rows(i3).Delete
End If
Next i3
End With