0

以下の VBA コードは、テキストを検索して行を削除することです。ただし、シート全体に基づいて検索しています。

リストされたテキスト配列で「特定の列」のみを検索し、 textを含む行を削除する方法。

以下のコードに基づいて、不要なシート全体を検索します。

Sub DeleteSystemMessage()
    Dim varList As Variant
    Dim varQP As Variant
    Dim lngarrCounter As Long
    Dim rngFound As Range, rngToDelete As Range
    Dim strFirstAddress As String

    Application.ScreenUpdating = False


'delete system message
    varList = VBA.Array("XXXXXX", vbTextCompare)

    For lngarrCounter = LBound(varList) To UBound(varList)
        With Sheet1.UsedRange
            Set rngFound = .Find( _
                                What:=varList(lngarrCounter), _
                                Lookat:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=False)

            If Not rngFound Is Nothing Then
                strFirstAddress = rngFound.Address

                If rngToDelete Is Nothing Then
                    Set rngToDelete = rngFound
                Else
                    If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
                        Set rngToDelete = Application.Union(rngToDelete, rngFound)
                    End If
                End If

                Set rngFound = .FindNext(After:=rngFound)

                Do Until rngFound.Address = strFirstAddress
                    If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
                        Set rngToDelete = Application.Union(rngToDelete, rngFound)
                    End If
                    Set rngFound = .FindNext(After:=rngFound)
                Loop
            End If
        End With
    Next lngarrCounter

    If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete
Application.ScreenUpdating = True


End Sub
4

1 に答える 1

1

このように検索コードを変更すると、列「A」のみが検索されます。

Set rngFound = Sheets(1).Columns("A:A").Find( _
                            What:=varList(lngarrCounter), _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
于 2013-01-14T09:57:47.037 に答える