2017-02-09 5 views
0

Excel VBAで非常に新しい...ここに非常によく似ています:Avoiding the use of Activate and Select when working with charts (Excel)、私はいくつかのチャートを少し変更するためにActivateを使わないようにしています。大きなワークブック。私は多くのチャートでこの作業を行っていますので、できるだけランタイムを最小限に抑えたいと思っています。選択/アクティブ化機能がマクロを遅くする傾向があると聞いています。Excel用VBAでのチャートの使用を回避する

私のコード例は次のようになります。

ActiveSheet.ChartObjects("Chart 3").FullSeriesCollection(1).XValues = "=Leb!$C$2:$G$2" 

このコードは、エラー時にが発生します。これは私には論理的な意味があるので、私は次のように次の2行を交換しようとしてきた

ActiveSheet.ChartObjects("Chart 3").Activate 
ActiveChart.FullSeriesCollection(1).XValues = "=Leb!$C$2:$G$2" 

実行したので、上記の投稿に示されているWITH形式を使用しようとしました:

With Worksheets("Chart").ChartObjects("Chart 3").Chart.XValues = "=Leb!$C$2:$G$2" 
End With 

これはまた、エラーをスローします。

私はおそらく小さな構文エラーを起こしていることを理解していますが、誰かが私が間違っていることを洞察できますか? (以前はWITH関数を使用したことはありませんでした。そのため一般的な見識も非常に役立ちます)

ありがとうございます。

With Worksheets("Chart").ChartObjects("Chart 3").Chart 
    .SeriesCollection(1).XValues = "=Leb!$C$2:$G$2" 
End With 

XValuesSeriesオブジェクトではなく、チャート(あなたの最後のサンプルコードを参照)に属しているほとんどが

+0

あなたが_ChartObjects_と_FullSeriesCollection_間のキーワード_Chart_を含める必要があります。! 'ActiveSheet.ChartObjects( "図表3")Chart.FullSeriesCollection(1).XValues =「= LEB $ C $ 2:$ G $ 2 "' –

答えて

1

...。

EDIT:

Dim arrCharts, cht 
arrCharts = Array("Chart 3", "Chart 4", "Chart 5", "Chart 7") 

For Each cht In arrCharts 
    With Worksheets("Chart").ChartObjects(cht).Chart 
     .SeriesCollection(1).XValues = "=Leb!$C$2:$G$2" 
    End With 
Next cht 
+0

ありがとうございました!同じシート上の複数のチャートにこの正確な変更を加えることも可能ですか? ChartObjects(「Chart 3」、「Chart 4」、「Chart 5」、「Chart 7」)Chart.SeriesCollection(1).XValues = "Leb!$ C $ 2:$ G $ 2 "End With' – SpippyTheInsane

+0

上記の編集を参照してください –

+0

@TimWilliams' SeriesCollection'は 'Chart'に属し、' ChartObject'に属しません。 –

関連する問題