|
ichinose 様、Kein 様 回答ありがとうございます。
>それから、こういう難しい内容では特にですが、
>例を最低3例ぐらい引用して説明してください。
についてですが、今回私の扱っているのが非直交5軸の線図から指定ポイントの値をデジタル表示すると言うもので、例を示すのが難しく、余り簡単な例に直すと、回答が『そんなことしなくても出来ますよ』と言うような流れになるのではと危惧して、あえて書かなかったのですが、質問の意味が回答いただける方に伝わらないのでは本末転倒ですね。今後質問には工夫していきます。
>Axesオブジェクトのスケールの最大値と最小値を調べることで
>x軸y軸のスケールを求めることはできるでしょう?
x軸、y軸のスケールは、グラフ自体をマクロで描かせていますので、既知の値です。
例)X軸0→100 Y軸0→20 のグラフ上でクリックした点のPoint(x,y)を求めたい。 まだ出来ないところがあります。宜しくお願いいたします。
(1)
Private Sub myChartClass_MouseUp(ByVal Button As Long, _
ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim Tp As Single, Lp As Single
'図面のサイズを取得
With ActiveChart.PlotArea
Lp = .InsideLeft: Tp = .InsideTop
Wp = .InsideWidth: Hp = .InsideHeight
dx = 100 / Wp
dy = 20 / Hp
End With
With UserForm1
.TextBox_X.Value = 0 +(x * 3/4 * 100/ ActiveWindow.Zoom - Lp)*dx
.TextBox_Y.Value = 0 +(Tp + Hp - y * 3 / 4 * 100 / _
ActiveWindow.Zoom) * dy
End With
End Sub
これで大体の数値は得られるのですが、PlotArea.InsideLeft等とグラフ軸の微妙な差が調整し切れていません。
(2)そこで下記のように出来ればと思いますがどのようにすればよいのでしょう?
Private Sub myChartClass_MouseUp(ByVal Button As Long, _
ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim Tp As Single, Lp As Single
'図面の表示座標を取得
'ActiveChart.PlotArea.InsideLeft等では駄目そう
『Point(0,20)』→x_min,y_min ※◆ここが分かりません。
『Point(100,0)』→x_MAX,y_MAX ※◆ここが分かりません。
dx = 100 / (x_MAX - x_min)
dy = 20 / (y_max - y_min)
With UserForm1
.TextBox_X.Value = 0 + (x - x_min) * dx
.TextBox_Y.Value = 0 + (y_max - y) * dy
'実際には、ここで得た値で他の4項目について算出します。
End With
End Sub
>グラフのSelectイベントで出来そうです。さぐってみて下さい。
これからTRYして見ます。
|
|