使用VBA将现有图表移动到Excel上

我有两个工作表:数据透视表和图表。 我创build,格式化并将图表从数据透视表移动到图表工作表。 现在我只想把它从默认的单元格移动到我想要的单元格,但是我一直未能这样做。

当我运行下面的代码时,我得到一个运行时错误:“对象'ChartObject'失败的方法'左'。 我究竟做错了什么?

Sub CreateChart() Sheets("PivotTables").Activate Dim myChart2 As chart Set myChart2 = Sheets("PivotTables").Shapes.AddChart.chart With myChart2 .SetSourceData Source:=Range("D1").CurrentRegion .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = "Sum of Impressions by Product" .SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbBlue .ShowAllFieldButtons = False .Location xlLocationAsObject, "Charts" End With Sheets("Charts").Activate With myChart2.Parent .Left = Sheets("Charts").Range("F1").Left .Top = Sheets("Charts").Range("F1").Top .Width = Sheets("Charts").Range("F1:J1").Width .Height = Sheets("Charts").Range("F1:F10").Height End With End Sub 

我不能完全回答为什么,但在.Location xlLocationAsObject, "Charts".left/etc的位置设置之间的顺序之间似乎存在冲突

在图纸之间移动图表之前,用.location在图纸之间移动图表似乎可以解决您的问题。

 Sub CreateChart() Sheets("PivotTables").Activate Dim myChart2 As chart Set myChart2 = Sheets("PivotTables").Shapes.AddChart.chart With myChart2 .SetSourceData Source:=Range("D1").CurrentRegion .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = "Sum of Impressions by Product" .SeriesCollection(1).Format.Fill.ForeColor.RGB = rgbBlue .ShowAllFieldButtons = False With .Parent .Left = Sheets("Charts").Range("F1").Left .Top = Sheets("Charts").Range("F1").Top .Width = Sheets("Charts").Range("F1:J1").Width .Height = Sheets("Charts").Range("F1:F10").Height End With .Location xlLocationAsObject, "Charts" End With Sheets("Charts").Activate End Sub 

你的代码执行一些不同于你的文字描述。

  1. 您在工作表“数据透视表”上创build图表“图表2”
  2. 您应该复制或剪切此工作表中的图表
  3. 然后,您可以使用“粘贴”或“pastespecial”插入工作表“图表”
  4. 现在,您可以在此工作表上格式化和/或移动位置

当你改变左边,顶部等,它不会将图表从图表移动到图表