|    | 
     こちらの以前のトピック 
『指定位置のグラフ要素を取得する』 
を参考にさせていただいて、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 
 | 
     
    
   |