Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5220 / 13646 ツリー ←次へ | 前へ→

【52049】グラフをクリックして表示 ねこ 07/10/17(水) 22:06 質問[未読]
【52055】Re:グラフをクリックして表示 ichinose 07/10/18(木) 10:24 発言[未読]
【52058】Re:グラフをクリックして表示 ねこ 07/10/18(木) 12:32 お礼[未読]

【52049】グラフをクリックして表示
質問  ねこ  - 07/10/17(水) 22:06 -

引用なし
パスワード
   丸投げのようになってしまうのですが、どうしても解らず困っています。

縦「件数」横「氏名」の棒グラフがあり、そのグラフの棒の部分をクリックすると
その棒の詳細データを表示するようにしたいのですが。(説明が悪いですかね?)

例)Aさんの件数が「5件」。Aさんのところの棒をクリックすると、5件のデータの詳細が表示される。

としたいのです。
たぶん、棒をクリックするとオートフィルタで表示するようにしたら良いのだと
思うのですが、キーとなる、グラフの「氏名」の部分と「棒」の部分を
どう記述したらよいのかがどうしてもわかりません。

どなたか、アドバイスお願いします。

【52055】Re:グラフをクリックして表示
発言  ichinose  - 07/10/18(木) 10:24 -

引用なし
パスワード
   ▼ねこ さん:
おはようございます。


>
>縦「件数」横「氏名」の棒グラフがあり、そのグラフの棒の部分をクリックすると
>その棒の詳細データを表示するようにしたいのですが。(説明が悪いですかね?)
私が試した限りでは、クリックより、ダブルクリックの方が良さそうですよ!!
(後述のサンプルは、ダブルクリックによる例です)


>例)Aさんの件数が「5件」。Aさんのところの棒をクリックすると、5件のデータの詳細が表示される。
>
>としたいのです。
>たぶん、棒をクリックするとオートフィルタで表示するようにしたら良いのだと
>思うのですが、キーとなる、グラフの「氏名」の部分と「棒」の部分を
>どう記述したらよいのかがどうしてもわかりません。

質問者と回答投稿者及び、閲覧者の同期が取れるような質問投稿を心がけてください
(例えば、グラフのサンプルデータは提示する)


新規ブックの標準モジュールに
'==================================
Sub mk_sample()
  With Worksheets(1)
    .Cells.ClearContents
    .Range("a1:b7").Value = _
     [{"項目","KOUMOKU";"a", 100;"b", 200;"c",300;"d", 300;"e", 500;"f", 200}]
    End With
  Charts.Add
  ActiveChart.ChartType = xlColumnClustered
  ActiveChart.SetSourceData Source:=Worksheets(1).Range("A1:B7"), PlotBy:= _
    xlColumns
  ActiveChart.Location Where:=xlLocationAsObject, Name:=Worksheets(1).Name
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Characters.Text = "TEST GRAPH"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .Parent.Left = Range("d2").Left
    .Parent.Top = Range("d2").Top
  
  End With
  
End Sub


上記のコードで作成される表及び、グラフで考えます。


表及び、グラフが作成されたシートのモジュールに
'===================================
Private WithEvents cht As Chart
'===================================
Sub set_obj()
  Set cht = Me.ChartObjects(1).Chart
End Sub
'===================================
Sub reset_obj()
  Set cht = Nothing
End Sub
'===================================
Private Sub cht_BeforeDoubleClick(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long, Cancel As Boolean)
  Dim ans As Series
  Dim pt As Point
  If ElementID = xlSeries Then
    If Arg2 > 0 Then
     Set ans = cht.SeriesCollection(Arg1)
     MsgBox ans.XValues(Arg2) & " = " & ans.Values(Arg2)
     
     End If
    Cancel = True
  Else
    Cancel = True
    End If
End Sub
'===================================
Private Sub cht_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
  If ElementID = 3 And Arg2 < 0 Then
    cht.SeriesCollection(Arg1).Points(1).Select
    End If
End Sub


これで一度だけset_objを実行した後、
当該グラグのデータ棒をダブルクリックしてみてください。
(グラフの最初の選択時は、系列全体を選択してしまうため、
最初のポイントに強制的に選択させています)

それぞれの 項目 = KOUMOKU が表示されます。

【52058】Re:グラフをクリックして表示
お礼  ねこ  - 07/10/18(木) 12:32 -

引用なし
パスワード
   ichinose さん:
>質問者と回答投稿者及び、閲覧者の同期が取れるような質問投稿を心がけてください
>(例えば、グラフのサンプルデータは提示する)

マナー知らずで申し訳ありません。
こういうとこに、投稿したことがなかったもので。

教えていただいたコードを参考に作ってみます。
ありがとうございます。

5220 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free