首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveChart.Deselect不起作用

ActiveChart.Deselect不起作用
EN

Stack Overflow用户
提问于 2015-04-26 18:06:58
回答 3查看 5.3K关注 0票数 1

我从三列数据创建了一个xy散点图--参见下面的数据示例和代码。代码是从外接程序运行的,而不是从活动工作簿运行的。

SeriesCollection(1)放置到第二轴后,选择所绘制的线。根据Excel2007Help,ActiveChart.Deselect应该取消选择所有内容。但是当添加到我的代码中时,它什么也没做。.Deselect列在对象模型更改中,因为Office是图表对象的一种方法,状态为hidden

我发现了各种各样的建议,包括选择一些单元格;或者使用SendKeys发送{ESC}。唯一可行的方法是首先启用屏幕更新,然后保护图表。(取消保护后不必移除所选内容,但便于进一步工作)。

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

Chart.Deselect在其他版本的Excel中工作吗?

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

短数据样本

代码语言:javascript
复制
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

使用此代码:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2015-04-27 15:40:40

--有答案的--

我添加了示例数据,并在代码中创建了一个外接程序。我确认要取消选择该系列,只需使用以下一行选择图表区域:

代码语言:javascript
复制
cS.ChartArea.Select

--原来的答案--

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

如果目标是简单地取消选择图表,那么您应该能够选择工作表上的其他任何内容(范围、对象等)。若要更改选定内容,请执行以下操作。我已经选择了单元格A1,但是您可以选择任何东西(例如,位于图表后面的单元格)。

代码语言:javascript
复制
ActiveSheet.Range("A1").Select
票数 0
EN

Stack Overflow用户

发布于 2018-06-15 22:15:06

尝试ActiveChart.Deselect而不是ActiveChart.Deslect

票数 -1
EN

Stack Overflow用户

发布于 2020-12-12 02:12:55

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

代码语言:javascript
复制
.chart.refresh
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29881415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档