【发布时间】:2018-07-17 06:34:00
【问题描述】:
当用户在单元格中输入任何值时,我正在尝试创建一个 VBA 脚本来突出显示特定范围的单元格。例如,我的单元格范围将是 a1:a5,如果用户在该范围内的任何单元格中输入任何值,则单元格 a1 到 a5 将以所需的颜色突出显示。我是 VBA 的新用户,在搜索了一段时间后发现下面的代码可能有用。寻求建议。谢谢。
Private Sub Highlight_Condition(ByVal Target As Range)
Dim lastRow As Long
Dim cell As Range
Dim i As Long
With ActiveSheet
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Application.EnableEvents = False
For i = lastRow To 1 Step -1
If .Range("C" & i).Value = "" Then
Debug.Print "Checking Row: " & i
.Range("A" & i).Interior.ColorIndex = 39
.Range("F" & i & ":AW" & i).Interior.ColorIndex = 39
Next i
Application.EnableEvents = True
End With
End Sub
编辑:尝试编辑 teylyn 给出的代码,以便在删除单元格值时能够从单元格中删除突出显示,但是我似乎找不到解决方案。 (当单元格中有输入时,原始代码将突出显示单元格,但是如果您删除单元格值,突出显示仍然存在。)
If Not Intersect(Target, Range("A12:F12")) Is Nothing Then
With Range("A12:F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ElseIf IsEmpty(Range("A12:F12").Value) = True Then
With Range("A12:F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65536
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
【问题讨论】:
-
为什么使用 VBA 而不是条件格式?