【发布时间】:2019-08-04 20:12:02
【问题描述】:
我想为 Excel 2013 创建一个 VBA 宏来移动光标。我只是重新映射键盘快捷键,例如我想使用 CTRL+J 而不是向下箭头来向下移动光标。所以我不需要任何花哨的东西,只需一个简单的光标移动。我也想在 VBA 中执行此操作,因此我不需要寻找 Excel 插件或加载项或类似的东西。
如果在“开发人员”选项卡下,我选择“使用相对引用”,然后简单地录制一个向下移动光标的宏,我会得到以下内容,确实移动光标:
ActiveCell.Offset(1, 0).Range("A1").Select
但是,这不是向下箭头的完全模仿。这个子程序/宏将移动到隐藏的行中,这是我不想要的。
以下每个都给我一个“对象不支持此属性或方法”错误:
Selection.MoveDown Unit:=xlCell, Count:=1, Extend:=xlMove
...
Selection.MoveDown Unit:=xlWorksheetCell, Count:=1, Extend:=xlMove
...
Selection.MoveDown xlCell, 1, xlMove
...
Selection.MoveDown xlWorksheetCell, 1, xlMove
以下给我一个语法错误:
Selection.MoveDown(xlWorksheetCell, 1, xlMove)
我可以想象一个适度的宏移动光标,检查新单元格是否被隐藏,如果是,重复直到它不是。但是,我很难相信没有一个命令/方法/等不能像箭头键那样简单轻松地模拟移动光标,忽略隐藏的行/列。例如,我可以在按住控制键的同时使用箭头键进行模仿,例如 Selection.End(xlDown).Select。所以我想尽可能简单地模拟用箭头键移动光标。
(这似乎是一个如此简单的问题,我猜有人曾经问过/回答过这个问题。但是,如果是这样,并且如果您将我的问题标记为重复,请指出原始答案在哪里,因为我已经看过但找不到它。)
【问题讨论】:
-
记住触摸 DOWNARROW 只会将
ActiveCell向下移动,而不是全部Selection -
谢谢。我不需要从复杂的选择(例如几个选定的单元格)开始移动活动单元格。我假设我从一个选定的单元格开始,然后只是想模仿移动活动单元格,就好像我使用了箭头键一样。
-
让我们看看 SendKeys
-
在下面查看我的答案
-
使用
SendKeys通常会受到警告,但肯定有它的应用程序。但是,更广泛地说,为什么您希望在快捷方式上更改单元格选择?更改选择后是否运行宏?这可能是XY Problem
标签: excel vba cursor selection