2

この行の原因は何ですか

If Cells(i, 3) = "" Or VBA.Left(Cells(i, 3), 5) = "BIGA-" Or VBA.Left(Cells(i, 3), 5) = "BRNG-" Or VBA.Left(Cells(i, 3), 5) = "ENER-" Or VBA.Left(Cells(i, 3), 5) = "EURE-" Or VBA.Left(Cells(i, 3), 5) = "STRE-" Then Rows(i).Delete

以下のマクロで、最初のセルレコードが検出されて削除された後、ランタイムエラー「13」タイプの不一致を返しますか?

Option Explicit

Sub deletedExceptions_row()
Dim i As Long
For i = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
    If Cells(i, 3) = "" Or 
    VBA.Left(Cells(i, 3), 5) = "BIGA-" Or 
    VBA.Left(Cells(i, 3), 5) = "BRNG-" Or 
    VBA.Left(Cells(i, 3), 5) = "ENER-" Or 
    VBA.Left(Cells(i, 3), 5) = "EURE-" Or 
    VBA.Left(Cells(i, 3), 5) = "STRE-" Then
    Rows(i).Delete
Next i
End Sub
4

1 に答える 1

3

これを試して

Option Explicit

Sub deletedExceptions_row()
    Dim i As Long
    Dim ws As Worksheet

    On Error GoTo whoa

    Set ws = Sheets("Sheet1")

    With ws
        For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
            If .Cells(i, 3) = "" Or _
            VBA.Left(.Cells(i, 3), 5) = "BIGA-" Or _
            VBA.Left(.Cells(i, 3), 5) = "BRNG-" Or _
            VBA.Left(.Cells(i, 3), 5) = "ENER-" Or _
            VBA.Left(.Cells(i, 3), 5) = "EURE-" Or _
            VBA.Left(.Cells(i, 3), 5) = "STRE-" Then
                .Rows(i).Delete
            End If
        Next i
    End With
    Exit Sub
whoa:
    MsgBox "Value of i is " & i, vbInformation, Err.Description
End Sub

今それはエラーを出しますか?もしそうなら、の値は何ですかi。の値が17の場合はi、セルC17を確認します。そのセルにエラーを出している数式があると確信しています。たとえば#DIV/0!、その他のエラー。このシナリオでのみ、が与えられますtype mismatch error

スナップショット

ここに画像の説明を入力してください

于 2012-05-03T17:10:23.487 に答える