如果第一个单元格不是数字,则删除行vba Excel

如果第一个单元格不是数字(文本或空白单元格),我正在使用以下代码删除一行

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,我不希望它被删除。 我没有看到代码有什么问题,甚至没有错误。 你看到有什么问题吗? 这可能是一个虚假的程序?

我怀疑你的代码存在的问题是Sheets("Productos")不是活动页面。 所以Rows(i3).Delete指的是可能不是Sheets("Productos")的activesheet

请注意下面的代码中使用DOTS。

试试这个( TRIED AND TESTED

 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 

编辑 :我错过了空白单元格的一部分,但多亏了吉米的职位,我看到了。

修改后的代码

 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 

如果单元格为空,则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