【发布时间】:2020-05-01 15:51:52
【问题描述】:
我正在创建仪表板。我有两个形状椭圆 1 和椭圆 2。它们将根据特定单元格的值改变颜色
我收到一个错误:
如果没有结束就阻塞
我在这里做错了什么!
Sub Worksheet_Change(ByVal Target As Range)
'
If Intersect(Target, Range("E10")) Is Nothing Then Exit Sub
If Target.Value >= -0.1 And Target.Value <= 0.1 Then
ActiveSheet.Shapes.Range(Array("Oval 1")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(0, 176, 80)
End With
ElseIf Target.Value >= -0.29 And Target.Value < 0.29 Then
ActiveSheet.Shapes.Range(Array("Oval 1")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(255, 255, 0)
End With
Else
ActiveSheet.Shapes.Range(Array("Oval 1")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(255, 0, 0)
End With
If Intersect(Target, Range("N10")) Is Nothing Then Exit Sub
If Target.Value >= -0.1 And Target.Value <= 0.1 Then
ActiveSheet.Shapes.Range(Array("Oval 2")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(0, 176, 80)
End With
ElseIf Target.Value >= -0.29 And Target.Value < 0.29 Then
ActiveSheet.Shapes.Range(Array("Oval 2")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(255, 255, 0)
End With
Else
ActiveSheet.Shapes.Range(Array("Oval 2")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(255, 0, 0)
End With
End If
Range("A1").Select
End Sub
【问题讨论】:
-
您在
If Intersect(Target, Range("N10")) Is Nothing Then Exit Sub之前缺少一个End If。 -
这也是在乞求一些重构。有大量重复代码。
-
this may be useful。此外,正确缩进代码有助于避免此类错误。见this
-
我添加到 End If,它使错误消失但它仍然无法正常工作。一个形状根据值改变颜色,第二个不改变颜色(椭圆形 2)我刚上学期,我还在学习,我相信代码会更好
-
@OscarNuñez - 如果代码不起作用,请调试(逐行执行)并查看它所采取的行为与您期望的行为。