• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2000マクロ_全てのシートに対して埋込グラフのタイトルをシート名にする)

Excelマクロ:全シートの埋込グラフのタイトルをシート名にする方法

このQ&Aのポイント
  • Excel2000マクロを使用して、全てのシートに対して埋込グラフのタイトルをシート名に変更する方法を教えてください。
  • マクロの中のChartObjectsメソッドが失敗してエラーメッセージが表示されることがあります。エラーハンドリングが効いているので、エラーが発生した場合はErrHandlerにジャンプします。
  • 1つのシートには0から3個のグラフがあります。それぞれのグラフのタイトルをシート名に設定するために、ChartObjectsを使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 ためしに、元のコードに付け足してみました。 不必要なものは、削除してしまってください。 Sub グラフ名前調査() 'グラフをアクティブにしておく Dim strName As String Dim ChartName As String Dim myChart As Object Dim i As Integer Dim t As String strName = StrConv(TypeName(Selection), vbUpperCase) If strName = "CHARTAREA" Or _   strName = "GRIDLINES" Or _   strName = "PLOTAREA" Then   ChartName = ActiveChart.Name '名前   i = ActiveChart.Parent.Index 'インデックス   t = ActiveChart.ChartTitle.Caption 'タイトル     MsgBox "名前:" & ChartName & vbCrLf & _      "インデックス: " & CStr(i) & vbCrLf & _      "タイトル:" & t End If End Sub

hibohibo
質問者

お礼

Wendy02様回答ありがとう御座います。 名前・インデックス値等取れることを確認しました。 今回も、勉強になるコードありがとう御座いました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。Wendy02です。 それは良かったです。VBAで、出来そうで出来ないのが、グラフですね。経験(=失敗の数)に勝る学習はありませんね。 >シート名+コメントみたいに変更出来ませんでしょうか? >(sh.Name & "(グラフ1)" sh.Name & "(グラフ2)" sh.Name & "(グラフ3)"  出来ると思いますが、ただ、"(グラフ1)" というのは、たぶん、作った順で、位置の順ではありませんから、もし、それでは上手くない時は、また考えます。 また、一応、シートごとで、番号を振ることにします。 Sub ChartTitleArrangeR() Dim sh As Variant Dim cht As Variant Dim i As Integer For Each sh In Worksheets  For Each chrt In sh.ChartObjects   With chrt    i = i + 1    .Chart.HasTitle = True    .Chart.ChartTitle.Characters.Text = sh.Name & "(グラフ" & CStr(i) & ")"   End With  Next chrt  i = 0 Next sh End Sub

hibohibo
質問者

補足

Wendy02様何時も回答ありがとう御座います。 私の補足質問が間違っていました、すみません。 シート名+コメントなのですが、sh.Name & "(グラフ東京)"、sh.Name & "(グラフ大阪)" こんな感じで数字でなく文字でした。 後もう一つ別件ですが良ければ教えて下さい。 下記のマクロでグラフの名前は取れますが、ChartObjects(3)と言うような インデックス番号(間違っているかも?)この場合3を調べたのですがどの様な コードを書けば宜しいのでしょうか。? Sub グラフ名前調査() 'グラフをアクティブにしておく Dim namaaa As String namaaa = ActiveChart.Name MsgBox namaaa End Sub

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。Wendy02です。 私は、今、前の発言を調べてみたけれども、以前、それについては書かなかったようですね。 今回は、前回の失敗を学んで、Excel2000で調べております。 最初は、まず、エラー・トラップは入れておりません。これで試してみていただけますか? Sub ChartTitleArrange() Dim sh As Variant Dim cht As Variant For Each sh In Worksheets  For Each chrt In sh.ChartObjects   With chrt    .Chart.HasTitle = True    .Chart.ChartTitle.Characters.Text = sh.Name   End With  Next chrt Next sh End Sub

hibohibo
質問者

補足

Wendy02様何時も回答ありがとう御座います、作動確認してバッチリでした。 もし良ければですが、補足質問をお願いします。 現在はシート名とグラフタイトルはシート内で同じですが、 シート名+コメントみたいに変更出来ませんでしょうか? (sh.Name & "(グラフ1)" sh.Name & "(グラフ2)" sh.Name & "(グラフ3)"  こんな感じ)

関連するQ&A