2016-10-19 55 views
0

我在我的服務器上的php文件中檢索格式爲csv的工作表數據。
由於我認爲我不知道我會收到多少行,因此它會在此工作表中推送數據,並根據需要替換單元格的內容,並刪除未使用的單元格。

我運行一個過程來解析這個工作表的數據來填充另一個工作表。
由於與上述相同的原因,我在填充之前清除了第二個工作表中的列。Excel:更新系列數據擦除圖表樣式

這是我的程序的一個示例:

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

我誤解了你的問題,並認爲你的單元格丟失了格式。現在我看到它是你的圖表。我有很多圖表,我和你做的事情是一樣的。我用VBA更新Chart系列,我從不會丟失格式。在清除數據之前,我將所有圖表系列值設置爲{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」

希望幫助...

+0

的偉大工程。非常感謝 – zbMax