Vba 用Excel编制折线图
我的任务是通过编程生成此图表: 到目前为止,我已经找到了这些 以及使用VBA生成图表 这是我当前的代码: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
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