2012-10-17 44 views
1

你好,我寫了一個代碼來生成圖形,它工作正常。 問題是它需要花費很多時間來生成。我不明白爲什麼它需要時間。 代碼如何使用vba無需花費時間生成圖形?

Dim cc As Chart 

    Set cc = ActiveWorkbook.Charts.Add 
    Set cc = cc.Location(Where:=xlLocationAsObject, name:=assume) 

    With cc 

    .ChartType = xlXYScatterLines 

    With .Parent 

     .Top = Columns(b).Offset(0, 4).Top 
     .Left = Columns(b).Offset(0, 4).Left 
     .name = "cc" 

    End With 

    End With 

    Dim sc As Series 
    Set sc = cc.SeriesCollection(1) 

    With sc 
     .Values = Columns(b).Offset(0, -3) 
     .XValues = Columns(b).Offset(0, -5) 
    End With 

請有人幫助我

+1

很好,很難說爲什麼要花這麼多時間,但我看到你正在使用的價值作爲數據源的2個整個列。這可能是Excel的一大問題。你確定這是你以後的事嗎? –

+0

你好斯科特可能你是對的但是我可以知道如何選擇一個特定的數據。我的意思是我有數據在柱面「A」,我不知道它有多少,所以它應該選擇整個數據 –

+0

那麼你應該看到動態的命名範圍。或者你可以在VBA中動態創建範圍,這樣你只能得到列中有數據的行。如果你願意,我可以非常快地告訴你。 –

回答

1

試試這個,只是圖表列的行與實際數據。

Sub makeChart(b As String, assume As String) 'i presupposed these arguments based on your code 

Application.ScreenUpdating = False 

Dim cc As Chart 

Set cc = ActiveWorkbook.Charts.Add 
Set cc = cc.Location(Where:=xlLocationAsObject, Name:=assume) 

With cc 

    .ChartType = xlXYScatterLines 

    With .Parent 

     .Top = Columns(b).Offset(0, 4).Top 
     .Left = Columns(b).Offset(0, 4).Left 
     .Name = "cc" 

    End With 

End With 


Dim strValue As String, strXValue As String 

'here you are using the passed column letter to find the specific column you want to chart 
strValue = Split(Range(b & "1").Offset(, -3).Address, "$")(1) 'will return "C" if given column F 
strXValue = Split(Range(b & "1").Offset(, -5).Address, "$")(1) 'will return "A" if given column F 

Dim sc As Series 
Set sc = cc.SeriesCollection(1) 

With sc 

    'will select from row 1 to the last true used row in the given column 
    .Values = Range(strValue & "1:" & strValue & Range(strValue & Rows.Count).End(xlUp).Row) 
    .XValues = Range(strXValue & "1:" & strXValue & Range(strXValue & Rows.Count).End(xlUp).Row) 

End With 

Application.ScreenUpdating = True 

End Sub 
+0

謝謝非常適合上面的代碼,它的工作原理就是我想要的 但你能告訴我如何添加更多的系列到相同的圖形用Xvalue和值相同的語法 –

+0

@M_S_SJJAN - >如果你有一個額外的問題,請發佈一個新問題所以。 –

1

你關掉屏幕更新?添加到您的代碼的開頭:

Application.ScreenUpdating = False 

然後在你的代碼的最後補充一點:

Application.ScreenUpdating = True 
+0

你好我使用上面的代碼它工作良好,但它採取仍然太多時間,因爲斯科特解釋它可能b因爲選擇整個coulmn所以只選擇列中的數據是 與sc 。值=列(b)。端(xlDown)..偏移(0,-3) .XValues =列(b)中.END(xlDown).Offset(0,-5) 端隨着 但它給錯誤PLEASE HELP ME –

相關問題