2012-08-13 59 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