エクセル2003のVBA(マクロ)についての質問です。散布図のデータラベルのうちいくつかを消して、点(プロット)だけのをつくりたいのですが、マクロで、記録すると

ActiveSheet.ChartObjects("グラフ 10").Activate

ActiveChart.SeriesCollection(4).DataLabels.Select
ActiveChart.SeriesCollection(4).Points(1).DataLabel.Select
ActiveChart.ChartArea.Select

のようになり、データラベルを手作業で削除する部分がうまく記録されません。どうするのがいいのでしょうか? データラベルがあったりなかったりするので、このようなことをしています。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/25 08:18:25
  • 終了:2007/07/25 16:06:21

回答(3件)

id:beatgoeson No.1

beatgoeson回答回数128ベストアンサー獲得回数142007/07/25 09:47:56

ポイント27pt

http://q.hatena.ne.jp/1185319104


データラベルの「すべて」ではなく、「いくつか」となると何かしら「いくつか」を認識する条件が必要ですが、「すべて」であれば以下のようなコードを書けば消せそうですが、いかがですか。

ActiveSheet.ChartObjects("グラフ 1").Activate

'系列数を取得

intCoCnt = ActiveChart.SeriesCollection.Count

For i = 1 To intCoCnt

'系列内の要素数を取得

intPoCnt = ActiveChart.SeriesCollection(i).Points.Count

For j = 1 To intPoCnt

'ラベルがあれば、

If ActiveChart.SeriesCollection(i).Points(j).HasDataLabel = True Then

'そのラベルを削除

ActiveChart.SeriesCollection(i).Points(j).DataLabel.Select

Selection.Delete

End If

Next j

Next i

id:isogaya

すべてではないんです。

2007/07/25 10:27:40
id:stingerwolf No.2

stingerwolf回答回数9ベストアンサー獲得回数12007/07/25 09:58:43

ポイント27pt

どのように手作業をされているのかにもよりますが、

該当グラフを選択して右クリック→「グラフのオプション」→「データラベル」タブ内で、

各チェックボタンをオフにすることでラベルの表示は一括して非表示になります。

(もしかしてラベル自体を選択して消去していませんか?)


VBAがあくまでも必要なら、


ActiveChart.ApplyDataLabels _

AutoText:=True, _

LegendKey:=True, _

HasLeaderLines:=True, _

ShowSeriesName:=True, _

ShowCategoryName:=True, _

ShowValue:=True, _

ShowPercentage:=True, _

ShowBubbleSize:=True

ActiveWindow.Visible = True


を提示のVBAに追加すると非表示になるかと思います。


http://www.excel7.com/personal/vba_shiryou1.htm

以上ご参考まで。

id:isogaya

すべて消すわけではないです。別途指示したデータラベルを消したいのです。一括だったらやり方はわかっています。

2007/07/25 10:28:55
id:stingerwolf No.3

stingerwolf回答回数9ベストアンサー獲得回数12007/07/25 11:15:29

ポイント26pt

では単純に提示のVBAに対して、セレクトした系列のポイント部分のテキストを消去できればいいということですね。


でしたら↓のようにしてみてください。


ActiveSheet.ChartObjects("グラフ 10").Activate

ActiveChart.SeriesCollection(4).DataLabels.Select

ActiveChart.SeriesCollection(4).Points(1).DataLabel.Select

ActiveChart.SeriesCollection(4).Points(1).DataLabel.Delete

ActiveChart.ChartArea.Select


http://www.moug.net/skillup/nksw/nksw06-01.htm

id:isogaya

ありがとうございます。これでよさげですね。

2007/07/25 15:59:58
  • id:stingerwolf
    すいません、#2の回答者です。
    間違って全部オンになる方のVBを貼ってしまいました…。
    「True」の部分を「False」に置換して使ってください。
    トホホ…。
  • id:beatgoeson
    「すべて」でないとすれば、すべてでない条件を決めないと消せない気がするんですが‥
    その条件(例えば、”ラベルの中にある文字列が入ってるもの”、とか”値が100以下のもの”とか)となるコードを、すべて削除するコードに加えて、条件に合致するものだけラベルを削除すればいいのではないでしょうか?
    的外れな回答でしたら、すみません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません