• ベストアンサー

VBAでの質問

散布図で表示した要素ChartObjects.Chart.SeriesCollection(1).Points(2)のExcel上の座標を取得するにはどうしたらいいでしょうか?

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

試してみたところ、Point.Left,Point.Topで得られる座標は、PlotAreaに対する値ではなく、ChartAreaに対する値の様です。 従ってワークシート上の座標は下記で求められると思います。 Sub test() Dim myChart As Chart Dim myPoint As Point Set myChart = Me.ChartObjects(1).Chart For Each myPoint In myChart.SeriesCollection(1).Points With myPoint Debug.Print .Left + myChart.ChartArea.Left, .Top + myChart.ChartArea.Top End With Next myPoint End Sub ただ、リンク先にある縦横5ポイントのズレの分を足してやった方が、合いが良い様に思えます。 グラフの枠線の座標の求め方は分かりません。Shapes("グラフ 1")とかやってもChartArea.Left,同Topと同じ値が取得されます。理屈は不明です。 http://d.hatena.ne.jp/yuri_donovic/20120831/1346393570

kinakosansan
質問者

お礼

大変参考になりました!! ありがとうございます.

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

関連するQ&A

  • excel VBA 散布図 Xの値を表示させる

    タイトルの通り excelの散布図においてデータラベルを表示した際にXの値も表示させたいと考えております。 .ChartObjects(1).Chart.SeriesCollection(1).HasDataLabels = True とするとデフォルトではYの値のみ表示されています。 Excel上でデータラベルの書式設定→ラベルオプション→Xの値(X)から表示させることは出来るのですが、これをVBAで指示したいと考えております。 自信が調べた限りではヒントとなるような情報が見当たらなかったため、ご存知の方がいらっしゃいましたらご回答をお願い致します。

  • VBAのグラフの設定について

    散布図の設定を線ありにし、かつ終点を矢印にしたいのですが、線はかけるものの、矢印の設定の時、 With Sheet1.ChartObjects("Chart").Chart.SeriesCollection(1) .Border.LineStyle = xlContinuous '線の種類(連続線) End With With sheet1.ChartObjects("Chart").ShapeRange .Line.EndArrowheadStyle = msoArrowheadOpen End With と設定すると、指定された値は境界を超えています。とでます。いくつかの方法でやりましたが、オブジェクトが対象ではないなど、エラーがどうしてもでてしまいます。どのように設定したら良いでしょうか?

  • C#でのExcel操作について.(Rangeオブジェクトへの複数範囲設定)

    C#でExcelのグラフを作成させるプログラムを書いるのですが,Rangeオブジェクトへの離れたセルの複数範囲を指定したいのですが,いろいろ調べてみましたがどうしても解決できません. 調べた限りではVBではできるようですが,C#ではできないのでしょうか? Excel.ChartObjects chartObjects =(Excel.ChartObjects)oSheet.ChartObjects(Type.Missing); Excel.ChartObject chartObj = chartObjects.Add(100, 100, 700, 400); Excel.Chart chart = chartObj.Chart; Excel.Range chartRange = oSheet.get_Range("B1","B3"); /*↑の部分で("B1:B3,B5:B8,C5")のようなことをしたいです.RangeにAddメソッドのようなものがあればと思っているのですが無いみたいなので‥‥*/ chart.SetSourceData(chartRange,Excel.XlRowCol.xlColumns); Excel.SeriesCollection seriesCollection=(Excel.SeriesCollection)chart.SeriesCollection(Type.Missing); よろしくお願いします.

  • エクセルグラフ2003と2007の違いについて

    エクセル2003で下記のVBAの構文を作成しました。 入力画面シートで入力し、グラフに色付けを反映させたものを 印刷画面のグラフに同じものを反映させているのですが エクセル2003ではうまくいっていたのですが エクセル2007になると構文中の 【Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor】の部分で 実行時エラー'-2147467259(80004005) ColorIndexメソッドは失敗しました;'Interior'オブジェクト とでてきて使用できなくなりました。 どなたかエクセル2007で使用できるようにする方法を教えてください。 作成した構文は以下のものです。 Sub Sam1() Dim nColor As Variant Dim i As Long i = 1 If Sheets("入力画面").Cells(i, "M") = 1 Then nColor = 5 Sheets("入力画面").ChartObjects("グラフ 8").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor Sheets("印刷画面").ChartObjects("グラフ 2").Chart.SeriesCollection(1).Points(i).Interior.ColorIndex = nColor End Sub

  • [VBA Excel] 2系列の散布図を書いてみるとおかしくなります・・・

    Excel 2007とVBAで数値解析をしています。計算結果のグラフを表示するための準備段階として、次のようなプログラムを組んで、2系列の散布図を書いて見ました。 Option Explicit Sub makechart()   Dim chart1 As ChartObject, wsh As Worksheet   Set wsh = Sheet1   Set chart1 = wsh.ChartObjects.Add( _   10, 20, 250, 200)   With chart1.Chart    .ChartType = xlLineStacked    .SeriesCollection.NewSeries    .SeriesCollection(1).XValues = _     wsh.Range("A1:A5")    .SeriesCollection(1).Values = _     wsh.Range("B1:B5")   End With   With chart1.Chart    .SeriesCollection.NewSeries    .SeriesCollection(2).XValues = _     wsh.Range("A1:A5")    .SeriesCollection(2).Values = _     wsh.Range("C1:C5")   End With End Sub --sheet1--   A B C ----------- 1| 1 2 3 2| 2 3 4 3| 3 4 5 4| 4 5 6 5| 5 6 7 系列1のグラフはB列 対 A列という意図通りのものになったのですが、系列2のグラフは、Y軸の値が、C列の値にB列の値を足したもの (1,2+3)、(2,3+4) ・・・ になってしまいました。系列2のグラフも純粋にC列 対 A列したいのですが、そのためにはどうすれば良いでしょうか。ご教授ください。

  • VBAでの質問

    VBAで散布図を作成し,そのグラフの要素をクリックすると,その要素の値が表示されるようなプログラムを作成したくて,いろいろ調べ作成しています.散布図を作成するまではできましたが,要素をクリックすると数値が表示される,部分がうまくできず,苦戦しています.何かいい方法があれば教えて頂きたいです.初心者なもので,分からないことばかりですが,お願いします.

  • エクセルVBAでグラフの線とマーカを設定したい

    エクセルVBAでグラフの線とマーカを設定したいです。 グラフの線は無しでマーカの線が有りにしたいのですが、 マクロで記録したコードを見ると グラフの線、マーカの線ともにFormat.Line.Visibleで指定しています。 実際にコードを記述しても、以下の様になり、グラフの線が表示されてしまいます。 ChartObjects("1").Chart.SeriesCollection(10).Format.Line.Visible = msoFalse With ChartObjects("1").Chart.SeriesCollection(10).Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(255, 102, 0) .Transparency = 0 End With グラフの線は無しでマーカの線が有りに設定は出来ないのでしょうか?

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

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

  • エクセルのVBAについて

    エクセル2007にて、散布図(直線とマーカー)という種類のグラフの色(9種類)を変えなくてはならないので、VBAを使おうとしました。 しかし、記録してみても下記のようにグラフを選択した後の記録が残らない状態になってしまいます。 Sub Macro1() ' ' Macro1 Macro ' ' ActiveSheet.ChartObjects("グラフ 1""").Activate ActiveChart.SeriesCollection(1).Select End Sub 流れとしては 1.折れ線グラフを右クリックで選択 2.データ系列の書式設定 3.マーカーの色、線の色、先のスタイルなどを変更 4.適用後、記録終了 という作業をしています。 ネットで検索をかけたりしても散布図に関するVBAの記事や質問はなかった(棒グラフなどはあった)ので、改めて質問をさせていただきました。 詳しい方、回答お願い致します。

  • Excel VBAの散布図について

    Excel VBAで散布図を作ろうと考えています。 元のデータは添付した画像のものです。 左端にXの値があって、それ以降7列ごとに8枚の散布図を作成しようと考えております。 そこで、kを1~8まで動かし8種類の散布図を作成しようと考えているのですが、このマクロではk=1だけプログラムを回しただけで、一枚のグラフにすべての系列が載ってしまいます。 kを動かさずに、Cellの位置を指定して回した際にはうまくいったのですが、kを動かすようにしたところうまくいきません。 散布図を作る際に系列の数(私の場合7種類)を指定するにはどうしたらよいでしょうか。 どなたかご教授ください。 For k = 1 To 8 ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatter ActiveChart.SeriesCollection(1).Name = Sheets("Voltammogram").Cells(10, -5 + 7 * k) ActiveChart.SeriesCollection(1).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(1).Values = Sheets("Voltammogram").Range(Cells(12, -5 + 7 * k), Cells(250, -5 + 7 * k)) ActiveChart.SeriesCollection(2).Name = Sheets("Voltammogram").Cells(10, -4 + 7 * k) ActiveChart.SeriesCollection(2).XValues = "=Voltammogram!$A$12:$A$250" ActiveChart.SeriesCollection(2).Values = Sheets("Voltammogram").Range(Cells(12, -4 + 7 * k), Cells(250, -4 + 7 * k)) 以降7列まで続きます。