当使用宏访问或更改工作表中的数据时,您通常会依赖范围。这样做消除了实际选择宏中单元的需要。即使这样,您仍可能(出于某种原因)实际选择要使用的单元。如果要选择的单元格在其他工作簿中,则该任务将变得更加困难。例如,考虑以下两行代码:

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培训的来源。

本技巧(11947)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Selecting_a_Specific_Cell_in_a_Macro [在宏中选择特定的单元格]。