遇到一个我无法弄清楚的小问题。我有一个小的ComboBox1_Change
事件,我遍历所有ActiveSheet.ChartObjects
并根据ComboBox1.Value
进行一些更改。
然而,在代码完成运行后,选择仍然集中在我工作表上的最后一个图表对象上(参见图表边框上的4个小圆圈):
我无法弄清楚如何失去这个选择。我尝试了几件事(Range("A1").Select
,Range("A1").Activate
,ActiveChart.Deselect
,ActiveChart.ChartObjects.Deselect
),但这些都不在子程序中 (如果我运行的话)在此之后的另一个子中Range("A1").Select
,然后我成功取消选择了图表对象。)
我可以使用SendKeys
取消选择图表对象,但我真的想避免这种情况。必须有另一种方法来完成这项工作 - 有任何建议吗?
代码:
Private Sub ComboBox1_Change()
Application.ScreenUpdating = False
For Each cht In ActiveSheet.ChartObjects
cht.Activate
ActiveChart.ChartTitle.Text = ComboBox1.Value
'Some other stuff, excluded.
Next cht
'Range("A1").Activate - doesn't work
'Range("A1").Select - doesn't work
'ActiveChart.Deselect - doesn't work
'ActiveChart.ChartObjects.Deselect - doesn't work, throws error
'SendKeys "{ESC}" - works, but I'd rather not.
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
我无法复制您的问题,但您应该能够在不选择每个图表的情况下完成所需的一切。
Private Sub ComboBox1_Change()
Dim chtObj As ChartObject
Dim cht As Chart
Application.ScreenUpdating = False
For Each chtObj In ActiveSheet.ChartObjects
Set cht = chtObj.Chart
cht.ChartTitle.Text = ComboBox1.Value
'Some other stuff, excluded.
Next chtObj
Application.ScreenUpdating = True
End Sub