VBA 使えるソースコード

つたないソースコードを載せます。これは、他人の書いたソースコードを読む練習に最適です。初心者の方は、どうしたらきれいになるかなど考えながら活用してください。

VBA 棒グラフを自動で作ってみよう

Option Explicit

Sub 棒グラフ()

Call C
Call D
Call E

End Sub

Function C()
Range("C2:C4").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet3!$C$2:$C$4")
ActiveChart.FullSeriesCollection(1).Name = "=Sheet3!$A$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Sheet3!$A$5"
ActiveChart.FullSeriesCollection(2).Values = "=Sheet3!$C$5:$C$7"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Sheet3!$A$8"
ActiveChart.FullSeriesCollection(3).Values = "=Sheet3!$C$8:$C$10"
ActiveChart.FullSeriesCollection(3).XValues = "=Sheet3!$B$2:$B$4"
ActiveChart.SetElement (msoElementLegendRight)

ActiveSheet.ChartObjects(1).Chart.HasTitle = True
ActiveSheet.ChartObjects(1).Chart.ChartTitle.Text = Cells(1, 3).Value

ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Cells(2, 9).Value
End Function

Function D()
Range("D2:D4").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet3!$D$2:$D$4")
ActiveChart.FullSeriesCollection(1).Name = "=Sheet3!$A$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Sheet3!$A$5"
ActiveChart.FullSeriesCollection(2).Values = "=Sheet3!$D$5:$D$7"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Sheet3!$A$8"
ActiveChart.FullSeriesCollection(3).Values = "=Sheet3!$D$8:$D$10"
ActiveChart.FullSeriesCollection(3).XValues = "=Sheet3!$B$2:$B$4"
ActiveChart.SetElement (msoElementLegendRight)

ActiveSheet.ChartObjects(2).Chart.HasTitle = True
ActiveSheet.ChartObjects(2).Chart.ChartTitle.Text = Cells(1, 4).Value

ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Cells(2, 9).Value
End Function

Function E()
Range("E2:E4").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet3!$E$2:$E$4")
ActiveChart.FullSeriesCollection(1).Name = "=Sheet3!$A$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Sheet3!$A$5"
ActiveChart.FullSeriesCollection(2).Values = "=Sheet3!$E$5:$E$7"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Sheet3!$A$8"
ActiveChart.FullSeriesCollection(3).Values = "=Sheet3!$E$8:$E$10"
ActiveChart.FullSeriesCollection(3).XValues = "=Sheet3!$B$2:$B$4"
ActiveChart.SetElement (msoElementLegendRight)

ActiveSheet.ChartObjects(3).Chart.HasTitle = True
ActiveSheet.ChartObjects(3).Chart.ChartTitle.Text = Cells(1, 5).Value

ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Cells(2, 9).Value
End Function

 

結果 ↓

f:id:yoronx:20200308174036p:plain