2017-10-18 10 views
0

ワークシートを挿入し、そのワークシートに4つのグラフを挿入するマクロがあります。これらの図表は、そのワークシート内に4分の1の画面が表示されるような大きさで配置されています。ワークシート内のチャートのダブルクリックイベント

ここでは、ユーザーがこれらのグラフのいずれかをダブルクリックする方法を理解しようとしています。グラフをワークシートのフルサイズに拡大します。再度ダブルクリックすると、クォータサイズに戻ります。

私の最大の障害は、問題のチャートを処理する方法とダブルクリックイベントです。私はワークシート上で動作させることができました。しかし、チャートは当初はそこにいないので、やりにくいようです。ポジショニングとサイジングは簡単です。同様の問題についてウェブ上で助けがありますが、あなたのチャートはチャートでありワークシートではないと仮定しています。

ご提案は大変ありがとうございます。

+0

あなたは、マウスカーソルから 'X、Y'を取得し、それをページ上のグラフの領域内だ場合、イベントをトリガ...しかし、これはかなり複雑に思えることができ。おそらく、あなたは同じことをする各ページにボタンを追加することができますか?そのマクロはプログラムするのが少し楽になります(「Click to Enlarge/Shrink Chart」と言うボタンだけ)?これは[XY問題](https://meta.stackexchange.com/questions/66377/)に接している可能性があります。 – BruceWayne

+0

ダブルクリックを行うには何かを行うには、Chart Eventsを使用する必要があります。私のチュートリアル[Microsoft Excelのチャートイベント](https://peltiertech.com/chart-events-microsoft-excel/)を読むことができます。ダブルクリックイベントを、グラフのサイズを変更する他の回答のコードと組み合わせてください。 –

答えて

0

各グラフのコードを記述することができます。 あなたのグラフはChart1, Chart2, Chart3, Chart4としましょう。 Subを作成してグラフのサイズを変更し、BeforeDoubleClickイベントごとに呼び出すことができます。

Private Sub Chart1_BeforeDoubleClick(ByVal ElementID As Long, _ 
ByVal Arg1 As Long, ByVal Arg2 As Long, Cancel As Boolean) 
    Call ChartSize (Chart1) 
end Sub 

希望します。

+0

このコード例は、チャートがあるワークシートのコードペインに挿入されますか? –

+0

はい、このコードを各グラフに手動で追加する必要があります。 'Chart1'をあなたが作成するオブジェクトの名前に置き換えることは重要です。 –

+0

チュートリアル[Microsoft Excelのチャートイベント](https://peltiertech.com/chart-events-microsoft-excel/)で説明しているように、コードはチャートイベントを処理するクラスモジュールを設定した場合にのみ機能します。 。 –

0

チャートのサイズではなく、ワンクリックでウィンドウのズームを変更するのは簡単です。上記のようにダブルクリックすると修正できます。ズーム値を変更する必要があるかもしれません。 既にチャートを設定している場合は、測位のセル参照があります。ユーザーが次回コードをクリックしたときに再度実行されるように、グラフの選択を解除する必要があります。それ以外の場合は、再度選択する前にチャートを手動でクリックする必要があります。モジュール内

Sub Setup() 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    Selection.OnAction = "Chart1_Click" 
    ActiveSheet.ChartObjects("Chart 2").Activate 
    Selection.OnAction = "Chart2_Click" 
    ActiveSheet.ChartObjects("Chart 3").Activate 
    Selection.OnAction = "Chart3_Click" 
    ActiveSheet.ChartObjects("Chart 4").Activate 
    Selection.OnAction = "Chart4_Click" 
End Sub 

Sub Chart1_Click() 
    ChartZoom ("Chart 1") 
End Sub 

Sub Chart2_Click() 
    ChartZoom ("Chart 2") 
    ' you could select a cell under the chart here; easier than in the sub below 
End Sub 

Sub Chart3_Click() 
    ChartZoom ("Chart 3") 
End Sub 

Sub Chart4_Click() 
    ChartZoom ("Chart 4") 
End Sub 

Sub ChartZoom(chartRef As String) 
    ActiveSheet.ChartObjects(chartRef).Select 'Activate 
    If ActiveWindow.Zoom = 100 Then 
     ActiveWindow.Zoom = True 
     ' Insert code here to select a range underneath chartRef 
    Else 
     If ActiveWindow.Zoom <> 100 Then 
      ActiveWindow.Zoom = 100 
      Range("A1").Select ' <-- Brings back the scroll position to top left 
     End If 
    End If 
End Sub 
+0

それは興味深いことです。私はそれを試してみましょう。 –

関連する問題