Vba 图表系列行:带到前面,发送到后面
如果我在Excel中使用VBA制作一个包含多个系列的折线图,并且其中两个系列的数据非常相似,因此它们的图表系列线部分重叠,那么最后一个写的是前面写的 在Vba 图表系列行:带到前面,发送到后面,vba,excel,charts,excel-charts,Vba,Excel,Charts,Excel Charts,如果我在Excel中使用VBA制作一个包含多个系列的折线图,并且其中两个系列的数据非常相似,因此它们的图表系列线部分重叠,那么最后一个写的是前面写的 在工作表\u Change事件中,我希望能够根据更改数据的用户操作,在前面的图表系列行之间来回切换。我可以在不删除和重新创建图表的情况下执行此操作吗 下面是我如何识别系列行的,例如,下面是系列2: Sheet1.ChartObjects("MyChart").Chart.SeriesCollection(2) 获取返回序列的TypeName。我在
工作表\u Change
事件中,我希望能够根据更改数据的用户操作,在前面的图表系列行之间来回切换。我可以在不删除和重新创建图表的情况下执行此操作吗
下面是我如何识别系列行的,例如,下面是系列2:
Sheet1.ChartObjects("MyChart").Chart.SeriesCollection(2)
获取返回序列的TypeName
。我在帮助中看到了系列
,但没有关于其属性和方法的信息。我在对象浏览器中看不到系列
(我使用的是Excel 2007)。我能够在上下文帮助下拉列表中获得属性和方法的列表,但是在下拉列表中我没有看到任何有希望的东西
因此,我可以在不删除和重新创建图表的情况下,将图表系列带到前面/发送到后面吗?您可以做的是将所有系列线条颜色更改为浅色,只有一种除外。你把那件涂成深或亮的(红色)。然后,您可以重复该过程(将宏指定给图表上/附近的按钮),依次高亮显示每个系列
Sub CycleSeriesColors()
Dim seriesCount As Integer, i As Integer, smod
Static s '"Remember" what series we are on between calls.
ActiveSheet.ChartObjects("Chart 1").Activate
' ActiveChart.PlotArea.Select
seriesCount = ActiveChart.SeriesCollection.Count
s = s + 1
smod = s Mod (seriesCount + 1)
' ActiveChart.ChartArea.Select
If Not smod = 0 Then
With ActiveChart.SeriesCollection(smod).Format.Line
.Visible = msoTrue
.Visible = msoTrue
.ForeColor.RGB = RGB(192, 0, 0)
.Transparency = 0
End With
For i = 1 To seriesCount
If Not i = smod Then 'the series is to backgrounded
With ActiveChart.SeriesCollection(i).Format.Line
.Visible = msoTrue
.Visible = msoTrue
.ForeColor.RGB = RGB(240, 240, 240)
.Transparency = 0.85
End With
End If
Next i
Else
Randomize
For i = 1 To seriesCount
With ActiveChart.SeriesCollection(i).Format.Line
.Visible = msoTrue
.Visible = msoTrue
.ForeColor.RGB = RGB(((i * i) ^ 0.6 * 3), ((i * i) ^ 0.6 * 8), ((i * i) ^ 0.6 * 12))
.Transparency = 0
End With
Next i
End If
End Sub
下面是一种简单的非VBA方法,用于突出显示图表中的一个系列 下面我在B列中显示X数据,在C:E列中显示系列alpha、beta和gamma的Y数据,在F列中显示额外数据 我有一个图表,图表下面是一个组合框,使用开发者选项卡>插入>表单控件>组合框插入。我格式化了控件(右键单击),并将输入范围设置为K16:18,单元格链接设置为J16 我选择了F2:F16,F2是活动单元。我在公式栏中输入了
=INDEX(C2:E2,$J$16)
,然后按住Ctrl键,同时按下Enter键。这将公式填充到整个范围。基本上,该公式根据组合框的单元格链接从左侧的三个单元格中获取值。由于我在组合框中选择了“beta”,J16包含值2,F列显示第二个数据列的值
该图表是使用整个数据范围制作的。前三个系列的格式为浅灰色线条,第四个(重复)系列的格式为比较突出的颜色。所有数据一次可见,但只有一个数据高亮显示
请尝试
Sheet1.ChartObjects(“MyChart”).Chart.SeriesCollection(2).PlotOrder=1
@chancea:谢谢,但是更改PlotOrder属性不会影响哪一行在另一行的前面/后面。嗯,对我来说是这样的,@chancea解决方案也适用于我。我使用Excel 2013。在我看来,Excel 2007有一些无法解释的错误。您可以尝试选择
ing系列,然后执行Selection.PlotOrder=1
。99.9%的情况下,我建议不要这样做,但我在使用图表/系列时看到了一些奇怪的情况&它们的格式似乎只有在您首先选择对象时才起作用。值得一试,正如他们所说:没有冒险,就没有收获。