如何在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