如何将workbook_open应用于多个工作表

我有一个Excel工作簿,许多用户每天与不同的分辨率,屏幕缩放等多个montiors进行交互。我需要所有的工作表,以适应每个我希望用户每次看到工作表的范围。

下面的工作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 

这将只在第一次激活工作表时执行一些操作(因为AlreadyRunvariables本来是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。

为避免保存工作簿时当前工作表导致的问题,当工作簿被重新打开时,没有通过Worksheet_Activate事件,可以包含一个Workbook_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 

(在运行事件时禁用屏幕更新将避免用户看到工作表的任何“闪烁”。)