|
ドラキー さん、こんばんわ。
>(A)
>「実行時エラー'1004'
>LegendEntryクラスのDeleteメソッドが失敗しました。
こっちはまだ再現できていませんが、
>(B)
>「実行時エラー'1004'
>凡例には最低1つの凡例文字列が含まれていなければなりません。」
見えないところにデータのないグラフがあるのかもしれませんね。
実物をみていないのでなんともいえませんが、ログをとってみれば何かわかるかもしれません。
Sub test()
On Error GoTo errlogs
Dim co As ChartObject, sc As Series, pt As Point
Dim II As Long, Imax As Long, Hmax As Long
'
'アクティブなシートが対象
With Application.ActiveSheet
'埋め込みグラフでループ
For Each co In .ChartObjects
With co.Chart
'系列は1
Set sc = .SeriesCollection(1)
'データの数
Imax = sc.Points.Count
'凡例に表示されている数
If .HasLegend = False Then
Hmax = 0
Else
Hmax = .Legend.LegendEntries.Count
End If
End With
'
'削除は後ろからが無難
For II = Imax To 1 Step -1
Set pt = sc.Points(II)
'値がゼロ
If sc.Values(II) = 0 Then
'ラベルがあれば削除
If pt.HasDataLabel = True Then
pt.DataLabel.Delete
End If
'データ数と凡例表示数が一致する時だけ処理
If Hmax = Imax Then
co.Chart.Legend.LegendEntries(II).Delete
End If
End If
Next
Next
End With
Exit Sub
'エラーになったらイミディエイトウィンドウにログ追加
errlogs:
Debug.Print "Err" & Err.Number, co.Parent.Name & "の"; co.TopLeftCell.Address & "にある" & co.Name, Error(Err.Number)
Resume Next '復帰
End Sub
イミディエイトウィンドウの内容で、どのグラフでどんなエラーが発生したのか、そのグラフが他のとどう違うか確認してみてください。
|
|