我有一個插入工作表的宏,然後在該工作表上插入4個圖表。這些圖表的大小和位置使其具有該工作表中屏幕的四分之一。雙擊工作表中圖表上的事件
現在我想弄清楚如何讓用戶雙擊這些圖表中的一個,它會將圖表放大到工作表的完整大小。當他們再次雙擊時,它會恢復到四分之一大小。
我最大的絆腳石是如何處理和在有問題的圖表上雙擊事件。我已經能夠使它在工作表上工作。但圖表似乎很棘手,因爲它們最初並不在那裏。定位和尺寸是容易的。網上有類似問題的幫助,但他們假設你的圖表是一個圖表而不是工作表。
任何建議將不勝感激。
我有一個插入工作表的宏,然後在該工作表上插入4個圖表。這些圖表的大小和位置使其具有該工作表中屏幕的四分之一。雙擊工作表中圖表上的事件
現在我想弄清楚如何讓用戶雙擊這些圖表中的一個,它會將圖表放大到工作表的完整大小。當他們再次雙擊時,它會恢復到四分之一大小。
我最大的絆腳石是如何處理和在有問題的圖表上雙擊事件。我已經能夠使它在工作表上工作。但圖表似乎很棘手,因爲它們最初並不在那裏。定位和尺寸是容易的。網上有類似問題的幫助,但他們假設你的圖表是一個圖表而不是工作表。
任何建議將不勝感激。
您可以爲每個圖表編寫代碼。 假設你的圖表是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
希望它有幫助。
將此代碼示例插入圖表所在工作表的代碼窗格上嗎? –
是的,您應該爲每個圖表手動添加此代碼。用您創建的對象的名稱替換「Chart1」非常重要。 – 2017-10-20 15:14:18
只有您設置了一個類模塊來處理圖表事件時,代碼纔會起作用,正如我在本教程[Microsoft Excel中的圖表事件]中所述(https://peltiertech.com/chart-events-microsoft-excel/) 。 –
易於單擊並更改窗口縮放而不是圖表大小。你可以修改如上雙擊。您可能需要更改縮放值。 如果你已經設置好你的圖表,你可以使用單元格來定位;您需要使用這些取消選擇圖表,以便下次用戶單擊代碼時再次運行。否則,他們必須在再次選擇之前手動點擊圖表。
裏面一個模塊:
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
這是一個有趣的approuch。我會試一試。 –
你能拿'X,Y'從鼠標光標,如果它是圖表的區域在網頁中,觸發事件......但這似乎相當複雜。也許你可以在每個頁面上添加一個按鈕來執行相同的操作?這個宏可以更容易編程(只是一個按鈕,說「點擊放大/縮小圖表」)?這可能與[XY問題]有關(https://meta.stackexchange.com/questions/66377/) – BruceWayne
要使雙擊執行任何操作,您需要使用圖表事件。你可以閱讀我的教程[Microsoft Excel中的圖表事件](https://peltiertech.com/chart-events-microsoft-excel/)。將雙擊事件與調整圖表大小的其他答案中的代碼組合在一起。 –