web-dev-qa-db-ja.com

VBAでシリーズ名を変更する方法

VBAを使用して作成している一連のグラフがあります(以下のコード)。

シリーズの名前をシリーズ1とシリーズ2から現在の状態とソリューションの状態に変更するのに問題があります。

私は取得し続けます

オブジェクト変数またはWithブロック変数が設定されていません

エラー。

ただし、srs1およびsrs2コードがないと、チャートは問題なく機能します(シリーズ名が間違っているだけです)。

私はこれを修正する方法を調べましたが、受け取った答えは私にはうまくいきません。
これを行う別の方法を知っている人はいますか?

Sub MA()
    Dim Srs1 As Series
    Dim Srs2 As Series
    Dim i  As Integer
    Dim MAChart As Chart
    Dim f As Integer
    f = 2 * Cells(2, 14)
     For i = 1 To f Step 2
        Set MAChart = ActiveSheet.Shapes.AddChart(Left:=750, Width:=400, Top:=130 + 50 * (i - 1), Height:=100).Chart
         With MAChart
         .PlotBy = xlRows
         .ChartType = xlColumnClustered
         .SetSourceData Source:=ActiveSheet.Range("Q" & 1 + i & ":Z" & 2 + i)
         .Axes(xlValue).MaximumScale = 4
         .Axes(xlValue).MinimumScale = 0
         .HasTitle = True
         .ChartTitle.Text = "Provider Load for " & Cells(i + 1, 15)
         'where errors start- works fine up to this point
         Set Srs1 = ActiveChart.SeriesCollection(1) 
         Srs1.Name = "Current State"
         Set Srs2 = ActiveChart.SeriesCollection(2) 
         Srs2.Name = "Proposed Solution"
         End With
    Next i
End Sub
5
Cam

これらの行を変更してみてください...

_     Set Srs1 = ActiveChart.SeriesCollection(1) 
     Srs1.Name = "Current State"
     Set Srs2 = ActiveChart.SeriesCollection(2) 
     Srs2.Name = "Proposed Solution"
_

に.。

_     .SeriesCollection(1).Name = "Current State"
     .SeriesCollection(2).Name = "Proposed Solution"
_

Withブロック内ですでにMAChartを使用しているので、他のプロパティの場合と同じ方法で.SeriesCollection(x).Nameプロパティにアクセスできるはずです。

上記のコードでMAChartを作成しているときに、ActiveChartを参照するコードで問題が発生していると思います(存在しないと思います)。

 Set Srs1 = MAChart.SeriesCollection(1) 
 Srs1.Name = "Current State"
 Set Srs2 = MAChart.SeriesCollection(2) 
 Srs2.Name = "Proposed Solution"
2
Juliusz