Excel实战技巧78: 创建个人宏工作簿

2020-05-25 16:33:38 浏览数 (1)

个人宏工作簿是一个文件,可以在应用程序开启时运行其中的VBA代码,就像是运行功能区选项卡中的命令一样。创建个人宏工作簿很简单,如下所示。

步骤1:打开一个Excel工作簿,单击功能区“开发工具”选项卡中的“录制宏”命令,在弹出的“录制宏”对话框中,选取“保存在”下拉列表框中的“个人宏工作簿”,如下图1所示。单击“确定”。

图1

步骤2:在工作表中随便选取一个单元格,然后单击“开发工具”选项卡中的“停止录制”。

此时,Excel将自动创建个人宏工作簿文件。按Alt F11键,打开VBE编辑器,可以到工程资源管理器窗口中有一个名为“Personal.xlsb”的VBA工程。

图2

步骤3:双击Personal.xlsb中的模块,在其中编写我们想要实现功能的VBA代码。

步骤4:保存文件。

通常,Excel会自动将个人宏工作簿文件保存在默认位置:

C:Users[insert your username]AppDataRoamingMicrosoftExcelXLSTART

如下图3所示。

图3

下面,我们将《Excel实战技巧77:实现在当前工作表和前一个使用的工作表之间自由切换》中创建的快捷键功能放到个人宏工作簿中,以便于在所有打开的工作簿中都能使用这个功能。

首先,在VBE编辑器中,在PEARSONAL.XLSB工程下插入一个类模块并命名为“TabBack_Class”,输入代码:

代码语言:javascript复制
Public WithEvents AppEvent As Application
Public SheetReference As String
Public WorkbookReference As String
 
'在离开当前工作表前保存其信息
Private Sub AppEvent_SheetDeactivate(ByVal Sh As Object)
  WorkbookReference = Sh.Parent.Name
  SheetReference = Sh.Name
End Sub
 
'在关闭工作簿前保存当前工作表信息
Private Sub AppEvent_WorkbookDeactivate(ByVal Wb As Workbook)
  WorkbookReference = Wb.Name
  SheetReference = Wb.ActiveSheet.Name
End Sub

接着,插入一个标准模块并命名为TabBack,输入代码:

代码语言:javascript复制
Dim TabTracker As New TabBack_Class
 
'初始化Tab追踪和快捷键触发
Sub TabBack_Run()
  '启动TabTracker类
  Set TabTracker.AppEvent = Application
 
  '当用户按下Alt `时调用ToggleBack过程
  Application.OnKey "%`","ToggleBack"
End Sub
 
'返回到前一个工作表
Sub ToggleBack()
  With TabTracker
    On Error Resume Next
   Workbooks(.WorkbookReference).Worksheets(.SheetReference).Activate
    On Error GoTo 0
  End With
End Sub

最后,双击打开ThisWorkbook模块,输入代码:

代码语言:javascript复制
'打开工作簿时运行
Private Sub Workbook_Open()
    Call TabBack_Run
End Sub

保存并关闭Excel文件,然后随便打开一个工作簿,发现可以使用快捷键Alt `在当前工作表和前一个工作表之间来回切换了。

注意,因为个人宏工作簿中的功能可以应用到所有工作簿中,所以在编写代码时应使用ActiveWorkbook,而不是ThisWorkbook。

vba

0 人点赞