【问题标题】:VBA if the first 6 characters in a Cell DO NOT equal 01/01/ then如果单元格中的前 6 个字符不等于 01/01/,则 VBA
【发布时间】:2017-10-29 17:28:59
【问题描述】:

希望你能帮上忙。我在下面有一段代码,它似乎没有正常工作

我想要代码做的是这个

如果 L 列整个长度中任何单元格的前 6 个字符不包含 01/01/,则用内部颜色 27 突出显示该单元格

目前,正如您在屏幕截图 1 中看到的那样,L 列中的每个单元格都以内部颜色 27 突出显示,只有单元格 L2 和 L5 应着色。

我的代码如下,是否可以修改为仅突出显示不包含 01/01/ 的单元格作为 L 列中的前 6 个字符

> PS 条件格式方法不是一个选项

我们非常感谢任何和所有的帮助。

屏幕截图 1

我的代码

Sub Colour_If()
    RowCount = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    For Each n In Range("L2:L" & RowCount)
        n = Left(n, 6)
        If n <> "01/01/" Then
        Range("L2:L" & RowCount).Interior.ColorIndex = 24

        End If
    Next n
End Sub

【问题讨论】:

  • 您的问题在这里:Range("L2:L" &amp; RowCount).Interior.ColorIndex = 24。一旦您为整个列着色,只要它满足条件。请参阅下面的答案。

标签: string vba excel colors


【解决方案1】:

改用这个:

Sub Colour_If()

lRow = Cells(Rows.Count, 12).End(xlUp).Row

For i = 2 To lRow
If Left(Cells(i, 12), 6) <> "01/01/" Then
Cells(i, 12).Interior.ColorIndex = 24
Else
End If
Next i

End Sub

【讨论】:

  • 12 指的是“L”列。 i 是行号。它将遍历每一行,直到 L 列中包含数据的最后一行。
  • 为了更明确,@sub 下代码的顶部可以添加Dim lRow as LongDim i as Long
  • 您好 KoderM16 感谢您抽出宝贵时间回复。非常感谢。我已经接受了 Shai 的回答,因为它有效并且是第一个做出回应的。再次感谢您的支持 :-) 希望您有美好的一天。
  • @PhilipConnell 酷哥们。很高兴你得到了你需要的帮助。干杯!
【解决方案2】:
Sub Colour_If()
Dim sht As Worksheet
Dim RowCount as Long
Set sht = Worksheets("Sheet1")
    RowCount = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    For i = 2 To RowCount
        With sht
            n = Left(.Cells(i, 12).Value, 6)
            If n <> "01/01/" Then
                .Cells(i, 12).Interior.ColorIndex = 24
            Else
                .Cells(i, 12).Interior.ColorIndex = 0
            End If
        End With
    Next i
End Sub

【讨论】:

  • 嗨。 UGP 非常感谢您花时间回复。您的代码运行良好,但 Shai 最先出现并在过去帮助过我。再次感谢您:-),祝您有美好的一天:-)
【解决方案3】:

处理日期时可能会有点棘手,我使用了Like 运算符和通配符*,并读取了单元格的Text 属性。

Option Explicit

Sub Colour_If()

    Dim RowCount As Long
    Dim n As Range

    ' always define your worksheet, don't rely on ActiveSheet
    With Worksheets("YourSheetName") '<-- modify to your sheet's name
        RowCount = .Cells(.Rows.Count, "L").End(xlUp).Row
        For Each n In .Range("L2:L" & RowCount)
            If Not n.Text Like "01/01/*" Then ' check that the first 6 characters do not start with "01/01/"
                n.Interior.ColorIndex = 24
            End If
        Next n
    End With

End Sub

【讨论】:

  • :-) 再次感谢 Shai。这非常有效:-)都柏林非常尊重:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多