簡體   English   中英

如何將workbook_open應用於多個工作表

[英]How to apply workbook_open to multiple sheets

我有一個excel工作簿,每天有很多用戶與具有不同分辨率,屏幕縮放等的多個顯示器交互。我需要所有工作表來調整我希望用戶每次查看的每張工作表的范圍。

以下適用於1個工作表,但如何將其應用於所有工作表(Sheet1,Sheet2等)

Private Sub Workbook_Open()
With Sheets("Sheet1")
    Columns("A:P").Select
    ActiveWindow.Zoom = True
    Range("A1").Select
End With
End Sub

您可以使用Worksheet_Activate事件,並放置如下代碼

Private Sub Worksheet_Activate()
    Columns("A:P").Select
    ActiveWindow.Zoom = True
    Range("A1").Select
End Sub

在每張紙上,根據需要編輯范圍。

該代碼將在每次激活工作表時執行,這可能與您想要的不一樣,因此您可能需要使用一些更復雜的東西並使用:

Private AlreadyRun As Boolean
Private Sub Worksheet_Activate()
    If Not AlreadyRun Then
        Columns("A:P").Select
        ActiveWindow.Zoom = True
        Range("A1").Select
        AlreadyRun = True
    End If
End Sub

這只會在第一次激活工作表時執行某些操作(因為AlreadyRun變量最初將為False,但是一旦運行一次便會更改為True),或者

Private AlreadyRun As Boolean
Private Sub Worksheet_Activate()
    Dim CurRng as Range
    Set CurRng = Selection
    Columns("A:P").Select
    ActiveWindow.Zoom = True
    CurRng.Select
    If Not AlreadyRun Then
        Range("A1").Select
        AlreadyRun = True
    End If
End Sub

它將在每次激活時調整工作表的大小,但僅在第一次時將選定的單元格移動到A1。

為避免由保存工作簿時的當前工作表導致的問題,當重新打開工作簿時未通過工作表_激活事件,您可以添加一個工作簿_Open事件,該事件顯示

Private Sub Workbook_Open()
    Application.Screenupdating = False
    Dim ws As Worksheet
    Set ws = Activesheet

    'For the next two lines, just pick any two of your worksheets
    'All it is trying to do is to ensure whichever sheet was active at open
    'is deactivated before being activated again in the "ws.Activate" command
    Worksheets("Sheet1").Activate
    Worksheets("Sheet2").Activate

    ws.Activate
    Application.Screenupdating = True
End Sub

(在事件運行時禁用屏幕更新將避免用戶看到工作表的任何“閃爍”。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM