【问题标题】:VBA - Delete all rows that do not contain at least 1 highlighted cellVBA - 删除不包含至少 1 个突出显示的单元格的所有行
【发布时间】:2019-05-13 04:00:12
【问题描述】:

正在寻找 VBA 代码以删除不包含至少 1 个突出显示的单元格的所有行(使用的内部颜色:REDINDEX)。

随机突出显示单元格的示例数据表

【问题讨论】:

  • 我尝试创建一个按钮;但是,它没有用。我创建了一个 ActiveX 按钮。该按钮是一个私有子,然后我调用了 DeleteAllRowsWithNoHighlightedCells Public Sub...然后我放入了 Public Sub DeleteAllRowsWithNoHiglightedCells...但是每次它给我错误或子或未定义功能...我也不清楚您提供的代码的第二部分,老实说,我不知道把它放在哪里......对不起,我缺乏知识,但我对 VBA 完全陌生,并试图让它工作。提前感谢您的帮助!

标签: excel vba filter filtering


【解决方案1】:

你可以这样做:

Public Sub DeleteAllRowsWithNoHighlitedCells()

Dim iRow As Long
Dim lastColumn As Long
Dim aktRow As Range
Dim owsh As Worksheet
Set owsh = ActiveSheet
iRow = 1
lastColumn = 7
Do Until owsh.Cells(iRow, 1) = ""
    Set aktRow = owsh.Range(Cells(iRow, 1), Cells(iRow, lastColumn))
    If Not AktRowHasHighlightedCells(aktRow) Then
        owsh.Rows(aktRow.Row).Delete
        iRow = iRow - 1
    End If
    iRow = iRow + 1
Loop

结束子

私有函数 AktRowHasHighlightedCells(ByVal aktRow As Range) As Boolean 暗淡 aktcell 作为变体

 For Each aktcell In aktRow.Cells

    If aktcell.Interior.ColorIndex = 3 Then
        AktRowHasHighlightedCells = True
        Exit Function
    End If

Next aktcell
AktRowHasHighlightedCells = False

结束函数

解释我的意思。首先,您必须创建一个按钮并将 DeleteAllRowsWithNoHiglitedCells - 过程放在 Click-Event 后面。然后,直到每行的 Column1 不为空,从 column1 到 lastColumn (您必须定义或者您也可以通过 VBA 获取 lastusedColumn)的选定行中的每个单元格都被检查是否有 Interior.Colorindex = 3(硬编码红色)如果AktRowHasHighlightedCells函数为false,行将被删除,rowCounter将减少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2015-06-20
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多