• ベストアンサー

VBA:グラフに関するある値を取得する関数教えて下さい。

VBAで、エクセル上にあるグラフの固有のナンバーみたいなのを取得したいのですが、どのようにすればよいでしょうか? 最終的には、グラフをクリックして、そのグラフを認識。そのグラフについて、処理(例えば、タイトルを変更など)したいと考えています。 言葉がわからず「固有のナンバー」として表現できませんが、恐らく分かる方にとっては、その取得関数は1行で書くことができる程度だと思います。 宜しくお願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)
回答No.1

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでグラフのindexを取得したい

    EXCEL VBA(Office2010)にて、選択中のグラフ(マウスでクリックの状態。Ctrl+クリックではない)のWidthとHeightを取得したいです。Ctrl+クリックならActivechart指定でグラフのindexが取得できるので問題ないのですが、ただの選択状態だとActivateされていないため、それができません。Selection.Application.Activechart.Nameなどでグラフの名前は取得できても、同一の名前のグラフが存在する可能性があるため一意に定められず、この方法もダメでした。要するに、Typename(Selection)が"Chartarea"の状態でそのグラフのindexを取得したい、ということになります。どうかよろしくお願いします。

  • エクセル VBA グラフの要素の値を取得

    エクセルVBAのグラフの要素の値の取得方法について教えて下さい。 グラフは散布図でX軸、Y軸の値があります。 マウスでクリックしてポイントを選択するとグラフツールの窓に表示される値はX軸の値です。 添付させて頂きました画像の「要素」の後の値です。 この値を取得して変数に格納したいため調べていたのですが、出来ませんでした。 取得する方法がありましたら教えて下さい。 宜しくお願い致します。

  • VBAで値の取得

    VBAで値の取得 osはxp エクセル2000です。 エクセルのシートに計算した値をVBAで入れたいと思います。 行数は変動します。 入れたい値は金額×数値です。なので切捨てになります。 計算式は  F3=TRUNC(1250*B3)+TRUNC(1000*C3)+TRUNC(1000*D3)+TRUNC(1250*E3) 添付のエクセル画面を参考にして下さい。 私が考えたもので、これからどのように変更すれば値の取得ができるでしょうか? Dim LastR As Long, Cnt As Long '最終行と行番号 LastR = Range("B65536").End(xlUp).Row For Cnt = 3 To LastR 'B3から最終行まで Cells(Cnt, 6).Formula = "=TRUNC(1800 * Cells(Cnt, 2)) + TRUNC(1350 * Cells(Cnt, 3))"    Next (もちろんエラーになります。)

  • 関数とマクロ(VBA)について

    関数とマクロ(VBA)について エクセルで関数を多様するのとVBAを書くのとでは、処理速度およびファイルサイズが変わりますか? ちなみに現在、関数を多様してるせいなのかファイルサイズが21Mもあり、コア2.66G、メモリ2Gでちょっと時間がかかります。データは12000行くらいです。 VBAの方がいいとしましても、全く出来ないのでこれからの勉強になると思いますが・・・。 やはり、VBAでしょうか?

  • Excel VBAでグラフをクリックした時走るイベントありますか?

    Excel VBAで既存のグラフをクリックした時、その選択されたグラフを編集するソフトを作りたいのですが、グラフをクリックした走るイベントはありませんか? イベントさえわかれば処理の書き方はわかります。

  • エクセルのグラフ切り替え

    最近、仕事でエクセルをやるようになったのですが、エクセルで取引先の年度別の売り上げ表を作成しました。行には「年度」、列には「No.」と「会社名」が入力してあります。 この表をグラフにしたいのですが、会社の数が多いため、ひとつずつ表示しようと思っています。 例えば、あるセルに「No.」を入力すると、グラフが切り替わるようなものを作成したいのですが、どのようにやればよいでしょうか。VBAを使わず、関数でできますか?ご存知の方、または、よいサイトなどありましたら、ご教授をお願いします。

  • VBAにてExcelでグラフ元データの範囲を取得する関数は?

    VBAでExcelのグラフの「元のデータ」のデータ範囲の 値を取得する関数等がありましたら教えていただけな いでしょうか。 系列の名前や値はこんな形で取れるのですが。。 Set work = Tg_Sheet.ChartObjects(i) AreaStr = work.Chart.SeriesCollection.Item(1).Formula Set work = Nothing 以上よろしくお願いいたします。

  • Excwlグラフの元データの参照関数

    VBAでExcelのグラフの「元のデータ」のデータ範囲の 値を取得する関数等がありましたら教えていただけな いでしょうか。 系列の名前や値は取れるのですが。。 以上よろしくお願いいたします。

  • VBAで連続した複数セルの値の調べかた

    エクセルVBAでA1セルからF1セルまでの6せるのそれぞれの値を1つの値として取得できる方法はありませんか? LOOP処理とかで1セルごと処理して取得するとかでなく 関数とかRANGE(”A1:F1”)のプロパティとかで何か無いでしょうか 宜しくお願いします。

  • VBAでSUMIF関数を繰り返す

    VBA初心者です。よろしくお願いします。 Book1のSheet1のA2の値を検索条件とし、Book2のsheet1のA列を検索し、条件に合った行のC列の合計値を取得するとします。出力先はBOOK1のA2と同じ行、C2です。 これだけであれば、sumif関数で処理できるのですが、 Book1のA列の最終行までこの処理を繰り返さなければなりません。 また、毎月、Book1,2ともに最終行が変化します。 上記を簡単に書くと以下になります。 ■Book1のsheet1    A   B   C 1  101  リンゴ (ここにBook2の合計値を出力したい) 2  202  レモン (ここにBook2の合計値を出力したい) 3  510   柿   (ここにBook2の合計値を出力したい) ■Book2のsheet1    A   B    C 1  202  レモン  10 2  202  レモン  30 3  101  リンゴ  200 4  707  ブドウ  50 5  101  リンゴ  70 6  510   柿   100 上記処理をsumif関数、forを使って作成してますが、どうもうまくいきません。 申し訳ございませんがよろしくお願いします。 環境は、Windows7、Office2010 です。