[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで空白の凡例を削除したいです。』(もも)
【VBA】
アクティブシート上の全グラフにおいて、空白の系列を全て削除するマクロを実行したいです。
Sub Sample()
Dim ch As ChartObject Dim i As Long
For Each ch In ActiveSheet.ChartObjects For i = 1 To ch.Chart.SeriesCollection.Count If ch.Chart.SeriesCollection(i).Name = "" Then ch.Chart.SeriesCollection(i).Delete End If Next i Next ch End Sub
上記のコードを標準モジュールに記入したところ、If ch.Chart.SeriesCollection(i).Name = "" Then
パラメータは無効ですというエラーが生じてしまいます。
このエラーの原因と解決方法および正しいコードをご教授いただきたいです。よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:unknown >
もしくは、
For each を使用してください。
ところで、空白の系列と空白の凡例が同じ意味なのでしょうか?
(マナ) 2020/04/26(日) 07:34
系列の名前が""になるのはどんな場合なんでしょうか。
指定しなかった場合は、Excel側が系列1、系列2などを補間していくはずなので、
そういうことがそもそもあるのかなあ、などと思っています。
空白じゃなく、特定の系列名の系列を指定したいということであれば、
わかりますが。
また、n番目の系列の凡例だけ消すのであれば、
chart.Legend.LegendEntries(n)
のようなコードになりますね。(マクロ記録によります)
(γ) 2020/04/26(日) 10:18
Sub Sample()
Dim ch As chartobject
For Each ch In ActiveSheet.ChartObjects
If ch.Chart.SeriesCollection.Name = "" Then
ch.Chart.SeriesCollection.delete
End If Next ch End Sub
For eachを使用してもエラーが生じてしまいます…。
(もも) 2020/04/26(日) 10:37
例えば、系列1神奈川県、系列2東京都、系列3静岡県というグラフから、系列1男、系列2女というグラフにシフトした際に、系列3部分が空白になってしまいます。
他にも、項目を変えて様々なグラフを作成する処理をしたいので、空白の系列を削除するマクロを作成しようとしています。
(もも) 2020/04/26(日) 10:43
Dim ser As Series For Each ser In ch.Chart.SeriesCollection
(マナ) 2020/04/26(日) 10:56
>グラフにシフトした際に、系列3部分が空白になってしまいます。
これはテンプレートグラフを使ってもそうなりますか?
(γ) 2020/04/26(日) 11:20
Sub Sample()
Dim ch As ChartObject Dim ser As Series
For Each ch In ActiveSheet.ChartObjects For Each ser In ch.Chart.SeriesCollection If ch.Chart.SeriesCollection.Name = "" Then ch.Chart.SeriesCollection.delete End If Next ser Next ch End Sub
このようなコードで間違いないでしょうか…?
(もも) 2020/04/26(日) 11:23
If ser.Name = "" Then ser.Delete End If
(マナ) 2020/04/26(日) 11:30
また、系列が空白の場合、凡例を非表示にする(空白ではない場合は、凡例を表示する)という処理も行いたいのですが、
Sub Sample2()
Dim ch As ChartObject Dim ser As Series
For Each ch In ActiveSheet.ChartObjects For Each ser In ch.Chart.SeriesCollection If ser.Name = "" Then ser.Name.HasLegend = False Else ser.Name.HasLegend = True End If Next ser Next ch End Sub
上記のコードで実行はできるのですが、空白の系列が削除されません。度々申し訳ございませんがどなたか教えていただけますでしょうか…?
(もも) 2020/04/26(日) 19:27
とは、どういう場合でしょうか?
系列を削除( ser.Delete )したら、凡例も消えませんでしたか。
(マナ) 2020/04/26(日) 20:13
Sub test() Dim cho As ChartObject Dim ser As Series
For Each cho In ActiveSheet.ChartObjects For Each ser In cho.Chart.FullSeriesCollection ser.IsFiltered = ser.Name = "" Next Next
End Sub
(マナ) 2020/04/26(日) 20:31
(マナ) 2020/04/27(月) 18:40
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.