VBA语句Range(Selection, Selection.End(xlUp)).Select修改活动单元格问题咨询
修复方案
你可以通过提前记录原活动单元格位置,选中区域后重置活动单元格的方式解决这个问题,修复后的代码如下:
' 声明变量存储原活动单元格 Dim originalCell As Range Set originalCell = ActiveCell ' 执行向上选中到最后一个非空单元格的操作 Range(originalCell, originalCell.End(xlUp)).Select ' 重置活动单元格为初始位置 originalCell.Activate
问题原因
该现象是VBA选中区域的默认规则导致的:无论构造Range对象时传入的两个单元格顺序如何,执行Select后默认的活动单元格都是选中区域的左上角单元格。因此从下往上选择时,区域顶部的单元格会变成活动单元格;从右往左选择时,区域最左侧的单元格会变成活动单元格,和手动按Ctrl+Shift+方向键的效果不一致。
通用适配
如果需要适配其他方向的选择,仅需要将代码中的xlUp替换为对应方向常量即可:
- 向下选择到最后一个非空单元格:替换为
xlDown - 向左选择到最后一个非空单元格:替换为
xlToLeft - 向右选择到最后一个非空单元格:替换为
xlToRight
内容的提问来源于stack exchange,提问作者Stephen Williams
相关产品推荐
相关产品推荐

