Riek在开发用于设置用户输入屏幕的宏时遇到了问题。 A:G列始终需要保留在屏幕上,因此他的宏冻结了这些列。然后,他发出命令以移至Z列以开始输入。这会将列T:Z置于冻结列A:G的右侧。 Riek真正想要的是Z:AF列显示在A:G的右侧,但他不知道该如何完成。

有几种方法可以达到期望的结果。首先是简单地“移动”所需的目标,然后移回该目标,如以下宏所示:

Sub GotoCol1()

With Application         ActiveWindow.FreezePanes = False         Range("H1").Select         ActiveWindow.FreezePanes = True         .Goto Range("IV1")

.Goto Range("Z1")

End With End Sub

重要的代码行是那些使用Goto方法的代码行。第一次跳转到第一行的最后一个单元格,第二次跳转回到真实目标Z1。通过这种方式移动,Z列最终位于冻结范围A:G的右侧。

尽管这很好用,但是更好的解决方案是将Scroll参数与Goto方法一起使用。请考虑以下示例:

Sub GotoCol2()

With Application         ActiveWindow.FreezePanes = False         Range("H1").Select         ActiveWindow.FreezePanes = True         .Goto Reference:=Range("Z1"), Scroll:=True     End With End Sub

滚动参数对于Goto方法是可选的;它默认为False。如果将其设置为True,则Goto会在窗口中滚动,以便目标范围(Z1)的左上角出现在窗口的左上角。

注意:

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

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

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