[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『グラフ内のデータラベルをVBAでいじりたい。』(エビエビ)
初めましてエビエビと言います。
VBA初心者でマクロの記録からちょこちょこいじって またはマクロの記録を継ぎ接ぎして もしくはネットで転がっているVBA記述を組み込んでいる程度の者です。
やりたいことは、2種類あるうちの1種類のデータラベルのフォントを いじりたいです。 VBA記述は最後にあります。
マクロの記録から作成しているのでどこのデータラベルなのかと言うと上手く言えないのですが .FullSeriesCollection(2).ApplyDataLabelsの部分です。 今現在、コメントブロックしているところがエラーになります。 エラー内容は 「TextFrame2'メソッドは失敗しました:'ChartFormat'オブジェクト」 とコメントブロックを解いて動かすと出ます。
やっている事は 1)グラフの元になっている数値置き場シートにある Range("B8:D11,B13:D16,B18:D21,B23:D26,B28:D31").Selectを使って必要な数値を選び、 2)グラフを作成し、 3)マイナスだと先週分との比較が見えにくいので出発を0で合わせた棒グラフにし、 4)とりあえず全部の棒グラフにデータラベルを表示させて ここからはエラーで動かない内容。 5)マイナスのある棒グラフのデータラベルだけを太字とか文字を大きくとか 下線とかつけたいなぁ。 という感じです。
なお、エラー部分をコメントアウトすればデータラベルの変更以外は すべて最後まで動きます。
あ、私が試したのは、 .FullSeriesCollection(2).ApplyDataLabels にたいして(この***(2)というのがマイナスのある棒グラフなのです)、 .FullSeriesCollection(2).ApplyDataLabels.Format.TextFrame2.TextRange.Font.Size = 18 .FullSeriesCollection(2).ApplyDataLabels.TextFrame2.TextRange.Font.Size = 18 .FullSeriesCollection(2).ApplyDataLabels.TextRange.Font.Size = 18 .FullSeriesCollection(2).ApplyDataLabels.Font.Size = 18 などやってみましたが、全てエラーでした。
お恥ずかしい話ですが、、、 ええ、VBAの知識は皆無なのでマクロの記録とVBAの中の記述を パズルのように組み替えてなんとかここまで来た感じです。 どうかお叱りにならないでください;;
どうかどうか解る方、教えてください。
'
Range("B8:D11,B13:D16,B18:D21,B23:D26,B28:D31").Select Range("B28").Activate ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select With ActiveSheet.ChartObjects(1) .Name = "ヌマエビ大好き" End With With ActiveSheet.ChartObjects(1).Chart .HasTitle = True .ChartTitle.Text = "週毎のヌマエビの増減グラフ 4月分" .FullSeriesCollection(1).ApplyDataLabels .FullSeriesCollection(2).ApplyDataLabels ' .FullSeriesCollection(2).Format.TextFrame2.TextRange.Font.Bold = msoTrue ' .FullSeriesCollection(2).Format.TextFrame2.TextRange.Font.UnderlineStyle = msoUnderlineSingleLine ' .FullSeriesCollection(2).Format.TextFrame2.TextRange.Font.Size = 18 End With ActiveChart.FullSeriesCollection(1).Select Application.CutCopyMode = False ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).CrossesAt = 0 ActiveChart.Axes(xlValue).CrossesAt = ActiveChart.Axes(xlValue).MinimumScale Sheets("グラフの元になっている数値置き場").Select ActiveChart.Parent.Cut ActiveCell.Offset(18, 4).Range("A1").Select Sheets("グラフを見せるシート").Select ActiveCell.Select ActiveSheet.Paste ActiveSheet.Shapes("ヌマエビ大好き").ScaleWidth 2.7770833333, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("ヌマエビ大好き").ScaleHeight 2.2430555556, msoFalse, _ msoScaleFromTopLeft End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
まず、1ラベルを With .FullSeriesCollection(1).ApplyDataLabels と End With の2行に分けてみてください。そして、プロパティ変更は、この2行の間で行います。(.Format.TextFrame2.TextRange.Font.Bold = msoTrue 等)
プロパティ変更でエラーになるならば、エラー手前で停止し、ローカルウィンドウを表示。ツリー構造を追ってプロパティ名を探し、これに合うようにコードを書いてみてください。
このグラフは新しいものであり、機能がてんこ盛りになっていて、マクロでいじるには結構難易度が高いのです。 おそらく、Webを探しても、ほとんど情報が出てこないでしょう。 頑張ってオブジェクト解析し、コード化してみてください。
(マクロの自動記録で、Select文を多用したコードが出てくると思いますが、ラベルをいじっている付近のSelectを真似すると、動くかも?)
(???) 2017/08/22(火) 11:16
.FullSeriesCollection(2).DataLabels.Format.TextFrame2.TextRange.Font.Size = 18 (???) 2017/08/22(火) 11:43
???さん、ありがとうございました! 大変返信が遅くなってすみません><
最初のは、よくわからず、一応やってみたんですが 最初の教えて頂いたローカルウィンドウの方は、何も値が入ってこなく う〜ん。。。ってなっていましたが、 2番目に教えて頂いたことを下記のようにしたらできました! .FullSeriesCollection(2).ApplyDataLabels .FullSeriesCollection(2).DataLabels.Format.TextFrame2.TextRange.Font.Bold = msoTrue .FullSeriesCollection(2).DataLabels.Format.TextFrame2.TextRange.Font.UnderlineStyle = msoUnderlineSingleLine .FullSeriesCollection(2).DataLabels.Format.TextFrame2.TextRange.Font.Size = 18 こうしました! 無事動きました!
本当にありがとうございました!
(エビエビ) 2017/08/22(火) 14:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.