2016-10-08 38 views
0

私は挑戦しています。複数の線があるチャートでは、ライン上で線またはマウスをクリックしてテーブルまたはピボットテーブルの対応するデータポイントを表示することができます。基本的には、クリックする要素に基づいてテーブルをフィルタリングします私のマウスでチャートを選択してください。グラフの選択した行からテーブルまたはピボットテーブルをフィルタリングします

あなたはそれが達成可能だと思いますか?方法論は何でしょうか?このためのVBAコードはありますか?私は例を見ましたが、彼らはoppisteの方法で取り組んでいます。クリックするか、マウスの観察の上にラインがこれは本当に複雑です...事前に

おかげ

saskap

答えて

0

を強調表示され、あなたが各チャートのコードをカスタマイズする必要があり、この例のコードは、することができ出発点:

Dim p As Series 
Dim pc As Long 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim ch As ChartObject: Set ch = Me.ChartObjects("Chart 1") 
    With ch 
     Dim s As Series: Set s = Nothing 
     On Error Resume Next: Set s = .Chart.SeriesCollection(Target.Value): On Error GoTo 0 
     If Not p Is Nothing And Not p Is s Then 
      p.Format.Fill.ForeColor.RGB = pc 
     End If 
     If Not s Is Nothing Then 
      Set p = s 
      pc = s.Format.Fill.ForeColor.RGB 
      With s 
       s.Format.Fill.ForeColor.RGB = RGB(255, 0, 0) 
      End With 
     End If 
    End With 
End Sub 
  • 最初の2行は、店舗シリーズ オブジェクトは最後の時間を強調し、元の共同何だったことがグローバル変数ですlor、 これは、別のセルが が選択されているときに元の色に復元するために必要です。残念ながら、VBAのグローバル変数は、プロジェクトがリセットされたとき(たとえば、[停止]ボタンが押されたとき、またはエラーが発生したとき)にその価値が失われるため、このコードがバーに色付けして戻すことはできません。重要な場合、これらの情報は不可視のセルまたはチャートのデータに格納されますが、コードが複雑になります。
  • 次の行は、特定のイベントに応答して呼び出されるイベントハンドラであることを示しています。この場合、特定のワークシート上の選択内容が変更された場合(挿入する必要があります。これを標準コードモジュールではなくワークシートモジュールに組み込みます)。
  • 次に、ChartObjectの名前に基づいてチャートを検索し、それをChartObject型の変数に割り当てます。これにより、初期バインディングによってintellisenseのサポートに依存することができます(aを入力すると、 )。
  • 次に、新しく選択したセルの内容に含まれる名前に基づいてチャート内のSeriesを検索します。新しいセルに有効な名前が付いているかどうかわからないので、エラー処理を無効にしてこの行を保護し、後でsに何もない値があるかどうかをチェックする必要があります。 - この部分は、グラフの種類に大きく依存し、データをどのように表しているかによって、Series :: XValuesに基づいてデータを選択する必要がある可能性があります。
  • 以前に強調表示されたバーに保存された値があるかどうかを確認し、現在の選択と異なる場合は元の色に戻します。
  • 最後に、Seriesを先に検索しても成功した場合、sはnullではなく、現在のバーの色を保存し、赤い塗りつぶしで強調表示します。
+0

ありがとうございました。私はただ一つのグラフのためにそれを行う必要があります。あなたのコードが何をしているのか説明できますか?おかげさまで –

+0

私はコードを貼り付けて何も起こらなかった。私は、表示ribonの下のマクロアイコンをクリックすると、マクロが表示されない、このマクロに名前があることを意味しますか?私が行ったのは、ALT F11で、新しいモジュールを挿入し、そのモジュールにコードを貼り付けます。 –

+0

名前はWorksheet_SelectionChangeですが、ユーザーが明示的に呼び出すのではなくExcelユーザーが別のセルを選択するたびに呼び出されます。 Dim chでブレークポイントを設定し、Excelでセルをクリックしてみてください。 – z32a7ul

関連する問題