|
▼わいわい さん:
おはようございます。
>Kein 様 いつも回答して頂きありがとうございます。
>
>>グラフ上でクリックするなら、そのグラフをアクティブにしないと何もできません。
>やはりそうですか、お教え頂いたリストにて動作確認いたしました。座標の取得はできたのですが、私の意図したものと違っていました。説明が悪かったのですが、私が考えていたのは、グラフの軸を反映した(x,y)座標を取得できないかと言うものです。当初の質問に書いた ActiveChart.PlotArea.InsideLeft等で取得した座標と換算式で、グラフ内座標を導くと言う方法が出来るかと色々やってみたのですが、表示倍率の変更、スクロールなどにより同じポイントでも座標が変化することから難しいのかなと思いました。グラフの軸を反映した(x,y)座標は取得可能なのでしょうか?
例えば、あるセル範囲に以下のような表があり、
x y
52 46
52 72
71 68
94 98
79 16
43 82
58 37
これを基に散布図を作成した場合、
上記の表だと、散布図として、7個のプロットが表示されますよね?
それぞれのプロットをクリックしたとき、上記の表のX,Yの値が取得したい
ということですか?
また、直接プロットをクリックするのではなく、その近隣をクリックしたときは、
X,Y軸のスケールに基づいたX,Yを取得したいということですか?
例えば、
上記の(52,46)に相当するプロットのちょっと上(Y軸に対して)を
クリックしたら、52,48なんて取得できるような仕様ですか
(48は単に例としてあげている数字です)?
簡単なグラフなら、Keinさんが提示されたグラフのMouseUpイベントで
出来るかもしれません。
Axesオブジェクトのスケールの最大値と最小値を調べることで
x軸y軸のスケールを求めることはできるでしょう?
自分で確認していませんが、スケールがわかれば、比例計算で
出来そうですが、試してみてください。
(でも、結構計算が面倒かもね!!)
>上記方法が出来ないときの次策としてグラフ上のSeriesCollection(***)をクリックしてそのx,y値を取得できないかと言うことです。
>myChartClass_SeriesChangeかな?と思いいじっていたのですが上手くいきません。ご回答宜しくお願いいたします。
これで、プロットされた要素を選択してX,Yを取得したいなら、
グラフのSelectイベントで出来そうです。さぐってみて下さい。
但し、この場合も初回のSeriesの選択では、プロットが特定できないので
工夫が必要ですが、処理自体はこっちのほうが簡単そうです。
私が考えているのは、
選択したSeriesオブジェクトのFormulaプロパティを
解析する方法です。
「=SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$21,Sheet1!$B$2:$B$21,1)」
こんなデータから、X,Y値を取得するということです。
それから、こういう難しい内容では特にですが、
例を最低3例ぐらい引用して説明してください。
x 1 y 2
x 2 y 4
x 3 y 6
こんな高校生の算数の等差数列レベルだって、3つは例がないと
規則性が決まらないですよね?
(x 3 y 9だったら、違う数列だもんね)
ましてやここでの質問される内容はどれも上記の数列よりは難しいし、複雑です。
具体的な例を提示しないと中々真意はつたわりませんよ!!
|
|