将数据locking到Excel图表

在VBA代码中,我使用已过滤的数据从工作表创build图表。

当我创build第二个图表(重新筛选数据,创build新图表)时,两个图表都将采用第二个图表的值。

如何locking第一个图表的图表数据以防止在创build第二个图表时被覆盖?

VBA code 1. Filter data for graph 1 2. Create graph 1 3. Filter data for graph 2 4. Create graph 2 Graph 1 and graph 2 now both have graph 2's data. 

现在我试图做的是

 5. Cut the chart and using "PasteSpecial" as an image. Sheets("Sheet2").PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False 

它在我的电脑上工作,但是当它在其他地方运行时,会产生一个错误。

合十礼

获取所需行为的最简单方法是将代码添加到图表创build方法,以将图表的源数据移动到隐藏的实用程序电子表格或类似的东西,而不直接引用“工作”范围。

例如,首先将数据复制到您创build的名为“ChartData”的隐藏电子表格中,然后更改图表创build代码以查看该表格,而不是现在查看的位置。 然后,您可以在某个configuration表上保留一个计数器,或者使用电子表格形状集合(对于Charttypes的对象searchActiveSheet.Shapes ),以确定已经创build了多less个图表,并设置后续图表来引用它们自己的各个列在“ChartData”上,这样就不会有重叠。

但是,如果使用形状集合,请记住清理ChartData表使数据和图表集合保持同步。

但是,尽pipe如此,解决问题的关键是让图表引用自己的数据系列,而不是共享源代码。

ulvund:不是将其手动复制并粘贴为图像,而是考虑将图表导出为图像,然后在Excel中重新导入图表? 以下为我工作:)

 Option Explicit Sub Sample() Dim FileNM As String FileNM = "C:\Sample.jpg" '~~> Export the chart as a jpg Sheets("Sheet1").ChartObjects(1).Chart.Export Filename:=FileNM, FilterName:="jpg" DoEvents '~~> Import the saved image in Sheet 2 Sheets("Sheet2").Pictures.Insert FileNM End Sub 

创build第一个图表后,可以执行以下操作将数据从单元格值转换为数组。 如果你有太多的数据点,这将打破。

 With ActiveChart.SeriesCollection(1) ' must repeat for all series in the chart .Name = .Name .Values = .Values .XValues = .XValues End With 

有关更多详细信息(尤其是如何在中断前接受更多分数),请查看我的网站上的“ Delink图表数据 ”