|
こちらの以前のトピック
『指定位置のグラフ要素を取得する』
を参考にさせていただいて、2002で使っていたクラスモジュールの以下のコードが、
2007に変えたところ(OSもXPからwindows7に変えました)、動かなくなってしまいました。
アクティブシート上にある、横軸が時刻、縦軸が値のグラフ上のポイントをクリックするとそのポイントの時刻を取得してK列に記述させるというものです。
2002では動いていたのですが、2007に変えたところ、反応が無くなってしまいました。(グラフ上のポイントをクリックしても、変化がない)
もし、原因がお分かりになる方がいらっしゃいましたら、教えてください。
クラスモジュールclass1のコード
Public WithEvents cht As Chart
Private Sub cht_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
Dim Var As Variant
Dim Msg As String
cht.GetChartElement x, y, ElemID, Arg1, Arg2
' ↑このオブジェクト変数の変更
Select Case ElemID '定数値の詳細はヘルプを参照
Case xlSeries 'データ系列
Var = cht.SeriesCollection(Arg1).XValues
Msg = Var(Arg2)
Var = cht.SeriesCollection(Arg1).Values
Msg2 = CDate(Msg) & vbCrLf & "値:" & Var(Arg2)
Dim intRet As Integer
Dim strMsg1 As String
Dim strMsg2 As String
Dim strMsgX As String
strMsg1 = Msg2 & vbCrLf & "削除始まりの時刻ならyes、終わりならNoをクリック"
intRet = MsgBox(strMsg1, _
vbYesNoCancel + vbInformation + vbDefaultButton3, strMsg2)
Range("K1").Value = "追加削除"
If intRet = vbYes Then
If Range("K2").Value = "" Then
Range("K2").Value = Msg
Else
Range("K1").End(xlDown).Offset(1, 0).Value = Msg
End If
ElseIf intRet = vbNo Then
Range("K1").End(xlDown).Offset(0, 1).Value = Msg
MsgBox prompt:=Msg2 & vbCrLf & "削除始まりの時刻ならyes、終わりならNoをクリック", Buttons:=vbYesNoCancel
End If
Case Else
MsgBox "dataを指定してください"
End Select
On Error Resume Next
Range("K2").CurrentRegion.Offset(1).Resize(, 2).NumberFormat = "h:mm:ss"
End Sub
標準モジュールには、
Sub 追加削除時刻取得()
ActiveSheet.ChartObjects.Select
Set cht_class = New Class1
Set cht_class.cht = ActiveChart
End Sub
|
|