【问题标题】:Move existing chart on Excel with VBA使用 VBA 在 Excel 上移动现有图表
【发布时间】:2015-04-28 11:40:12
【问题描述】:

我有两个工作表:数据透视表和图表。我创建、格式化图表并将其从 PivotTables 表移动到 Charts 表。现在我只想将它从默认单元格移动到我想要的单元格,但我一直没有这样做。

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

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    我不能完全回答为什么,但是.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
    

    【讨论】:

    • 谢谢!!我想知道这是否是最好的方法。你会做一个数据透视图吗?
    • 不知道具体情况很难说。我很可能已经有一张图表了。然后我可能会有一个宏,它可能由工作表更改事件触发,以通过 .setsourcedata 重新填充自身以动态更新正在显示的数据。
    【解决方案2】:

    您的代码执行的操作与您的文本描述不同。

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

    当您更改左侧、顶部等时,它不会在工作表之间移动图表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多