2017-07-27 15 views
0

VBAで削除しようとしているセルの範囲に2つのグラフがあります。チャートを削除するのではなく、何もせずに何度も繰り返します。これはこれまで私が試したことです。しかし範囲からグラフを削除する

For Each ChartObjects In Range(Cells(i + 3, 12), Cells(i + 19, 50)) 
    ChartObjects.Delete 
Next ChartObjects 
+0

ChartObjectをRangeオブジェクトに割り当てることはできません。 'ChartArea.Top'や' ChartArea.Left'や 'ChartArea.Width'がその範囲の座標と同じ座標内にあれば、チェックのようなことをする必要があります。あるいは、チャートのために何らかのタイプの動的ネーミングを使用し、 'Chart.Name'プロパティをチェックして –

答えて

1

あなたはチャートの左上隅の下のセルを範囲内にあるかどうかを確認するためにChartObjectにのTopLeftCellプロパティを使用することができます...

Dim oChrtObj As ChartObject 

For Each oChrtObj In ActiveSheet.ChartObjects 
    If Not Application.Intersect(oChrtObj.TopLeftCell, _ 
     Range(Cells(i + 3, 12), Cells(i + 19, 50))) Is Nothing Then 
      oChrtObj.Delete 
    End If 
Next oChrtObj 

注意、あなたもできます1行ですべてのグラフを削除してください...

activesheet.chartobjects.delete 

+0

Cleverを削除することができます。 ChartObjectだけがあるたびに「s」を追加しなければなりませんでした。 –

+0

実際には、わかりやすくするためにChartObjectはデータ型なので、For Eachコントロール変数の名前はChartObjectという名前とは異なるはずです。だから私はそれに応じてコードを修正した。 – Domenic

関連する問題