2017-10-18 13 views
0

워크 시트를 삽입 한 다음 4 개의 차트를 해당 워크 시트에 삽입하는 매크로가 있습니다. 이러한 차트는 해당 워크 시트에서 화면의 1/4을 차지하는 방식으로 크기가 조정되고 배치됩니다.워크 시트의 차트에서 더블 클릭 이벤트

이제 차트를 워크 시트의 전체 크기로 확대 할 수 있도록이 차트 중 하나를 두 번 클릭하는 방법을 알아 냈습니다. 두 번 클릭하면 다시 1/4 크기로 복원됩니다.

가장 큰 걸림돌은 문제의 차트를 처리하는 방법과 두 번 클릭 이벤트를 처리하는 것입니다. 워크 시트를 통해 작업 할 수있게되었습니다. 그러나 차트는 처음에는 존재하지 않기 때문에 까다로울 수 있습니다. 위치 지정 및 사이징은 쉬운 비트입니다. 유사한 문제에 대한 웹 도움말이 있지만 차트는 워크 시트가 아니라 차트라고 가정합니다.

모든 의견을 보내 주시면 감사하겠습니다.

+0

당신은'X를 얻을 수는 Y'는 마우스 커서에서, 그리고 ... 이벤트를 트리거하지만이 꽤 복잡한 것 같습니다 . 아마도 각 페이지에 동일한 작업을 수행하는 버튼을 추가 할 수 있습니까? 그 매크로는 프로그램하기가 조금 쉬울 것입니다 ("Click to Enlarge/Shrink Chart"라고 말하는 단추)? 이 문제는 [XY 문제] (https://meta.stackexchange.com/questions/66377/) – BruceWayne

+0

에 국한 될 수 있습니다. 두 번 클릭하도록하려면 차트 이벤트를 사용해야합니다. [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

흥미로운 내용입니다. 나는 그것을 시도 할 것이다. –