Excel VBA質問箱 IV

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

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


4377 / 13644 ツリー ←次へ | 前へ→

【57014】グラフの移動 satsuki 08/7/17(木) 14:07 質問[未読]
【57017】Re:グラフの移動 Jaka 08/7/17(木) 14:54 発言[未読]
【57020】Re:グラフの移動 satsuki 08/7/17(木) 19:34 質問[未読]
【57021】Re:グラフの移動 kanabun 08/7/17(木) 19:41 発言[未読]
【57034】Re:グラフの移動 satsuki 08/7/17(木) 23:55 お礼[未読]

【57014】グラフの移動
質問  satsuki  - 08/7/17(木) 14:07 -

引用なし
パスワード
   こんにちは。Satsukiと申します。
マクロ記録を元に、あちこち調べて、下記のようなコードを記述いたしました。
自動作成したグラフを移動するところで、
「指定した名前のアイテムが見つかりませんでした。」というエラーがでます。
グラフは複数作成するので、自動で名前を取得したいのです。どのように直したらよろしいでしょうか?どなたかご教示お願いいたします。

Dim cnam As String
  cnam = ActiveChart.Name
  ActiveChart.ChartArea.Select
  ActiveSheet.Shapes(cnam).IncrementLeft 159# ←ここでエラー
  ActiveSheet.Shapes(cnam).IncrementTop -93#
  ActiveSheet.Shapes(cnam).ScaleWidth 0.87, msoFalse, soScaleFromTopLeft
  ActiveSheet.Shapes(cnam).ScaleHeight 0.67, msoFalse, oScaleFromTopLeft
   ・
   ・
   ・

【57017】Re:グラフの移動
発言  Jaka  - 08/7/17(木) 14:54 -

引用なし
パスワード
   たぶん。

▼satsuki さん:
>  cnam = ActiveChart.Name
  これだと、「Sheet1 グラフ 1」こんなになってたりしませんか?
  ほしいのは、「グラフ 1」の部分だけですよね。

>  ActiveChart.ChartArea.Select
>  ActiveSheet.Shapes(cnam).IncrementLeft 159# ←ここでエラー
>  ActiveSheet.Shapes(cnam).IncrementTop -93#
>  ActiveSheet.Shapes(cnam).ScaleWidth 0.87, msoFalse, soScaleFromTopLeft
>  ActiveSheet.Shapes(cnam).ScaleHeight 0.67, msoFalse, oScaleFromTopLeft
>   ・
>   ・

エラー内容も書いておいた方が良いかも。

【57020】Re:グラフの移動
質問  satsuki  - 08/7/17(木) 19:34 -

引用なし
パスワード
   Jaka さん、レスありがとうございます。

おっしゃるとおり、cnameには「Sheet1 グラフ 1」という形の値が入っています。

あるサイトで下記のような記述方法を見つけ、貼り付けて実行してみたら、

Dim cnam As String
  cnam = ActiveSheet.ChartObjects.Name
  ActiveSheet.DrawingObjects(cnam).Select
  ActiveSheet.ChartObjects(cnam).Activate

「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」というエラーがでました。そこで、1行目を

  cnam = ActiveChart.Name

に書き換えて実行しましたら、「指定した名前のアイテムが見つかりませんでした。」というエラーが出てしまったのです。

「グラフ 1」の部分だけを取り出さなければいけないのですね。
mid関数などで取り出すのでしょうか?あるいは、

cnam = ActiveSheet.ChartObjects.Name

の部分を応用すればできるのでしょうか?
ご指導よろしくお願いいたします。

【57021】Re:グラフの移動
発言  kanabun  - 08/7/17(木) 19:41 -

引用なし
パスワード
   ▼satsuki さん:
>「グラフ 1」の部分だけを取り出さなければいけないのですね。

>cnam = ActiveSheet.ChartObjects.Name
>
>の部分を応用すればできるのでしょうか?

何番目に作ったグラフか分かっていれば、
 ActiveSheet.ChartObjects(1).Name

グラフを選択しているなら、
 ActiveChart.Parent.Name

 Split(ActiveChart.Name)(1)
とか?

【57034】Re:グラフの移動
お礼  satsuki  - 08/7/17(木) 23:55 -

引用なし
パスワード
   kanabun さん、ありがとうございました。

ActiveChart.Parent.Name

を使ったらできました。
またわからないところがありましたら、よろしくお願いいたします。

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