Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel ActiveChart.Deselect不起作用_Excel_Vba_Excel 2007_Excel Charts - Fatal编程技术网

Excel ActiveChart.Deselect不起作用

Excel ActiveChart.Deselect不起作用,excel,vba,excel-2007,excel-charts,Excel,Vba,Excel 2007,Excel Charts,我用三列数据创建了一个xy散点图——请参见下面的数据示例和代码。代码是从外接程序运行的,而不是从活动工作簿运行的 将SeriesCollection1放置到次轴上后,将选择该图表线。 根据Excel2007帮助,ActiveChart.Deselect应取消选择所有内容。但当添加到我的代码中时,它什么也没做。“取消选择”列在自Office XP以来的对象模型更改中,作为图表对象的一种方法,状态为“隐藏” 我发现了各种各样的建议,包括选择一些单元格;或者使用SendKeys发送{ESC}。唯一可行

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

将SeriesCollection1放置到次轴上后,将选择该图表线。 根据Excel2007帮助,ActiveChart.Deselect应取消选择所有内容。但当添加到我的代码中时,它什么也没做。“取消选择”列在自Office XP以来的对象模型更改中,作为图表对象的一种方法,状态为“隐藏”

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

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

图表.取消选择在其他版本的Excel中是否有效

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

短数据样本

使用此代码:

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
-含糊其辞的回答-

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

cS.ChartArea.Select
-原始答案-

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

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

ActiveSheet.Range("A1").Select

尝试使用ActiveChart。取消选择而不是ActiveChart。取消选择我使用此代码解决了此问题

.chart.refresh

我猜,即使你没有回答,那个图表。取消选择对你不起作用。当您从外接程序运行我的代码时,您的解决方案有效吗?它不适用于我,所以请张贴您使用的完整代码。我可以在另一张工作表上选择一个单元格,但我必须使用完整的工作簿…工作表…范围。。规格,我必须先选择表。然后,当然我必须重新选择图表。“.Protect.Unprotect”方法似乎更干净。我没有尝试加载项。我也没有尝试你原来的取消选择代码。我相信你的话,它不起作用了。我可以提出一个论点,即工作簿…工作表…范围…选择比.Project/.Unprotect更清晰,因为它更容易解释,或者您可以简单地使用cS.ChartArea.Select选择图表对象,而不是范围。在编辑的答案中,尽管您的新方法取消选择系列,但它会选择图表区域。我试图在图表可见且未选中任何内容的情况下结束,我编辑了我的问题以使其绝对清晰。我同意,如果图表是工作表上的一个对象,可以选择该工作表上的一个单元格来取消选择图表,但我不是这样认为的dealing@RonRosenfeld我被难住了。我似乎无法记录任何有效的手动操作。打{Esc}有效。在图表区域外单击可以工作。但我不能录下任何一个。。。或者在网上找到任何东西。我猜.protect版本之所以有效,是因为它会欺骗Excel更改Excel中的选择。此外,我使用的是Excel 2010,取消选择对我来说也没有任何作用。如果测试代码中出现了该键入错误,则会生成错误消息。没错,只是看到它在粘贴的代码中被注释掉了。这可能是,但是,如果在运行代码时出现了打字错误,它就不会运行了。这将导致编译错误。我想你不会碰巧在一张图表纸上的一张图表上尝试这种方法,并让它起作用吧?如果是,请分享您的设置。我只是再试一次,以防有一些适用的Excel更新,它仍然不适合我。
.chart.refresh