我在Excel工作簿中遇到问题。我的工作簿中有25多张 我想不时地看一下sheet1。是他们可以先冻结的任何方式 两张我的工作簿?
目前我按ctrl + page up按钮浏览工作表。 仅供参考我正在使用MS-Office 2007
答案 0 :(得分:1)
如果我理解得很好:你希望用户只留在Sheet1& 2:
在主赛事中:
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
打开时禁用Tabs。如果人们显示您是否尝试将代码更改返回到Sheet1
VBA宏的广告密码...
如果仅用于快速更改,请删除标签代码...
答案 1 :(得分:0)
此代码(在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 + PgUps来移动一张工作表 - 一个移动到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
在ThisWorkbook模块中
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
当代码实际运行时,你仍会得到一点闪光。
答案 2 :(得分:0)
在每张表中
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