2012-08-13 48 views
1

我很確定這是一個錯誤,但也許我錯過了一些東西。Excel 2007圖表不更新當邊界線程序更改

所以表面圖(與所有可見的線)是我想:

編輯:確定我試圖張貼圖片,但這個東西是不是讓我張貼導致其新帳戶..但你的想法

要做到這一點,我創建我的數據表,然後應該運行這段代碼:

Sub test() 
    Charts.Add 
    ActiveChart.charttype = xlSurface 
    test2 
End Sub 
Sub test2() 
Dim a 
    For Each a In ActiveChart.Legend.LegendEntries 
     a.LegendKey.Format.Line.Visible = msoTrue 
     a.LegendKey.Format.Line.ForeColor.RGB = RGB(0, 0, 0) 
     ActiveChart.Refresh 
    Next a 
End Sub 

如果我跑test()壽呃,我得到了圖表,但沒有行(這是excel的默認值)。 如果我再次重新運行test2,這些行填滿。 當然,這絕對沒有意義。

我絕不是在這一個新手(我已經幫助回答我的個人帳戶的問題,但我阻止訪問,在工作)。我試過DoEvents而不是ActiveChart.Refresh,但是沒有骰子。我也敢肯定它正常工作在2010年的Excel(這是我第一次嘗試了這一點,在家裏),因此這似乎是在2007年的Bug錯誤或無我有,2007年工作,所以我在尋找解決方案。請人嗎?

回答

0

對不起,這麼長時間回答,但我一直想把Excel 2007中在我的虛擬機,但好像我的VM是給我麻煩,所以我沒有測試過在Excel 2007中這個代碼,但我認爲它應該工作。

這就是爲什麼我總是建議不使用「有源東西」的原因。無論是ActiveCellActiveSheetActiveworkbook等方面始終聲明變量,然後用變量(一個或多個)工作。你永遠不會出錯。看到這個例子

Sub test() 
    Dim objChrt As ChartObject 

    Set objChrt = ActiveSheet.ChartObjects.Add _ 
    (Left:=50, Width:=200, Top:=50, Height:=200) 

    With objChrt 
     .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:C5") 
     .Chart.ChartType = xlSurface 
     test2 .Chart 
    End With 
End Sub 

Sub test2(chrt As Chart) 
    Dim a 
    For Each a In chrt.Legend.LegendEntries 
     a.LegendKey.Format.Line.Visible = msoTrue 
     a.LegendKey.Format.Line.ForeColor.RGB = RGB(0, 0, 0) 
     chrt.Refresh 
    Next a 
End Sub