- ベストアンサー
Excelマクロ:全シートの埋込グラフのタイトルをシート名にする方法
- Excel2000マクロを使用して、全てのシートに対して埋込グラフのタイトルをシート名に変更する方法を教えてください。
- マクロの中のChartObjectsメソッドが失敗してエラーメッセージが表示されることがあります。エラーハンドリングが効いているので、エラーが発生した場合はErrHandlerにジャンプします。
- 1つのシートには0から3個のグラフがあります。それぞれのグラフのタイトルをシート名に設定するために、ChartObjectsを使用しています。
- みんなの回答 (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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。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
補足
Wendy02様何時も回答ありがとう御座います。 私の補足質問が間違っていました、すみません。 シート名+コメントなのですが、sh.Name & "(グラフ東京)"、sh.Name & "(グラフ大阪)" こんな感じで数字でなく文字でした。 後もう一つ別件ですが良ければ教えて下さい。 下記のマクロでグラフの名前は取れますが、ChartObjects(3)と言うような インデックス番号(間違っているかも?)この場合3を調べたのですがどの様な コードを書けば宜しいのでしょうか。? Sub グラフ名前調査() 'グラフをアクティブにしておく Dim namaaa As String namaaa = ActiveChart.Name MsgBox namaaa End Sub
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。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
補足
Wendy02様何時も回答ありがとう御座います、作動確認してバッチリでした。 もし良ければですが、補足質問をお願いします。 現在はシート名とグラフタイトルはシート内で同じですが、 シート名+コメントみたいに変更出来ませんでしょうか? (sh.Name & "(グラフ1)" sh.Name & "(グラフ2)" sh.Name & "(グラフ3)" こんな感じ)
お礼
Wendy02様回答ありがとう御座います。 名前・インデックス値等取れることを確認しました。 今回も、勉強になるコードありがとう御座いました。