- ベストアンサー
VBA:グラフに関するある値を取得する関数教えて下さい。
VBAで、エクセル上にあるグラフの固有のナンバーみたいなのを取得したいのですが、どのようにすればよいでしょうか? 最終的には、グラフをクリックして、そのグラフを認識。そのグラフについて、処理(例えば、タイトルを変更など)したいと考えています。 言葉がわからず「固有のナンバー」として表現できませんが、恐らく分かる方にとっては、その取得関数は1行で書くことができる程度だと思います。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>最終的には、グラフをクリックして、そのグラフを認識。そのグラフについて、処理(例えば、タイトルを変更など)したいと考えています。 話が見えてきませんが、グラフをクリックするなら、固有のナンバーは必要ないのではありませんか?単に、ActiveChart だけでよいはずです。グラフは、埋め込み型とグラフ・シートがありますから、多少、メソッド等が変わってきます。 埋め込み型で、複数あるのでしたら、指定するのは名前かIndex になりますが、Index か、For Each ~ In ○○ で、グラフオブジェクトを求めます。 実例: 例えば、タイトルの変更でしたら、このようにすればよいと思います。 ActiveChart.ChartTitle.Caption = "My Graph" または、 ActiveChart.ChartTitle.Text = "My Graph" 後は、埋め込み型だったら、ChartObjectsですが、複数のグラフを探すなのでしたら、 ActiveSheet.ChartObjects(i).TopLeftCell で探します。 1つしかないのでしたら、 ActiveSheet.ChartObjects(1)でよいわけです。 ですから、タイトルを換えるのでしたら、 ActiveSheet.ChartObjects(1).Chart.ChartTitle.Caption = "My Graph" ということになりますね。
その他の回答 (1)
- AlexSuns
- ベストアンサー率67% (78/115)
エクセルのVBAは普段さわらないのですが、興味ついでに調べたところ 「Worksheet」オブジェクトの「ChartObjects」コレクションにて取得できるようです '''アクティブなシート上のチャート一覧を列挙する Private Sub CommandButton1_Click() Dim xlSheet As Excel.Worksheet Dim chartObj As ChartObject Dim strMsg As String Set xlSheet = ActiveSheet strMsg = "" For Each chartObj In xlSheet.ChartObjects strMsg = strMsg & chartObj.Name & vbCrLf Next MsgBox strMsg End Sub >言葉がわからず「固有のナンバー」として表現できませんが これは「ChartObject」の"Name"プロパティで大丈夫でしょう