如何在Excel中冻结表单

我在我的Excel工作簿中遇到问题。 我的工作簿中有25张以上的表单,我希望能够阅读sheet1。 他们的任何方式,我可以冻结我的工作簿的前两张?

目前我正在通过按ctrl +向上翻页button导航。 仅供参考使用MS-Office 2007

如果我理解的很好:你希望用户只留在Sheet1&2上:
在主要事件:

Private Sub Workbook_Open() ActiveWindow.DisplayWorkbookTabs = False 

结束小组

并在事件:

 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 

当打开禁用标签。 如果人们显示,如果您尝试更改代码返回到Sheet 1。
广告密码VBAmacros…
如果只是为了快速更改删除标签的代码…

此代码(在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移到它的左边)。

也许你可以build立一个计时器,如果你已经在一张表上几秒钟,它只能移动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 

代码实际运行时,您仍然会看到一点闪光。

在每张纸上

 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