【问题标题】:Excel : Updating series data erase chart stylesExcel:更新系列数据擦除图表样式
【发布时间】:2016-10-19 16:24:18
【问题描述】:

我正在从我服务器上的 php 文件中检索格式为 csv 的工作表数据。
由于我认为我不知道我会收到多少行,它会推送此工作表中的数据,并在必要时使用替换单元格内容的选项,并删除未使用的内容。

我运行一个程序来解析此工作表的数据以填充另一个工作表。
出于与上述相同的原因,我在填写第二张工作表之前清除了它的列。

这是我的程序示例:

Application.ScreenUpdating = False

Worksheets("data2").Activate
Range("A:B:C:D").Clear

Worksheets("data").Activate
Set my_range = Range("A:A")

For i = 1 To my_range.Rows.Count
    'calculations saved in some vars : var1, var2, ...
    Cells(i, 1).Value = var1
    Cells(i, 2).Value = var2
    '...
Next i

Application.ScreenUpdating = True

在第二个工作表中,我使用两个工作表中的数据插入了一个图表。
由于行数是动态的,我已经声明了名称来引用我的列。它们的设置如下:=OFFSET(data!$A$1;0;0;COUNT(data!$A:$A))

我的问题是当我运行我的程序时,我丢失了为我的图表设置的所有样式。 难道我做错了什么 ?是否有保留图表样式的选项?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我误读了您的问题,并认为您的单元格格式丢失了。现在我看到这是你的图表。我有许多图表,我正在做和你一样的事情。我用 VBA 更新了图表系列,而且我永远不会丢失格式。在我清除数据之前,我将所有图表系列值设置为 ={1}。然后我有另一个宏在我加载数据后设置系列值。

    这是我在清除数据之前为清除系列而写的一个子:

    Sub clearChart(chartWs As Worksheet, chartName As String)
      Dim cObj As ChartObject
      Dim i As Integer
      Set cObj = chartWs.ChartObjects(chartName)
      For i = 1 To cObj.Chart.SeriesCollection.count
         cObj.Chart.SeriesCollection(i).Values = "{1}"
         cObj.Chart.SeriesCollection(i).XValues = "{1}"
      Next i
    End Sub
    

    示例: clearChart Sheet2, "Chart1"

    希望对您有所帮助...

    【讨论】:

    • 效果很好。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多