0

比較的簡単なリクエストだといいのですが。

作成している多数のグラフを自動的にフォーマットするマクロに取り組んでいます。しかし、各チャートに含まれるシリーズの数が大きく異なるという問題があります。

たとえば、4つのシリーズしかないチャートで現在のコードを実行しようとすると、5番目のシリーズがフォーマットされることを期待しているため、以下のコードに到達するとエラーが発生し、その後はコードを処理できません。「チャートに5番目のシリーズがある場合は、マクロの次の行を適用する」というコードを実装する必要があると思います。

以下のコードは、各シリーズのフォーマットに使用しているコードです。上記のように、これをifステートメントにどのように含める必要がありますか?

ActiveChart.LegEND.Select
ActiveChart.LegEND.LegendEntries(5).Select
ActiveChart.SeriesCollection(5).Select
With Selection.Format.Line
    .Visible = msoTrue
    .Weight = 1.5
End With
4

1 に答える 1

2

コレクションのCountメンバー( documentation )を使用できます。これは、チャート内のシリーズの数を返します。次のようなものを使用できます。SeriesCollection

ActiveChart.LegEND.Select

If ActiveChart.SeriesCollection.Count = 5 Then

    ActiveChart.LegEND.LegendEntries(5).Select
    ActiveChart.SeriesCollection(5).Select
    With Selection.Format.Line
         .Visible = msoTrue
         .Weight = 1.5
    End With
End If

これは、正確に 5 つのシリーズがある場合にのみ機能Countします。6 つ以上のシリーズがある場合、上記の書式設定は適用されません。

If ステートメントを次のように少し変更できます。

If ActiveChart.SeriesCollection.Count >= 5 Then

    ActiveChart.LegEND.LegendEntries(5).Select
    ActiveChart.SeriesCollection(5).Select
    With Selection.Format.Line
         .Visible = msoTrue
         .Weight = 1.5
    End With

End If

その後、コード内でこのブロックを >= 6 繰り返すことができ、動作するはずです。余談ですが、これはおそらくコードのブロックを繰り返しているため、これをコーディングする最も効率的な方法ではありませんが、それは実際にはこの質問のポイントではありません。

于 2012-08-02T09:10:36.023 に答える