【发布时间】:2014-08-15 13:06:05
【问题描述】:
我正在使用“Sheet1”上的命令按钮使用 VBA 创建图表,但是该图表正在添加到另一个工作表(“Sheet2”)。
添加图表后,我使用以下代码根据 DataLabel 值对条形进行着色并更改 DataLabel:
Dim oPoint As Excel.Point
Dim sngPercente As Single
For Each oPoint In Worksheets("Sheet2").ChartObjects("Performance").Chart.SeriesCollection(1).Points
oPoint.DataLabel.Select
sngPercente = CSng(Split(oPoint.DataLabel.Caption, "%")(0))
With oPoint
If sngPercente < 70 Then
.Interior.Color = RGB(255, 0, 0)
End If
If sngPercente > 75 Then
.Interior.Color = RGB(0, 176, 80)
End If
If sngPercente >= 70 And sngPercente <= 75 Then
.Interior.Color = RGB(148, 208, 80)
End If
If sngPercente = 0 Then
.DataLabel.Caption = "OFF"
End If
End With
Next oPoint
运行此代码并转到“Sheet2”后,我注意到图表和其中的最后一个数据标签仍处于选中状态。
(来源:gulfup.com)
如何取消/取消选择此图表?
这是我尝试过的:
Worksheets("Sheet2").Range("A1").Select
无法工作,因为代码是从另一个工作表运行的。
ActiveChart.Deselect
根本不工作。
从代码中删除oPoint.DataLabel.Select 行。
不可能,因为没有它,代码将因运行时错误而失败。
SendKeys "{ESC}"
有效,但非常不可靠,好像与其他宏一起使用它会破坏代码,这将给出“代码执行已被中断”的错误。
还有什么我可以尝试的吗?
【问题讨论】:
-
如果您删除
oPoint.DataLabel.Select行,您会得到什么错误,在哪里? -
@Rory 检查这个:stackoverflow.com/questions/25286934/…