2015-08-14 21 views
1

當前宏觀簡單的Excel VBA - 有變焦恢復到頁面默認

Private Sub Worksheet_SelectionChange 
    If Target.Address = "$C$11" Then 
    ActiveWindow.Zoom = 120 
    Else 
    ActiveWindow.Zoom = 55 
    End If 
End Sub 

所需的宏

單擊單元格C11,放大到120,否則,變焦應該是不管卡的設置來。我使用55,但其他人可能使用75,我不希望我的宏停止。想法?

+0

會使用另一個單元格的縮放值爲55或75嗎? –

+0

不幸的是沒有,因爲有不同的人使用這一個工作簿。這幾乎就像我想要它成爲一個循環 工作在我想要的任何縮放,單擊單元格C11,更改爲120縮放,然後單擊其他任何地方,並使其恢復到我原來設置的縮放級別。這可能是不可能的。 – goatamous

+0

我沒有完全掌握宏的速度,但是您應該能夠全局存儲之前的縮放值並在之後進行檢索。看到這個問題的全局變量(http://stackoverflow.com/questions/2722146/how-do-i-declare-a-global-variable-in-vba)。您只需要一些邏輯,以便何時使用存儲的值,何時更新它等。 –

回答

0

你可以試試這個代碼:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
     Static zoomLevel As Integer 

     'Ensure zoomLevel is set 
     If zoomLevel = 0 Then 
       zoomLevel = ActiveWindow.Zoom 
     End If 

     'If cell C11 is selected, zoom on 
     If Target.Address = "$C$11" Then 
       zoomLevel = ActiveWindow.Zoom 
       ActiveWindow.Zoom = 120 
     Else 'If any other cell is selected zoom to the user's zoomLevel 
       ActiveWindow.Zoom = zoomLevel 
     End If 
End Sub 

使用Static允許該變量的子程序執行結束後保持其價值。

+0

感謝您 - 我認爲這將是最好的解決方案。它不會是完美的,因爲你必須點擊C11來設置新的zoomLevel,但它絕對比我能想到的任何東西都好。非常感激! – goatamous

+0

如果你不介意點擊綠色複選標記接受這個答案,我將不勝感激! – Soulfire