Vba 用Excel编制折线图

Vba 用Excel编制折线图,vba,excel,charts,Vba,Excel,Charts,我的任务是通过编程生成此图表: 到目前为止,我已经找到了这些 以及使用VBA生成图表 这是我当前的代码: Private Sub CommandButton1_Click() Sheet1.Select ActiveSheet.Shapes.AddChart.Select ActiveSheet.Shapes(1).Top = 10 ActiveSheet.Shapes(1).Left = 10 ActiveChart.ChartType = xlLineMarkers ActiveChar

我的任务是通过编程生成此图表:

到目前为止,我已经找到了这些 以及使用VBA生成图表

这是我当前的代码:

Private Sub CommandButton1_Click()
Sheet1.Select
ActiveSheet.Shapes.AddChart.Select
ActiveSheet.Shapes(1).Top = 10
ActiveSheet.Shapes(1).Left = 10
ActiveChart.ChartType = xlLineMarkers

ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Range("Table1")
ActiveChart.HasTitle = True
ActiveChart.ChartTitle.Text = Sheet1.Range("B2").Value
End Sub
然而,我并没有得到我需要的输出

这是一个示例数据表:

注:

  • 橙色线-每个项目的上限和下限
  • 蓝色虚线-每个项目的值

  • 好吧,下面的几点很接近。您需要更改范围(或设置它以动态查找它-这是另一个问题),并设置标题所在的单元格范围等。但我认为这应该可以帮助您:

    Excel 2013版:

    ActiveSheet.Shapes.AddChart2(332, xlLineMarkers).Select
    With ActiveChart
    
        ' Set the source
        .SetSourceData Source:=Range("Sheet1!$A$1:$D$6")
    
        ' Set the title
        .ChartTitle.Text = Sheet1.Range("B1").Value
    
        ' Format the labels to 45 degrees
        .Axes(xlCategory).TickLabels.Orientation = 45
    
        ' Set Line 2 to Orange dash, no marker
        With .FullSeriesCollection(2).Format.Line
            .ForeColor.ObjectThemeColor = msoThemeColorAccent2
            .DashStyle = msoLineDash
            .Parent.Parent.MarkerStyle = -4142
            'add other formatting here
        End With
    
        ' Set Line 3 to Orange dash, no marker
        With .FullSeriesCollection(3).Format.Line
            .ForeColor.ObjectThemeColor = msoThemeColorAccent2
            .DashStyle = msoLineDash
            .Parent.Parent.MarkerStyle = -4142
            'add other formatting here
        End With
    
    End With
    
    我是通过录制一个宏,然后用添加一个
    ,以去除对
    .Activechart
    的不必要使用来实现这一点的。如果以后需要参考它,您可以设置它,但这是另一个问题。如果要进一步细化,还可以创建一个循环,以取出
    .FullSeriesCollection()
    的一段代码

    Excel 2007/2010版本:(具有允许颜色变化的循环和可见性解决方案)


    由于我们不知道您想要的输出是什么,您最好的办法是记录您自己创建的图表。然后,您可以检查该录音的输出,并将其转换为有用/可重用的内容。@CLR在我的第一行句子中。我修改了问题并提供了我需要的输出的超链接。您是否尝试录制自己创建的图表?@CLR我目前正在尝试。但我真的不知道如何通过VBA创建图表。他们希望通过点击按钮来生成它(他们太懒了--),为什么不向我们展示当前代码的输出图表,这样我们就可以更好地帮助解决问题?这一点目前过于宽泛,因为我们不知道您具体遇到了什么问题。我在
    上遇到了一个错误。FullSeriesCollection
    ->
    方法或数据成员未找到(如果我理解正确的话)显然是在进一步研究后发现的
    AddChart2
    和此
    .FullSeriesCollection
    可在Ms Office 2013及以后的版本中找到。我正在使用2010。我在回答中添加了一个与早期Office版本兼容的版本。谢谢。在你发布另一个答案之前,我就已经开始了。但真的谢谢你:)
    ActiveSheet.Shapes.AddChart.Select
    With ActiveChart
        .ApplyLayout (1)
        .SetSourceData Source:=Range("'Sheet1'!$A$1:$D$6")
        .ChartType = xlLineMarkers
        .Axes(xlCategory).TickLabels.Orientation = 45
        .ChartTitle.Text = Sheet1.Range("B1").Value
    
        For scoln = 2 To 3
            With .SeriesCollection(scoln)
                .Format.Line.Visible = False
                .Format.Line.Visible = True
                .Format.Line.ForeColor.RGB = 683236
                .Format.Line.DashStyle = msoLineSysDash
                .MarkerStyle = -4142
            End With
        Next
    
        With .SeriesCollection(1)
             .MarkerStyle = 8
             .MarkerSize = 8
         End With
    End With