vba - 为符合条件的非相邻单元格着色

标签 vba excel

我使用下面的代码为 K 列和 Z 列中符合条件的单元格着色;但它给 K 和 Z 之间的所有单元格着色。为了解决这个问题,我使用最后一行代码删除 L 到 Y 列中的颜色。有没有办法将以“Range”开头的代码行修改为仅对单元格着色K 和 Z 符合标准吗?

Sub ColrCls()
    Dim ws As Worksheet
    Dim lRow As Long, i As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Range("K" & .Rows.Count).End(xlUp).Row

        For i = 2 To lRow
            If .Cells(i, 11).Value = "Non Sen" And .Cells(i, 26).Value = "N/A" Then
            Range(.Cells(i, 11), .Cells(i, 26)).Interior.ColorIndex = 6
            End If
        Next i

        Columns("L:Y").Interior.ColorIndex = xlNone
    End With
End Sub

最佳答案

您正在指定Range.Parent property在你的With ... End With statement但在最重要的时候却忽略了它。

Sub ColrCls()

    Dim ws As Worksheet
    Dim lRow As Long, i As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        lRow = .Range("K" & .Rows.Count).End(xlUp).Row

        For i = 2 To lRow
            If .Cells(i, 11).Value = "Non Sen" And .Cells(i, 26).Value = "N/A" Then
                .Range("K" & i & ", Z" & i).Interior.ColorIndex = 6
            Else
                .Range("K" & i & ", Z" & i).Interior.Pattern = xlNone
            End If
        Next i
    End With
End Sub

一个Range objectUnion不连续的单元格可能是以下之一。

.Range("K5, Z5")
Union(.Cells(5, "K"), .Cells(5, "Z"))

在上面的示例中,我将一个字符串连接在一起,就像这两个示例中的第一个示例一样。


1 参见Is the . in .Range necessary when defined by .Cells? 就这个主题进行认真的讨论。

关于vba - 为符合条件的非相邻单元格着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341419/

相关文章:

ms-access - 如何在选项组 Access VBA 中获取单选按钮的值

excel - 在 Excel 中用分号和空格分割文本字符串

php - Excel 到 PHP 数组,可能以及如何?

excel - VBA 用户窗体中的 MS Excel 2010 MAXIFS 等效项

excel - 自动打开 Excel 2010 文件,保存并转换为 Excel 2003 格式

VBA - 用户窗体上控制字体的奇怪问题

vba - 将 Excel 范围粘贴到 Outlook 电子邮件正文

java - 如何使用Java从两个Excel表中使用JDBC读取数据?

vba - 使标签宽度适应文本

java - 在 TomCat 上运行的 POI 导致违反加载程序约束