Excel:更新系列数据清除图表样式

时间:2016-10-19 16:24:18

标签: excel excel-vba vba

我在工作表中检索从我服务器上的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))

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

1 个答案:

答案 0 :(得分: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”

希望有帮助...