1

我的宏记录器中可能有一个错误,因为当我尝试在 xlvalues 轴上记录颜色变化时,没有记录下来。我需要做的是设置具有2种不同灰度和不同透明度的渐变径向颜色。

我正在使用此代码来设置我的图表:

ActiveSheet.Shapes.AddChart.Select

    With ActiveChart
        .ChartType = xlRadar
        .SetSourceData Source:=Range(StartCell, StopCell) ' Those contain a range of interesting data
        With .SeriesCollection(1)
            .Name = "=""Line 1"""
            .Format.Line.Weight = 1.5
        End With
        With .SeriesCollection(2)
            .Name = "=""Line 2"""
            .Format.Line.Weight = 1.5
            .Format.Line.DashStyle = msoLineDash
        End With
        .SetElement (msoElementChartTitleAboveChart)
        .ChartTitle.Text = Left(Cells(StartCell.Row, 1).Text, 2) & "." & Mid(Cells(StartCell.Row, 1).Text, 3, 1) & " GHz"
        With .Axes(xlValue)
            .TickLabels.NumberFormat = "# ""dB"""
            .Border.ColorIndex = 3 ' <- This is yet to be modified
        End With
    End With

我怎么做?我认为所有可以在 excel 中制作的东西,也可以在 vba 中以编程方式完成......

4

1 回答 1

1

我认为您不会对我的答案感到满意,但是就这样吧。

这似乎是 MS 从未修复的错误。

如果您转到对象浏览器或局部变量窗口,则实际上没有任何关于轴的Format.Line属性可以让您操纵渐变。在录制宏时观察,无论我对该对话框采取什么手动操作,录制器都只会录制.Visible = msoTrue.

这是我想要得到的结果:

在此处输入图像描述

虽然您可以操纵轴的.Format.Fill渐变,但它在视觉上只会影响轴值标签,而不是轴线本身

在此处输入图像描述

我观察到与 line 相同的限制Shapes,有时可以非常类似于使用轴线。没有骰子,这是同样的问题:您可以手动完成,但记录器不会产生任何结果,并且对象浏览器不会显示相关属性。

MS的文档Axis.Format糟糕

在此处输入图像描述

这似乎是一个长期存在的问题

这是 Jon Peltier在 7 多年前对这个问题的感叹。与许多形状相关的渐变填充是 2007 年的新功能。似乎他们在该版本中从未真正使它变得健壮,此后也没有对其进行修复。

我刚刚浏览了对象浏览器和 2007 年的在线帮助。列出了一些新的东西,比如 LinearGradient 和 ColorStops,它们是 2007 年的新东西。但是,这些都与 Line 或 LineFormat 无关,而 Line 和 LineFormat 有没有新的属性或方法。MSDN 中的 VBA 语言参考还不包括 Office 2007。我还没有找到任何关于如何对新形状进行编程的解释。不幸的是,缺少宏记录器功能来提供对这种新对象模型的洞察力。

就 VBA 而言,另一位 Microsoft MVP将其描述为基本上没有希望。这适用于 PowerPoint,但一般功能和方法应该相同:PPT 中的 Shape 与 XLS 或 Word 中的 Shape 并没有真正的不同。同样,任何应用程序中的图表现在都是相同的 Excel 图表,而不是 MSGraph。

它似乎确实是一个错误,但似乎没有解决方案:

您可能尝试访问的属性(例如.Format.Line.Fill...等)根本不存在——嗯,实际上我怀疑它们确实存在,但它们没有向您或 VBA 公开。尝试调用它们会引发错误:(

于 2014-07-23T16:16:18.617 回答