アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAで、エクセル上にあるグラフの固有のナンバーみたいなのを取得したいのですが、どのようにすればよいでしょうか?

最終的には、グラフをクリックして、そのグラフを認識。そのグラフについて、処理(例えば、タイトルを変更など)したいと考えています。

言葉がわからず「固有のナンバー」として表現できませんが、恐らく分かる方にとっては、その取得関数は1行で書くことができる程度だと思います。

宜しくお願い致します。

A 回答 (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"

ということになりますね。
    • good
    • 0

エクセルの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"プロパティで大丈夫でしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!