こんなあなたにおすすめ
・Excel VBA アクティブグラフの名前を取得したい
Excelでグラフを扱っていると、アクティブなグラフの名前を取得したいということがあります。
「name」を使うことで、グフラの名前を取得するとシート名も入ってしまうため、一工夫必要です。
今回は、アクティブなグラフの名前を取得する方法について解説します。
アクティブグラフの名前を取得する方法
Sub getGraphName1() Dim graphName As String 'グラフ名を格納する変数 Dim cht As Object 'チャートオブジェクトを格納する変数 Set cht = ActiveChart 'アクティブグラフを取得 If cht Is Nothing Then 'アクティブグラフがない場合の処理 MsgBox "グラフが選択されていません。" Else: 'それ以外の処理 graphName = cht.name 'グラフ名を取得 MsgBox graphName 'グラフ名を出力 End If End Sub
【シート構成】



グラフを選択したときに、選択したグラフ名を取得できていることがわかります。
ここで問題なのが、シート名も一緒に取得しちゃっています。
シート名を除く、グラフ名を取得する方法については、次項以降で解説します。
シート名を除くアクティブグラフの名前を取得する方法
先ほどのコードに「Replace」関数を加えるだけでOKです。
Sub getGraphName2() Dim graphName As String 'グラフ名を格納する変数 Dim sheetName As String 'アクティブシート名を格納する変数 Dim cht As Object 'チャートオブジェクトを格納する変数 Set cht = ActiveChart 'アクティブグラフを取得 sheetName = ActiveSheet.name 'アクティブシート名を取得 If cht Is Nothing Then 'アクティブグラフがない場合の処理 MsgBox "グラフが選択されていません。" Else 'それ以外の処理 graphName = Replace(cht.name, sheetName, "") 'グラフ名からシート名を取り除く MsgBox graphName End If End Sub
アクティブシート名を取得し、Replace関数で取り除くことで、グラフ名を取得しています。
Replace関数でグラフ名を取得した際、グラフ名の前に空白が残ってしまうため、trim関数を使って、取り除いてあげましょう。
例. 「 グラフ1」
グラフ名の取得 完成バージョン
後は余計な空白を取り除くだけですので、「Trim」関数でチャチャっとやって終わりです。
最終的なコードは、以下の通りです。
「——」点線でくくった部分(コード:18~24行目)は、アクティブグラフの処理を実際にする部分です。
(今回のコードでは、数値横軸の最小値、最大値、目盛間隔の値を変更する処理を記述しています。)
自分自身で使ってみるのが理解するのに一番早いので、実際に自分で変更して試してみてください。
Sub getGraphName2() Dim graphName As String 'グラフ名を格納する変数 Dim sheetName As String 'アクティブシート名を格納する変数 Dim cht As Object 'チャートオブジェクトを格納する変数 Set cht = ActiveChart 'アクティブグラフを取得 sheetName = ActiveSheet.name 'アクティブシート名を取得 If cht Is Nothing Then 'アクティブグラフがない場合の処理 MsgBox "グラフが選択されていません。" Else 'それ以外の処理 graphName = Replace(cht.name, sheetName, "") 'グラフ名からシート名を取り除く ' MsgBox graphName End If graphName = Trim(graphName) 'グラフ名から余分な空白を取り除く '--------------------------------------------------------------------------------------------- With ActiveSheet.ChartObjects(graphName).Chart .Axes(xlCategory).MinimumScale = 0 .Axes(xlCategory).MaximumScale = 5 .Axes(xlCategory).MajorUnit = 1 End With '--------------------------------------------------------------------------------------------- End Sub
まとめ
ここまで、アクティブグラフの名前を取得する方法について解説しました。
アクティブグラフを取得して処理をするという際に便利ですので、ぜひ使ってみてください。
Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし
オンラインスクール受講者数No.1!
・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!
・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!
・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!
・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!
無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら