当程序更改边框行时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”的原因。 无论是ActiveCell
, ActiveSheet
, Activeworkbook
等总是声明你的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