3

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

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 是因为第一行是标题行,我不想将其删除。我看不出代码有什么问题,我什至没有错误。你看出什么不对了吗?这可能是一个错误的程序?

4

2 回答 2

4

我怀疑您的代码的问题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

编辑:我错过了空白单元格部分,但感谢吉米的帖子,我看到了。

修改后的代码

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
于 2014-02-19T16:18:40.813 回答
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
于 2014-02-19T16:22:47.953 回答