ActiveChart.Deselect 不起作用

问题描述 投票:0回答:4

我根据三列数据创建了一个 xy 散点图——请参阅下面的数据示例和代码。 该代码是从加载项运行的,而不是从活动工作簿运行的 SeriesCollection(1)

放到辅助轴上后,即选择该图表线。 根据 Excel 2007 帮助,

ActiveChart.Deselect

 应取消选择所有内容。  但当它添加到我的代码中时什么也没做。  自 Office XP 以来,
.Deselect
 作为图表对象的方法列在对象模型更改中,状态为 
hidden
我找到了各种各样的建议,包括选择一些单元格;或使用SendKeys发送{ESC}。  唯一有效的方法似乎是首先启用屏幕更新,然后保护图表。  (之后的取消保护并不是要取消选择,而是方便后续工作)。

有更好的方法,或者这是一个合理的解决方法吗?

Chart.Deselect

是否适用于其他版本的 Excel?

最终结果应该是图表在屏幕上可见,没有任何选择。

简短数据样本

Time Amps Volts 04/26/2015 01:22:39 PM 4.9 53.4 04/26/2015 01:22:40 PM -0.9 53.2 04/26/2015 01:22:41 PM -1.5 53.4 04/26/2015 01:22:42 PM 8.7 53.4 04/26/2015 01:22:43 PM -2.9 53.3 04/26/2015 01:22:44 PM -3.2 53.2 04/26/2015 01:22:45 PM 11.3 53.8 04/26/2015 01:22:46 PM -3.8 53.3 04/26/2015 01:22:47 PM -3.2 53.3 04/26/2015 01:22:48 PM 11.4 53.6 04/26/2015 01:22:49 PM -3.2 53.3 04/26/2015 01:22:50 PM -2.8 53.2 04/26/2015 01:22:51 PM 5.7 53.3 04/26/2015 01:22:52 PM 7.5 53.5 04/26/2015 01:22:53 PM 2.1 53.3 04/26/2015 01:22:54 PM 2.3 53.4 04/26/2015 01:22:55 PM 2.5 53.3 04/26/2015 01:22:56 PM 2.4 53.4 04/26/2015 01:22:57 PM 2.3 53.4 04/26/2015 01:22:58 PM 1.9 53.5 04/26/2015 01:22:59 PM 2 53.3 04/26/2015 01:23:00 PM 2.3 53.3 04/26/2015 01:23:01 PM 2.7 53.5 04/26/2015 01:23:02 PM 2.5 53.4 04/26/2015 01:23:03 PM -2.4 53.4 04/26/2015 01:23:04 PM -4 53.3 04/26/2015 01:23:05 PM -3.5 53.3 04/26/2015 01:23:06 PM 4.1 53.4 04/26/2015 01:23:07 PM 9.4 53.6 04/26/2015 01:23:08 PM -5.1 53.3 04/26/2015 01:23:09 PM 9.8 53.6 04/26/2015 01:23:10 PM -5.2 53.2 04/26/2015 01:23:11 PM 9.7 53.5 04/26/2015 01:23:12 PM -5.5 53.2 04/26/2015 01:23:13 PM 9.8 53.6

使用此代码:

Sub GraphEmeter() Dim cS As Chart Dim A As Axis Application.ScreenUpdating = False Set cS = ActiveWorkbook.Charts.Add Set cS = ActiveChart With cS .SetSourceData Range("capture!R1").CurrentRegion, xlColumns .ChartType = xlXYScatterLinesNoMarkers Set A = .Axes(xlCategory) With A .CategoryType = xlCategoryScale .BaseUnitIsAuto = True .TickLabels.Orientation = 45 End With .SeriesCollection(1).AxisGroup = 2 'deselect the chart area 'documented method ' ActiveChart.Deslect 'doesn't seem to work 'But this method does Application.ScreenUpdating = True .Protect .Unprotect End With End Sub

excel vba excel-2007 excel-charts
4个回答
0
投票

我添加了您的示例数据,并使用您的代码创建了一个加载项。我确认,要取消选择系列,您只需使用以下行选择图表区域即可:

cS.ChartArea.Select

--原答案--

这不适用于OP,但当图表不在图表工作表上而是在标准工作表上时仍然可以工作

如果目标只是取消选择图表,那么您应该能够选择工作表上的任何其他内容(范围、对象等)来更改选择。我选择了单元格 A1

,但您可以选择任何内容(例如位于图表后面的单元格)。

ActiveSheet.Range("A1").Select

这是在图表工作表中取消选择图表的一种迂回方式,但是当选择工作表时,它会取消选择图表。

0
投票
私有子工作簿_SheetActivate(ByVal Sh As Object)

如果 Sh.Type = 4 那么

与嘘

.Protect .Unprotect

结束
结束如果

结束子

尝试

-1
投票

e

lect 而不是 ActiveChart.Deslect

    

我使用这段代码解决了这个问题。

-2
投票
.chart.refresh


© www.soinside.com 2019 - 2024. All rights reserved.