我在我的Excel工作簿中遇到了一个问题。我有25个以上的工作表,我想时不时地查看第1个工作表。有没有办法冻结工作簿的前两个工作表呢?
目前,我通过按下Ctrl+Page Up按钮来导航工作表。FYI,我正在使用MS-Office 2007。
我在我的Excel工作簿中遇到了一个问题。我有25个以上的工作表,我想时不时地查看第1个工作表。有没有办法冻结工作簿的前两个工作表呢?
目前,我通过按下Ctrl+Page Up按钮来导航工作表。FYI,我正在使用MS-Office 2007。
Private Sub Workbook_Open()
ActiveWindow.DisplayWorkbookTabs = False
End Sub
并且在事件中:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveWindow.DisplayWorkbookTabs Then ActiveWindow.DisplayWorkbookTabs = False
If ((Sh.Name) <> "Sheet1") And ((Sh.Name) <> "Sheet2") Then Sheets("Sheet1").Select
End Sub
在每个工作表中
Private Sub Worksheet_Activate ( )
Call Funciona
End Sub
在模块中
Sub Funciona()
With ActiveSheet
If .Index > 1 Then
If .Previous.Name <> "Principal" Then
Sheets("Principal").Move Before:=ActiveSheet
End If
End If
End With
End Sub
这段代码(在ThisWorkbook模块中)将使Sheet1保持在你所在的任何工作表的左侧。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.EnableEvents = False
If Sh.Name <> Sheet1.Name Then
Sheet1.Move Sh
Sh.Activate
End If
Application.EnableEvents = True
End Sub
按下Ctrl+PgUp键浏览一堆工作表有点奇怪,因为现在需要按两次Ctrl+PgUp才能移动一个工作表——第一次将您移到Sheet1(因为它总是在左边),第二次将您移到下一个工作表(这时Sheet1就被移到了它的左边)。
也许您可以加入一个计时器,只有在停留在一个工作表上几秒钟后才移动Sheet1。
更新 使用计时器
在标准模块中:
Public gshToMove As Object
Public gdtTimeToMove As Date
Sub MoveSheet()
Application.EnableEvents = False
Sheet1.Move gshToMove
gshToMove.Activate
Set gshToMove = Nothing
gdtTimeToMove = 0
Application.EnableEvents = True
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> Sheet1.Name Then
'if something's schedule, unschedule it
If gdtTimeToMove <> 0 Then
Application.OnTime gdtTimeToMove, "MoveSheet", , False
End If
'schedule the sheet move for three seconds from now
gdtTimeToMove = Now + TimeSerial(0, 0, 3)
Set gshToMove = Sh
Application.OnTime gdtTimeToMove, "MoveSheet", , True
End If
Application.EnableEvents = True
End Sub
当代码实际运行时,您仍然会看到一些闪烁。