9
9
需要Excel VBA "取消选择 "功能
我希望在我的VBA运行结束后,最后的外观是空的 – 任何表上的单元格或范围都不着色(如果它是范围选择的),或者是粗线框(任何被选择的东西)。Pupose:给客户端呈现一个整洁的最终外观。
我找过了,找不到怎么做。根据MS的说法,有一个取消选择,但似乎没有任何作用。
我希望在我的VBA运行结束后,最后的外观是空的 – 任何表上的单元格或范围都不着色(如果它是范围选择的),或者是粗线框(任何被选择的东西)。Pupose:给客户端呈现一个整洁的最终外观。
我找过了,找不到怎么做。根据MS的说法,有一个取消选择,但似乎没有任何作用。
选择任意单元格并关闭CutCopy
。
Range("A1").Select
Application.CutCopyMode = False
Excel总是有东西被选中。这就需要一个解决方法。在屏幕外选择一个单元格会将焦点设置在那里,所以这本身是行不通的。这段代码将光标置于屏幕外,然后将工作表向上滚动以查看A1
。
Sub NoSelect()
Range("BB100").Select
ActiveWindow.SmallScroll up:=100
ActiveWindow.SmallScroll ToLeft:=44
End Sub
如果你真的想要 “什么都不选",你可以在代码执行结束时使用VBA来保护工作表,这将导致什么都不选。您可以将其添加到一个宏中,或者直接将其放入您的VBA中。
Sub NoSelect()
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect
End With
End Sub
只要工作表不受保护,光标就会激活一个单元格。
有一个取巧的方法。
创建一个对象,比如一个按钮。选择这个按钮,然后隐藏它,就不会有单元格被选中。
ActiveSheet.Shapes("Button 1").Visible = True
ActiveSheet.Shapes("Button 1").Select
ActiveSheet.Shapes("Button 1").Visible = False
就这样。
根据你选择的大小,为了摆脱任何伪影(我不知道这是否也是2013年Excel中的问题,但在Mac上,这对我来说是一个持续的痛苦),你可以只通过单元格循环并选择每个单元格。
在选择单元格前关闭屏幕更新,暂时禁止滚动到所选单元格。
这段代码检查当前哪些单元格是可见的,并选择可见范围以下的第一个未被查看的单元格。例如,当我尝试的时候。可见范围是A1:BC79,所以这段代码选择了A80,然后向下和向右滚动并再次运行它,发现excel选择了第一个可见列下面不可见的第一个单元格。
Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1).Select Application.ScreenUpdating = True