|
▼イチロー さん:
こんばんは。
>これは、グラフシートのモジュールに貼り付けてください!と書いてあります
>が、自分は標準モジュールに貼り付けたいのです。
ご提示された Chart_MouseUpは、イベントプロシジャーですから、標準モジュールには
記述する事が出ません。
これは、クラスモジュールに記述する事で可能となります。
クラスモジュール(クラス名は、既定名の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
Msg = Msg & vbCrLf & "値:" & Var(Arg2)
MsgBox Msg
Case Else
'その他の処理
End Select
End Sub
次に標準モジュールに、
'======================================================
Public cht_class As Class1
'=====================================================
Sub main()
Call サンプル作成(Sheets("Sheet1"))
Charts.Add
With ActiveChart
.ChartType = xlColumnClustered
.SetSourceData Source:=Sheets("Sheet1").Range("A1:B7"), PlotBy:= _
xlColumns
.Location Where:=xlLocationAsNewSheet
.HasTitle = True
.ChartTitle.Characters.Text = "身長(cm)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "氏名"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Set cht_class = New Class1
Set cht_class.cht = ActiveChart
End Sub
'================================================================
Sub サンプル作成(sht As Worksheet)
With sht
.Range("a1:a7") = WorksheetFunction.Transpose(Array("氏名", "A", "B", "C", "D", "E", "F"))
.Range("b1:b7") = WorksheetFunction.Transpose(Array("身長(cm)", 150, 160, 170, 180, 145, 155))
End With
End Sub
としてみて下さい。
標準モジュールのMainを実行してみて下さい(Sheet1という名前のシートは作っておいて下さいね)。
チャートシートが作成されるはずですから、そこでイベントが実行されるかどうか
試してみて下さい。
>実際、グラフシートは始めは存在しないため、グラフシートのモジュールにプ
>ログラムを張ることが出来ません。VBAを実行する事でグラフシートを新規に
>作成し、そのグラフシートにおいてクリックして要素を読み込みたいのですが
>、標準モジュールに貼り付けても動作してくれません。
>何か良い方法は無いでしょうか?
>
>ごちゃごちゃしましたけどよろしくお願いします。
|
|