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()

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

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

注意:

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

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

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