簡體   English   中英

如何在VBA循環中刪除除A列以外的整個行?

[英]How to delete entire row except column A in VBA loop?

如果列A中的值以“ ABC”開頭,我想用灰色突出顯示整個行,並刪除該單元格的所有內容。 有關如何執行此操作的任何想法?

Dim DataRange As Range
Set DataRange = Range("A1:U" & LastRow)

Set MyRange = Range("A2:A" & LastRow)

For Each Cell In MyRange
If UCase(Left(Cell.Value, 3)) = "ABC" Then
    Cell.EntireRow.Interior.ColorIndex = 15


Else


End If
Next

這是非常簡單的方法:

Dim lastRow As Long
Dim row As Long
Dim temp As String

' insert your sheet name here
With ThisWorkbook.Worksheets("your sheet name")

    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

    ' you can change the starting row, right now its 1
    For row = 1 To lastRow

        ' store whats in col A in a temporary variable
        temp = Trim(CStr(.Range("A" & row).Value))

        ' if col A isn't 'ABC' clear & grey entire row
        If UCase(Left(.Range("A" & row).Value), 3) <> "ABC" Then

            .Rows(row).ClearContents
            .Rows(row).Interior.ColorIndex = 15

            ' place temp variable value back in col A and make interior No Fill
            .Range("A" & row).Value = temp
            .Range("A" & row).Interior.ColorIndex = 0

        End If
    Next
End With

這是另一個例子。 您說“清除右邊的所有內容”,所以我添加了偏移量以清除不在A列中的單元格的內容。

Dim x As Long

For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If UCase(Left(Cells(x, 1).Value, 3)) = "ABC" Then
        Range(Cells(x, 1), Cells(x, Columns.Count).End(xlToLeft)).Interior.ColorIndex = 15
        Range(Cells(x, 1).Offset(, 1), Cells(x, Columns.Count).End(xlToLeft)).ClearContents
    End If
Next x  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM