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

1行目はヘッダー行なので削除したくないので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 に答える