Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12138 / 13645 ツリー ←次へ | 前へ→

【12128】グラフの選択 ぽんぽん 04/3/24(水) 16:04 質問
【12129】Re:グラフの選択 こうちゃん 04/3/24(水) 16:53 回答
【12130】Re:グラフの選択 ぽんぽん 04/3/24(水) 17:16 質問
【12150】Re:グラフの選択 こうちゃん 04/3/25(木) 9:06 回答

【12128】グラフの選択
質問  ぽんぽん  - 04/3/24(水) 16:04 -

引用なし
パスワード
   お世話になっております。
ここにおられる達人様達にとってはなんて事ないことなのでしょうが
マクロを始めたばかりの私にはちんぷんかんぷんで・・・

今、いくつかのシートがある中で、ひとつのシートのあるグラフを
G38の位置へ、大きさはG38セルの6X12倍の大きさに変形しました。
下記にコードを示しています。そのシートのそのグラフは”グラフ18”で
いいのですが(他のシートでも18番目に作ったグラフ?の場合は動きます)、
他のシートでそのマクロを実行しようとすると
グラフの番号(18ではなく21だったりする為)が違う為に動きません。
アクティブシート中でグラフをアクティブにして下記のコードを実行させる為には
グラフの名前をどうすればいいのでしょうか?
よろしくお願いいたします。

Sub グラフの移動G38_大きさ()
  ActiveSheet.Shapes("グラフ 18").Top = Range("G38").Top
  ActiveSheet.Shapes("グラフ 18").Left = Range("G38").Left
  ActiveSheet.Shapes("グラフ 18").Width = Range("G38").Width * 6
  ActiveSheet.Shapes("グラフ 18").Height = Range("G38").Height * 12
End Sub

【12129】Re:グラフの選択
回答  こうちゃん E-MAIL  - 04/3/24(水) 16:53 -

引用なし
パスワード
   ぽんぽんさん、こんにちは

>アクティブシート中でグラフをアクティブにして下記のコードを実行させる為には
>グラフの名前をどうすればいいのでしょうか?
>よろしくお願いいたします。
>
>Sub グラフの移動G38_大きさ()
>  ActiveSheet.Shapes("グラフ 18").Top = Range("G38").Top
>  ActiveSheet.Shapes("グラフ 18").Left = Range("G38").Left
>  ActiveSheet.Shapes("グラフ 18").Width = Range("G38").Width * 6
>  ActiveSheet.Shapes("グラフ 18").Height = Range("G38").Height * 12
>End Sub

次のコードは、シートのなかにChartがあったら設定の位置、大きさに変更します。
#グラフが2つ以上あってもチェックしていません。
複数シートの処理をする場合は、For Nextの外側にそれなりのループを記述してくださいね。

Sub Test()
  Dim Shp As Object
  For Each Shp In ActiveSheet.Shapes
    If Shp.Type = msoChart Then
      Shp.Top = Range("G38").Top
      Shp.Left = Range("G38").Left
      Shp.Width = Range("G38").Width * 6
      Shp.Height = Range("G38").Height * 12
    End If
  Next
End Sub

#タイミングでどうも私が答えるようになるのは縁があるのか?(?_?)

【12130】Re:グラフの選択
質問  ぽんぽん  - 04/3/24(水) 17:16 -

引用なし
パスワード
   こうちゃんさん、ホントに毎回毎回ありがとうございます。
こうちゃんさんのおかげで少しずつExcelが楽しくなってきました。
(考えてるときは辛いですが・・笑)

For Nextの構文は教えていただいたのでなんとかなりそうなのですが
ひとつのシートに全部で8個グラフがあります。
その場合は難しいですか? というかコードが全然かわってくるのでしょうか?
それぞれ移動したい場所、大きさが違うので個々にマクロを作ろうかと
思っていたのですが、VBAを勉強するものにとっては怠慢でしょうね・・・

【12150】Re:グラフの選択
回答  こうちゃん E-MAIL  - 04/3/25(木) 9:06 -

引用なし
パスワード
   ぽんぽんさん、こんにちは

>For Nextの構文は教えていただいたのでなんとかなりそうなのですが
>ひとつのシートに全部で8個グラフがあります。
>その場合は難しいですか? というかコードが全然かわってくるのでしょうか?

難しくはないと思います。これまでの応用でOKなのですが、8個グラフのどれをどの位置におくのかは、なんで判別するのでしょう?
名前(Nameプロパティ)では判別つかないんですよね?
とすれば作った順番とかで判別するのでしょうか?

>それぞれ移動したい場所、大きさが違うので個々にマクロを作ろうかと
>思っていたのですが、VBAを勉強するものにとっては怠慢でしょうね・・・

「怠慢」とは思いませんが、冗長なプログラムになりますね。
マクロやプログラムには「効率化」を目指す1手段としての側面がありますので、あまり好ましくはないかもしれません。
頑張ってくださいね。

ここに質問するなら「条件」を少し詳しく書いてくださいね。

12138 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free