[[20061108125704]] 『マクロでグラフを移動&サイズ変更したい』(ちろりん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでグラフを移動&サイズ変更したい』(ちろりん)

 教えて下さい。
下記の表をマクロの記録を使い3つのグラフにします。
@A1:F2 AA1:F1,A3:F3 BA1:F1,A4:F4

       [A]     [B]     [C]     [D]     [E]     [F]
[1]            No1     No2     No3     No4     No5       
[2]   あああ    5       10      15     20      25
[3]   いいい    3        6       9     10      12
[4]   ううう    2        4       6      8      10

 マクロの記録をしていらないコードを削除していくと下記の様になりました。(3つのグラフのうちの1つです)
Sub Macro1()
    Range("A1:F1,A3:F3").Select
    Range("A3").Activate
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:F1,A3:F3"), _
        PlotBy:=xlRows
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
    With ActiveChart
        .ChartTitle.Characters.Text = "あああ"
    End With
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        .MaximumScale = 100
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With
End Sub

 マクロを起動した時に、この3つのグラフの基点を好きな場所(sheet1のA100とsheet1のA130とsheet1のA160)に
貼り付けたい場合はどうすればいいのですか?
ヨロシクお願いします。


 こんな感じで。
    With ActiveChart
        .ChartTitle.Characters.Text = "あああ"
        .Parent.Top = Sheets("Sheet1").Range("A100").Top
        .Parent.Left = Sheets("Sheet1").Range("A100").Left
    End With
 BJ

 BJさん
ありがとうございます。
指定した位置に貼る事は出来ました。
ただ、質問し忘れてた事がひとつ。。。
サイズも指定したかったのです。
っで、BJさんのコードにこんな感じかなぁ?なんて追記してみましたが・・・
        With ActiveChart
        .ChartTitle.Characters.Text = "あああ"
        .Parent.Top = Sheets("Sheet1").Range("A100").Top
        .Parent.Left = Sheets("Sheet1").Range("A100").Left
        .Parent.Bottom = Sheets("Sheet1").Range("A130").Bottom
        .Parent.Right = Sheets("Sheet1").Range("J130").Right
    End With
やっぱりエラーが・・・(T_T)
.Parent.Bottom = Sheets("Sheet1").Range("A130").Bottom
ここでエラーがでてしまいます。
したい事は、高さと幅を好きなサイズに指定したいのですが、
どうすればいいのでしょうか?
ヨロシクお願いします。
(ちろりん)


    With ActiveChart
        .HasTitle = True   '← 前回の設定を引き継ぐの解らないけど、これも必要?
        .ChartTitle.Characters.Text = "あああ"
        .Parent.Top = Sheets("Sheet1").Range("A15").Top
        .Parent.Left = Sheets("Sheet1").Range("A15").Left
        '.Parent.Height = Sheets("Sheet1").Range("A15").Height
        '.Parent.Width = Sheets("Sheet1").Range("A15").Width
        .Parent.Height = Sheets("Sheet1").Range("A15").MergeArea.Height
        .Parent.Width = Sheets("Sheet1").Range("A15").MergeArea.Width
    End With
 BJ

 BJさん
ありがとうございます。
早速実行してみましたが、思う様に出来ませんでした。
@上のコードをそのまま貼り付けてみると、『A15』1マスのちっこ〜ぃグラフが出来ました(笑)
A高さと幅を変更したい為、下記の様にRangeの部分を
        .Parent.Height = Sheets("Sheet1").Range("A25").MergeArea.Height
        .Parent.Width = Sheets("Sheet1").Range("K25").MergeArea.Width
とかにしてみましたが、上記と同じ様に、『A15』1マスのちっこ〜ぃグラフが出来ました(T_T)
どこを変更すればいいんでしょうか?

 ちなみに、コメント扱いしている
        '.Parent.Height = Sheets("Sheet1").Range("A15").Height
        '.Parent.Width = Sheets("Sheet1").Range("A15").Width
は、何か意味がありましたでしょうか?
(ちろりん)


 え〜と、気づいて直して使ってくれると思ったんですけど。
 A15は、こちらで一応テストした時のセルアドレスです。

 .Parent.Top = Sheets("Sheet1").Range("A15").Top
 これだと、A15に張り付いているから、
 前回、 A100に張り付いている
 .Parent.Top = Sheets("Sheet1").Range("A100").Top

 との違いも解ってくれると思ったので、
 ここに掲載後にきづいた間違いを修正しませんでした。
 貼り付けたいセルアドレスに変えてくれれば良いです。

 >ちなみに、コメント扱いしている
  これは、もしかしたらセルを結合しているかもしれないと思って、
  単一セル結合セルのどちらにも対応できるようにMergeAreaにしました。
  でも、単一セルの場合は、コメントしてある方のがいいかな?
  と、思って残しただけです。好きな方を使ってください。

 因みにこの部分は無くても動きますよ。
    Range("A1:F1,A3:F3").Select
    Range("A3").Activate
 BJ

 BJさん
いつもありがとうございます。
説明の仕方が悪く、こちらの意図が伝わりきってなかった様です。m(_ _)m
セルアドレスが『A100』から『A15』に変わってるのは気づいてましたが、
グラフの貼り付け位置を指定したかったのです。
今は、セルA15の1マスに貼りついてますが、これをA15:K20の様に横長のグラフに
したかったのです。
       [A]   [B]   [C]   [D]   [E]   [F]   [G]   [H]   [I]   [J]   [K]
[14] ______
[15]|______|←今はこの1マスに貼りついてます。  
[16] 

 それを・・・
       [A]   [B]   [C]   [D]   [E]   [F]   [G]   [H]   [I]   [J]   [K]
[14] ________________________________________________________________
[15]|                                                                |
[16]|     こういう感じの大きさのグラフにしたいのです。           |
[17]|                                                   |
[18]|                                                                |
[19]|                                                                |
[20]|________________________________________________________________|

 説明ベタで申し訳ありませんでした。
ヨロシクお願いします。
(ちろりん)

 BJさん
お疲れ様です。
上記のスレをたててから色々考えてみました。
何回も読み返しながら・・・そしたら解決しました。
貼り付けたいサイズに結合しておけば上手くできました。
ありがとうございました。
(ちろりん)


    With ActiveChart
        .HasTitle = True   '← 前回の設定を引き継ぐの解らないけど、これも必要?
        .ChartTitle.Characters.Text = "あああ"
        .Parent.Top = Sheets("Sheet1").Range("A15").Top
        .Parent.Left = Sheets("Sheet1").Range("A15").Left
                           ↓ここを修正 A15:K20の範囲なら
        .Parent.Height = Sheets("Sheet1").Range("A15:K20").Height
        .Parent.Width = Sheets("Sheet1").Range("A15:K20").Width

        '.Parent.Height = Sheets("Sheet1").Range("A15").MergeArea.Height
        '.Parent.Width = Sheets("Sheet1").Range("A15").MergeArea.Width
    End With
 BJ

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.