dポイントプレゼントキャンペーン実施中!

vbaでマクロを組んでおります。
mouseupイベント、GetChartElementをもちいて散布図の中のグラフ要素の値を取得したいのですが、
これらのコマンドはグラフシートにしか適用できないでしょうか?グラフシートではうまくいくのですが埋め込みグラフに対して行うとうまくいきません。分かる方いらっしゃいましたら、お願いいたします。


クラスモジュールClass1にて↓
Public WithEvents myChart As Chart

Private Sub myChart_MouseUp _
(ByVal Button As Long, _
ByVal Shift As Long, _
ByVal x As Long, _
ByVal y As Long)

Dim ElemID As Long, Arg1 As Long, Arg2 As Long
myChart.GetChartElement x, y, ElemID, Arg1, Arg2

Select Case ElemID
Case xlSeries
MsgBox ("データ系列") '⇒データ系列と認識されればメッセージボックスがでるはず
Case Else
MsgBox ("その他")
End Select
End Sub

標準モジュールに入力↓
Dim myClass As New Class1

Sub InitializeChart()
Set myClass.myChart = ActiveChart
End Sub

A 回答 (2件)

Classモジュールを使って、グラフシートのMouseUpイベントを使おうとしているのですか?


どうも意図通りにイベントが発生していないようです。

シートモジュールでグラフシートのイベントを使う例があります。
下記ページで、kanabunさんが in 2010/05/30(日) 22:31:15 に投稿がされています。
そっくり、そのままで使えます。
≪参考≫
グラフ要素を取得する方法
http://park7.wakwak.com/~efc21/cgi-bin/exqaloung …

Clasモジュールでやる方法も探せば見つかると思います。

この回答への補足

解決しました。
どうやらMouseUpではそもそもうまくいかないようです。
MouseDownを用いてみたらうまくいきました。

補足日時:2011/03/24 00:15
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考のホームページも一度みたことがあります。この中では、Selectイベントを使用していますね。質問のやり方(Classモジュールと標準モジュールを用いた書き方)で、Selectイベントは埋め込みグラフでもうまくいくのですが、MouseUpでやろうとするとうまくいかないのです。
質問でかいたプログラムを起動→埋め込みグラフ上でデータ系列以外を選択した場合、「その他」と表示されているので、イベント自体は発生しているとは思うのですが、データ系列を選択しても反応してくれません。何か足りないのでしょうか?

お礼日時:2011/03/23 22:36

あくまで、推測ですが。


WithEvents は、フォーム限定のキーワードではないかと思います。
なので、シート上のオブジェクトは認識できないのではないのかと。
元々WithEvents はVBのキーワードですし。

この回答への補足

ごめんなさい。同じ書き方ではありませんでした。selectイベントを用いた場合では、witheventsは使用していますが、GetChartElementは使用していませんでした。

補足日時:2011/03/23 22:21
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
今回のようにmouseupを用いる場合は、うまくいかないのですがselectを用いると、同様の書き方でうまくいくのです。(つまり、myChart_select)この場合もWithEventsを使用しているのですが、何が違うのでしょうか?
ちなみに、質問のプログラムを起動すると、データ系列以外は、認識していて、「その他」とメッセージボックスで表示されます。ただ、データ系列だけはうまく認識できていないようです。

お礼日時:2011/03/23 21:52

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