当程序更改边框行时Excel 2007图表不更新

我很确定这是一个错误,但也许我错过了一些东西。

所以表面图(所有行都可见)就是我想要的:

编辑:好吧,我试图张贴图像,但这个东西是不让我发帖导致其新的帐户..但你明白了

为了做到这一点,我创build了我的数据表,然后运行下面的代码:

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以及但没有骰子。 我也很确定它在Excel 2010(这是我第一次在家里尝试这个)正常工作,所以这似乎是在2007年的错误。错误或否我必须在2007年工作,所以我正在寻找解决scheme。 有人吗?

对不起,花了这么长的时间回复,但我试图让我的虚拟机上的Excel 2007,但似乎像我的虚拟机给我麻烦,所以我没有在Excel 2007中testing这个代码,但我相信它应该工作。

这就是为什么我总是build议不要使用“Active-Something”的原因。 无论是ActiveCellActiveSheetActiveworkbook等总是声明你的variables,然后与variables(S)工作。 你永远不会出错。 看到这个例子

 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