[英]How to list all sheets in opened Workbook in Workbook_Open event handler Sub?
[英]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.