vba - 在不使用 SendKeys 的情况下取消选择 Excel 中的活动图表对象
问题描述
遇到一个我无法弄清楚的小问题。我有一个小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
解决方案
我无法复制您的问题,但您应该能够在不选择每个图表的情况下做所有您需要做的事情。
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
推荐阅读
- python - 用空格替换名称之间的制表符
- ios - Spritekit 和 swift - 如何在测试期间从测试人员那里取回数据
- mongoose - 是否可以自定义猫鼬中的错误?
- javascript - js直播搜索模式
- java - 如何使用 Mybatis 和 PostgreSQL 创建一个空数组?
- c++ - 通过 Boost Python 在 C++ 对象之间传递共享指针的 Segfault
- java - 为什么我们在 Hibernate 配置或映射文件中写入标签
- javascript - DarkSky API - 未处理的拒绝错误 - ReactJS / Axios / Node.js
- scala - 如何从 Spark 数据框中的数组中获取统计信息?
- javascript - 在Node js中解析文件并存储到具有多个值的Map函数中