【发布时间】:2018-06-12 13:26:18
【问题描述】:
我有以下 vba 代码完全按预期工作,除了一件事。
因此将其设置为跟踪工作表。工作表的目的是用 1 和 0 确定某事是否已完成,然后计算完成百分比...等等等等。
因此,当用户在工作表上(范围内)输入 1 时,它会将内部和字体颜色更改为绿色。如果用户输入 0,它会将内部和字体颜色更改为红色。
如果用户在一个一直为空的单元格上点击删除(从未有任何数据输入其中),则代码按预期工作。但是,如果用户在已输入数据的单元格上点击删除,则该值会恢复为“0”,并且单元格会变为红色。
当用户在范围内点击删除(或退格键)时,我需要代码进入最后一个 else 语句。任何建议将不胜感激。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inRange As Range
Set inRange = Intersect(Target, Range("C3:N13"))
If (Not (inRange Is Nothing)) Then
If IsEmpty(Target) = False Then
With Target.FormatConditions.Add(xlCellValue, xlEqual, "=0")
.Interior.Color = 255
.Font.Color = 255
End With
With Target.FormatConditions.Add(xlCellValue, xlGreater, 0)
.Interior.Color = -11489280
.Font.Color = -11489280
End With
Else
With Target.Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
If Target.Row Mod 2 = 0 Then
With Target.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
With Target.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
End If
End If
End If
End Sub
【问题讨论】:
-
听起来你需要删除
Else语句开头的所有格式条件。 -
为什么不使用选择大小写更直接一点? Select Case Target.Value Case 0 blah, Case 1 blah, Case "", End Select.