1

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

所以我想要一个曲面图(所有线条都可见):

编辑:好的,我试图发布一张图片,但这个东西不允许我发布,因为它是一个新帐户......但你明白了

为此,我创建了我的数据表,然后应该运行以下代码:

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再次重新运行,则行会填满。当然,这完全没有意义。

我绝不是这方面的新手(我已经帮助回答了我个人帐户中的一些问题,但在工作中无法访问该帐户)。我也尝试过DoEventsActiveChart.Refresh但没有骰子。我也很确定它在 excel 2010 中可以正常工作(这是我第一次在家尝试的地方),所以这似乎是 2007 年的一个错误。错误与否我必须在 2007 年工作,所以我正在寻找解决方案。请问有人吗?

4

1 回答 1

0

很抱歉花了这么长时间才回复,但我试图在我的虚拟机上安装 Excel 2007,但似乎我的虚拟机给我带来了麻烦,所以我没有在 Excel 2007 中测试过这段代码,但我相信它应该可以工作。

这就是为什么我总是建议不要使用“Active-Something”的原因。不管ActiveCell是,ActiveSheet等等Activeworkbook。总是声明你的变量,然后使用变量。你永远不会出错。看这个例子

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
于 2012-08-13T05:23:50.460 回答