通常需要在宏中选择特定的单元格。但是,如果该单元格位于其他工作簿中,则很难选择该单元格。

例如,考虑以下两行代码:

Sub CellSelect1()

Workbooks("pwd.xls").Sheets("Sheet3").Select     ActiveSheet.Range("A18").Select End Sub

您可能会认为该宏将在pwd.xls工作簿中选择Sheet3!A18。确实有一些警告。如果您打开了多个工作簿,并且如果pwd.xls不是当前活动的工作簿,则此宏将导致错误。即使pwd.xls已经打开,但根本没有选中,也会发生这种情况。

即使将选择代码压缩为一行,也存在相同的行为:

Sub CellSelect2()

Workbooks("pwd.xls").Sheets("Sheet3").Range("A18").Select End Sub

除了pwd.xls是活动工作簿时,您仍然会收到错误。解决方案是完全改变执行跳转的方式。代替使用Select方法,而使用Goto方法并为该方法指定目标地址:

Sub CellSelect3()

Application.Goto _       Reference:=Workbooks("pwd.xls").Sheets("Sheet3").[A18]

End Sub

仅当pwd.xls已打开时,此代码才有效,但不必是当前活动的工作簿。如果要滚动目标工作簿,以使指定的单元格位于所查看内容的左上角,则可以将Scroll属性指定为True,如下所示:

Sub CellSelect4()

Application.Goto _       Reference:=Workbooks("pwd.xls").Sheets("Sheet3").[A18] _       Scroll:=True End Sub

注意:

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

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

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