- ベストアンサー
グラフをセル範囲内に表示したい
- シート内に複数のグラフを表示させていますが、セル範囲から微妙にズレてしまい、セルに記載した説明文との間隔がバラバラになってしまい、体裁が悪くなって困っています。
- エクセル2010を使用している際に、セル範囲(行6,列4)に合わせてグラフを作成する方法を教えてください。
- 以下のVBAコードを使用して、セル範囲内にグラフを作成することができます。Forループを使用し、セル範囲内の各セルごとにグラフを生成させることで、セルに記載した説明文との間隔のズレを解消できます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 前提。 行高、列幅が統一されているとして、 ' ' まず、6行4列のセル範囲の ' ' 幅 xSize ' ' 高さ ySize ' ' を採っておく。 With Range("A2:D7") xSize = .Width ySize = .Height End With ' ' 次に、 ' ' チャートオブジェクトを配置する位置を ' ' チャートオブジェクトの.Left、.Top、を ' ' セルの.Left、.Top、に合わせるようにする。 For i = 1 To 4 For j = 1 To 4 LA = LA + 1 With ActiveSheet.ChartObjects.Add( _ Left:=Cells((j - 1) * 4 + 1).Left, _ Top:=Cells((i - 1) * 12 + 2, 1).Top, _ Width:=xSize, _ Height:=ySize) .Name = "GF" & LA With .Chart .ChartType = xlLine .SetSourceData Source:=GFDT(LA), PlotBy:=xlColumns End With End With Next j Next i 以上のようなやり方が現状に対する直接的な対策になります。 チャートオブジェクトを配置する法則性の説明が詳しくないので、 こちらで推理した仮の想定として、 水平位置は、 A列、E列、I列、M列、 のように、4列ステップ、 垂直位置は、、 行2、行14、行26、行39、 のように、2行目を先頭に、12行ステップ という設定で組んでいます。 いずれにしても、セル範囲に合わせてチャートオブジェクトを配置する ことは簡単に動作確認できるので、 後は、列、行、のステップ数と先頭位置を、狙いに合わせて修正してください。 * 4 + 1 の意味は、4列ステップ、先頭は1列め、 * 12 + 2 の意味は、12行ステップ、先頭は2行め、 という要領です。 配列変数 GFDT については、こちらでは中身が解りませんが、 正しく、セル範囲への参照がなされているものとします。 尚、こちらで追加した変数xSize, ySize について、 変数宣言をする場合にはSingle型を指定してください。 "行高、列幅が統一されている" という前提も、こちらの推測でしかありませんが、もし違っている場合でも ニーズさえ詳らかならば対策は難しくはないので、 包括的に補足して貰えれば、再度レスします。 以上です。 追伸。 たぶん、結果を確認しながら作業をやり直したりすることになるでしょうから、 簡単に 今回のマクロで作成したチャートオブジェクトを 削除するマクロを添えておきますね。 Sub DeleteCharts() Dim o As ChartObject For Each o In ActiveSheet.ChartObjects If o.Name Like "GF*" Then o.Delete Next End Sub
お礼
cj_moverさん こんにちは。 早速ご回答を頂き、本当にありがとうございました。 おかげさまで、みごとに問題が解決しました。 本当にありがとうございました。