Excel工作簿可以包含任意数量的单个工作表。在各个工作表中移动时,Excel会跟踪在哪个工作表中选择了哪个单元格。当您切换到一个新的工作表时,Excel使该工作表中最后一个活动的单元格处于活动状态。因此,如果您上次选择工作表中的单元格F9,则无论您在上一个工作表中选择了什么,都将在您再次显示工作表时选择该单元格。

但是,对于某些工作簿,您可能希望Excel使所选工作表中的活动单元格与上一个工作表中的活动单元格相同。没有设置可以在Excel中自动执行此操作,但是您可以尝试以下操作。一件事是遵循以下步骤:

。在要转到的工作表的选项卡上单击时,请按住Ctrl键。现在应该选择两个工作表选项卡;名称为粗体的是实际在屏幕上显示的名称。

。单击您要转到工作表的选项卡。两个选项卡仍应处于选中状态,但只有您单击的选项卡名称应以粗体显示。

。在刚离开的工作表的选项卡上单击时,请按住Ctrl键。

这些步骤之所以有效,是因为您正在“分组”工作表。当您这样做时,Excel使组中所有工作表的选定单元格相同。

最好记住记住使用Ctrl-click-click-Ctrl序列很麻烦。这也是一个充满危险的序列,因为如果您忘记执行步骤3,最终可能会在工作表上进行意外更改。 (当您使用分组工作表时,您对一张工作表所做的任何更改都会在组中的所有工作表上进行类似的更改。)

这三个步骤无法通过宏自动执行,但是您可以对宏采取不同的方法来完成相同的任务。您需要做的第一件事是在工作簿模块内的任何地方声明一个公共变量,如下所示:

Public sAddress As String

此变量sAddress将用于存储活动单元的当前地址。在工作簿的“ ThisWorkbook”模块中,添加以下两个宏:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

sAddress = ActiveCell.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next     If sAddress > "" Then Sh.Range(sAddress).Select End Sub

第一宏用Excel自动运行所选择的小区改变的任何时间。它所做的就是检索任何活动单元的地址,然后将该地址存储在sAddress变量中。

每当激活工作簿时,第二个宏就会自动运行。

它检查是否在sAddress中存储了任何内容。如果存在,它将选择存储在其中的任何单元地址。如果选择不使用单元格的工作表(例如图表工作表),则必须使用错误代码。

如果您只想在一两个或两个工作簿中进行此导航更改,则此宏方法非常有用。如果您希望在系统范围内进行更改(可以这么说),则对宏的处理必须稍微复杂一些。在这种情况下,您需要将代码放在Personal.xls工作簿中,以便每次启动Excel时都将其加载。具体来说,将以下代码放入Personal.xls工作簿的新类模块中。此类模块应命名为描述性名称,例如ClassXLApp:

Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String

Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook)

On Error Resume Next     If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub

Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object)

On Error Resume Next     If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub

Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

mstrAddress = Selection.Address End Sub

接下来,打开Personal.xls的“ ThisWorkbook”模块,并将以下代码复制到其中:

Private mobjXLApp As New ClassXLApp

Private Sub Workbook_Open()

Set mobjXLApp.gobjXLApp = Excel.Application End Sub

保存Personal.xls并重新启动Excel后,将在所选的下一个工作表中选择打开的第一个工作簿中的范围。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3205)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: