ActiveChart.Deselect不起作用

时间:2015-04-26 18:06:58

标签: excel vba excel-2007 excel-charts

我从三列数据创建一个xy散点图 - 请参阅下面的数据示例和代码。代码从加载项运行,而不是来自活动工作簿

SeriesCollection(1)放到辅助轴上后,选择该图表线。 根据Excel 2007帮助,ActiveChart.Deselect应该取消选择所有内容。但是在添加到我的代码中时没有做任何事情。自Office XP以来,对象模型更改中列出.Deselect作为图表对象的方法,状态为hidden

我找到了各种建议,包括选择一些细胞;或使用SendKeys发送{ESC}。似乎唯一有效的方法是首先启用screenupdating,然后保护图表。 (删除选择后不需要取消保护,但方便进一步工作)。

有更好的方法,还是合理的解决方法?

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

3 个答案:

答案 0 :(得分:0)

- Udpated Answer -

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

cS.ChartArea.Select

- 原始答案 -

这不适用于OP,但是当图表不在图表工作表上但在标准工作表上

时,它仍可以工作

如果目标是简单地取消选择图表,那么您应该能够选择工作表上的任何其他内容(范围,对象等)来更改选择。我选择了单元格A1,但您可以选择任何内容(例如,位于图表后面的单元格)。

ActiveSheet.Range("A1").Select

答案 1 :(得分:0)

尝试ActiveChart.Des e lect而不是ActiveChart.Deslect

答案 2 :(得分:-1)

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

.chart.refresh