グラフのサイズを揃えたいのでVBAを使っていたのですが、数値軸の最大値などが異なる際は、
プロットエリアでは、幅が揃えられません。というのも、色々試した結果・・・
プロットエリアサイズは、数値軸の文字左側からグラフの右端までの長さを規定しているようなのです。
そこをグラフの箱部分のサイズを揃えることを可能にできないでしょうか?
'// データを取得
With ActiveChart
chtH = .Parent.Height
chtW = .Parent.Width
chtPH = .PlotArea.Height
chtPW = .PlotArea.Width
End With
現在上記のマクロで調整したグラフからサイズを取得し、他のグラフのデータを書き換えるという
マクロを組んでいます。参考までにグラフを載せておきます。
この2つのグラフは、このマクロを使って揃えましたが、最大値が異なるため横幅が揃いません。
最大値を揃えると横幅が綺麗に揃います。しかしそのようにするとグラフが見難くなるためできません。
どなたかアドバイスをお願いします。
手動で揃えるには、大変な量なので・・・
No.1
- 回答日時:
Excel2007で確認しています。
PlotAreaには
InsideLeft
InsideTop
InsideWidth
InsideHeight
があります。これを使ってサイズを決めた方が良いようです。
ActiveChartを基準にするとして
(ChartObjectsのIndexとか名前を使えばActivateしないコードに出来ます)
各グラフの数値軸の最大値を比較しその最大値を取得
最大値のグラフのPlotAreaのInsideLeftを基準にする
ActiveChartのPlotAreaのInsideWidthを最大値のグラフのPlotAreaのInsideLeftを基準に補正する。
その後ActiveChartのPlotAreaのInside・・・値を基準にする。
大雑把な回答ですがこんなことでどうでしょうか。
質問文で提示されたコードがかける御方ですから大丈夫だと思います。
この回答への補足
すみませんバージョンを表記し忘れましたが、Excel2003でやりたいと思っています。
InsideLeft
InsideTop
InsideWidth
InsideHeight
このコードは、先日発見したのですが・・・取得のみで設定ができないようです。
手元に2007がないため確認できていませんが、2007では設定が可能なのでしょうか?
インターネットで検索したのですが、残念ながら見つけられずよろしければ教えて頂けますか。
お願いします。
No.2
- 回答日時:
ActiveChart基準で書いてみました。
グラフは
同一ワークシート上にある複数の埋め込みグラフ
を対象にしています。
Excelのバージョンは問題ないと思います。
試してみてください。
Dim cht As ChartObject
Dim piw As Double
Dim pil As Double
Dim mxscl As Double
Dim mxpil As Double
piw = ActiveChart.PlotArea.InsideWidth
pil = ActiveChart.PlotArea.InsideLeft
For Each cht In ActiveSheet.ChartObjects
With cht.Chart
If mxscl < .Axes(xlValue).MaximumScale Then
.PlotArea.InsideLeft = 0
mxpil = .PlotArea.InsideLeft
mxscl = .Axes(xlValue).MaximumScale
End If
End With
Next
With ActiveChart.PlotArea
.InsideLeft = mxpil
.InsideWidth = piw - (mxpil - pil)
End With
For Each cht In ActiveSheet.ChartObjects
cht.Width = ActiveChart.Parent.Width
cht.Height = ActiveChart.Parent.Height
With cht.Chart.PlotArea
.InsideLeft = mxpil
.InsideTop = ActiveChart.PlotArea.InsideTop
.InsideWidth = ActiveChart.PlotArea.InsideWidth
.InsideHeight = ActiveChart.PlotArea.InsideHeight
End With
Next
Web上で拾われたコードなら、ソース元のURLを貼っていただくと良かったと思います。
あるいは、編集中のコードがあるなら、コード全体を提示し相談して頂く方が良いと思います。
この回答への補足
≫xls88さん
わざわざ記述頂きありがとうございます。
前の細くにも書かせて頂きましたが、.InsideLeftなどは、取得のみで設定ができないようなのですが
書いて頂いたものも、やはりエラーで回りません。
現状以下のように記述しています。
Sub SameSize_Set()
Dim chtH As Double '// 基準のグラフの高さ
Dim chtW As Double '// 基準のグラフの幅
Dim chtPH As Double '// 基準のプロットエリアの高さ
Dim chtPW As Double '// 基準のプロットエリアの幅
Dim cot As Integer '// グラフのカウンタ
Dim cht As Object '// 処理をする対象のグラフ
'// データを取得
With ActiveChart
chtH = .Parent.Height
chtW = .Parent.Width
chtPH = .PlotArea.Height
chtPW = .PlotArea.Width
End With
'グラフ、プロットエリアの高さ/幅を揃える
For Each cht In ActiveSheet.ChartObjects
With cht
.Height = chtH
.Width = chtW
.Chart.PlotArea.Height = chtPH
.Chart.PlotArea.Width = chtPW
End With
Next
End Sub
No.3ベストアンサー
- 回答日時:
>回答番号:No.2 この回答への補足
>.InsideLeftなどは、取得のみで設定ができないようなのですが
>書いて頂いたものも、やはりエラーで回りません。
「エラーになる」という報告だけでなく、その内容と発生行を教えて頂くと状況把握の一助になります。
しかし、残念ながらExcel2003を持っていないので確認することができません。
試しに、私が提示したコードで、Insideという文字列を全て外してみればどうなりますか。
≪例≫
piw = ActiveChart.PlotArea.InsideWidth
pil = ActiveChart.PlotArea.InsideLeft
を
piw = ActiveChart.PlotArea.Width
pil = ActiveChart.PlotArea.Left
とか
With ActiveChart.PlotArea
.InsideLeft = mxpil
.InsideWidth = piw - (mxpil - pil)
End With
を
With ActiveChart.PlotArea
.Left = mxpil
.Width = piw - (mxpil - pil)
End With
のようにして試してみてください。
あと、gen_sailさんが書かれたコードでは、PlotAreaのサイズを設定するだけになっています。
座標(PlotArea.Left、PlotArea.Top)を考慮する必要があると思います。
更に、数値軸ラベルの桁数による差を吸収する手立てを考えなければならないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excelマクロ・グラフエリア・プロットエリアのサイズを変更及び綺麗に並べる
Excel(エクセル)
-
ExcelVBA:複数の特定のグラフを選択する方法
Visual Basic(VBA)
-
【Excel】マクロでグラフ系列に不明なデータが追加されてしまう問題
Excel(エクセル)
-
-
4
EXCELのプロットエリアサイズのずれ
Excel(エクセル)
-
5
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
6
エクセルの散布図のX軸に文字を表示したいのですが、どうしたらよいのでしょうか?
Excel(エクセル)
-
7
グラフを表示するとき「’~’メソッドは失敗しました。」エラー発生
Visual Basic(VBA)
-
8
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
9
エクセルでエラーが出て困っています。
Excel(エクセル)
-
10
VBA グラフの存在の判定について
Visual Basic(VBA)
-
11
エクセル・マクロでグラフを最背面に移動させたい
Excel(エクセル)
-
12
Excelのグラフ作成 『軸ラベルのサイズが変えたい』
Excel(エクセル)
-
13
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
14
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
15
エクセルのマクロでアクティブシート内の選択した複数のグラフのみ軸の目盛を変更
その他(Microsoft Office)
-
16
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
17
エクセルVBAでグラフの線とマーカを設定したい
Excel(エクセル)
-
18
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
エクセルの縦軸(Y軸)が不均等...
-
EXCELでグラフを作るとき、縦軸...
-
エクセル グラフはあるけれど...
-
定期テストの点数をExcelで折れ...
-
エクセルで折れ線と散布図を同...
-
エラーバーの終端の線を長くする
-
エクセルで、極座表のグラフ描...
-
Excelで未知数を含む式をグラフ...
-
エクセルで方程式のグラフを書...
-
Excelでx軸とy軸を設定して図を...
-
エクセルの折れ線or散布図グ...
-
Excel2007折れ線グラフが表示さ...
-
エクセルでのシミュレーション...
-
エクセルグラフ NAデータの非...
-
エクセルでX軸の目盛値が離れ...
-
EXCELでグラフの元データ...
-
エクセルVBAでグラフの範囲を設...
-
Excelのグラフの横軸に時刻を表...
-
<EXCELグラフ>データ取得範囲...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
EXCELでグラフを作るとき、縦軸...
-
Excel:別シートにグラフを貼り...
-
エクセルの縦軸(Y軸)が不均等...
-
Excelでx軸とy軸を設定して図を...
-
エクセルで折れ線と散布図を同...
-
エクセルで折れ線グラフ(散布...
-
エクセル 0や空白のセルをグラ...
-
エクセルで、極座表のグラフ描...
-
エクセル グラフはあるけれど...
-
エクセル グラフの”データーテ...
-
エクセルの円を5等分する方法
-
散布図を縦に2個並べて出力したい
-
エクセルの対数グラフのエラー
-
<EXCELグラフ>データ取得範囲...
-
ExcelのグラフをPowerPointに貼...
-
エクセルグラフの項目名を折り...
-
EXCELのグラフ作成時に元データ...
-
ワードの差し込みにて、値をグ...
-
エクセルのグラフの1点の色を変...
おすすめ情報