• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでのグラフの系列の設定について)

VBAでのグラフの系列の設定について

このQ&Aのポイント
  • VBAを使用してグラフの系列設定を行いたい場合、設定内容を変数にすると正常に動作しないことがあります。
  • 特に、線種やマーカースタイルの設定には注意が必要です。
  • 正常に動作させるためには、LST関数の定義に注意し、カラーインデックスの定義を正しく行う必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

> A(変数)="xlContinuous" > .LineStyle = A > という書き方は受け付けてくれないのでしょうか? これではダメでしょう。 xlContinuous 名前付定数で文字列じゃありません。 VBEの表示-オブジェクトブラウザで「xlLineStyle」を検索して、xlContinuousを見てください。 Const xlContinuous = 1 これなら通るでしょう。 .LineStyle = 1 Gotoの多用はソースを解りづらくしますので、控えた方が良いかと思います。

yasujiootani
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

LST や CID などの宣言部分と値をセットしている部分を省略してしまったら、何だかわかりません。 Iも不明ですし、実現されたい事も見えません。 Excel2000だと、LineStyleプロパティに使用出来る定数は下記のいずれかとなってます。 xlContinuous、xlDash、xlDashDot、xlDashDotDot、xlDot、xlDouble、xlSlantDashDot、xlLineStyleNone

yasujiootani
質問者

補足

すみません。 グラフの線種やマーカーを設定するマクロを作ろうと思います。その際、線種・マーカーを記述したシート("系列")から種類を読み取って、設定しようと思います。 KRT(10), LST(10), WGT(10), MST(10), MBC(10), SDW(10),CID(10), MFC(10), MSZ(10)にそれぞれ読み取った設定値を格納しようとしています。 A(変数)="xlContinuous" .LineStyle = A  という書き方は受け付けてくれないのでしょうか? 以下、マクロ。 ---------------------------------------- Sub 系列書式の設定2() Dim SHEETNAME As String Dim KRT(10), LST(10), WGT(10), MST(10), MBC(10), SDW(10) As String Dim CID(10), MFC(10), MSZ(10) As Integer I = 6 J = 2 1 'CONTINUE KRT(J) = Worksheets("系列").Cells(I, 2) LST(J) = Worksheets("系列").Cells(I, 3) CID(J) = Worksheets("系列").Cells(I, 4) WGT(J) = Worksheets("系列").Cells(I, 5) MST(J) = Worksheets("系列").Cells(I, 7) MBC(J) = Worksheets("系列").Cells(I, 8) MFC(J) = Worksheets("系列").Cells(I, 9) MSZ(J) = Worksheets("系列").Cells(I, 10) SDW(J) = Worksheets("系列").Cells(I, 11) If KRT(J) = "" Then GoTo 2 Else I = I + 1: J = J + 1 GoTo 1 End If 2 'CONTINUE KRTMAX = J - 2 SHEETNAME = "ACC": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "VEL": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "DIS": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "RDIS": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "ANGLE": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "SHEAR": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "SC": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU SHEETNAME = "OTM": Worksheets(SHEETNAME).Activate: GoSub KEIRETSU Worksheets("コントロール").Select End KEIRETSU: ActiveSheet.ChartObjects("グラフ 1").Activate NN = ActiveChart.SeriesCollection.Count If NN - 1 <> KRTMAX Then MsgBox ("グラフの系列の数と定義されている系列の数が異なる") End End If For I = 1 To NN KEIRETUNAME = ActiveChart.SeriesCollection(I).Name 'MsgBox KEIRETUNAME ActiveChart.SeriesCollection(I).Select If I = 1 Then GoTo 3 With Selection.Border ' .LineStyle = LST(I + 1) ' .ColorIndex = CID(I + 1) ' .WEIGHT = WGT(I + 1) .LineStyle = xlContinuous .ColorIndex = 1 .WEIGHT = xlThin End With With Selection ' .MarkerStyle = MST(I + 1) ' .MarkerBackgroundColorIndex = MBC(I + 1) ' .MarkerForegroundColorIndex = MFC(I + 1) ' .MarkerSize = MSZ(I + 1) ' .Shadow = SDW(I + 1) ' .Smooth = False .MarkerStyle = xlDiamond .MarkerBackgroundColorIndex = 48 .MarkerForegroundColorIndex = 1 .MarkerSize = 5 .Shadow = False .Smooth = False End With 3 'CONTINUE '********** ダミー系列の書式設定 If KEIRETUNAME = "DUMMY" Then ActiveChart.SeriesCollection(I).Select With Selection.Border .WEIGHT = xlThin .LineStyle = xlNone End With With Selection .MarkerBackgroundColorIndex = xlAutomatic .MarkerForegroundColorIndex = xlAutomatic .MarkerStyle = xlNone .Smooth = False .MarkerSize = 5 .Shadow = False End With End If Next I ActiveSheet.Cells(1, 1).Select Return End Sub

関連するQ&A

専門家に質問してみよう