如何在Excel工作表中限制Ctrl + End

我在行500 – 503插入了一些数据。我故意将这些数据放在这些行上,因为这些行将在macros中使用,而不是在用户视图中使用。 与用户有关的数据在行100结束。

我隐藏了行500 – 503,但按Ctrl +结束后,光标移动到行499。

我的要求是按Ctrl +结束后,光标应该在行100的最后一个单元格。

那么,我该怎么做呢?

编辑:感谢所有的答案。 许多人build议我有另一张非用户相关的数据表,但我不能拥有它。 我也不应该有vba脚本(应该给你这些条件之前…我的坏!)

这个问题将被更好的隔离删除。

也就是说,为用户devise的工作表应该被限制为仅包含用户界面所需的元素。 在这种情况下,只有用户应该看到的行。

任何需要被保存在不是直接用户使用的工作表中的数据应该放在他们自己的工作表上,甚至可以完全隐藏起来。

你的问题的具体答案当然是:捕获Ctrl-END键的使用。

您可以通过将以下事件触发器指定到工作表来轻松完成此操作:

 Private Sub Worksheet_Activate() Application.OnKey "^{END}", "SuppressMe" End Sub Private Sub Worksheet_Deactivate() Application.OnKey "^{END}", "" End Sub 

另一个模块包含

 Sub SuppressMe() ' you can be very creative here about line 100 or not 100 MsgBox "Co-Cooooo :-P" End Sub 

另一个满足你所描述的要求的可爱方式,并且不需要观看和抑制按键,将限制导航到第100行。现在,按Ctrl-END将把用户置于第100行的最右边一列,并且将会覆盖Ctrl-DOWN以及。 事实上,用户不能通过第100行

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 100 Then Me.Cells(100, Target.Column).Select End If End Sub 

可是等等 !!! 真的没有办法吗? …当然用户还可以滚动到第100行,检测你的小排-500复活节彩蛋。 所以我同意以前的build议关于不同的策略100%,因为

  • 一个用户发现正确的500 – 503行被隐藏,可能会变得非常好奇,为什么
  • Ctrl-END不是用户可以导航到第100行的唯一方式 – 您需要禁止END-DOWN(一个2键组合…您需要缓冲END并询问下一个键:您是否是DOWN。 .. 玩的开心!)
  • 而且你正在浪费磁盘空间来存储一个只有500行空白行的工作表

你可能有理由实现一个关键的压缩,但总是记住有许多不同的方式让用户绕过它,这需要非常仔细地考虑。

这是Excel的内置行为,我不认为你可以改变它。 build议:

  • 将您的隐藏数据放在同一工作簿的另一张表上。 这真的是最干净的工作方式。
  • 或者,使用Ctrl 向下箭头End Down箭头来代替Ctrl 结束

正如其他人所说,将非用户数据分散在不同的工作表上肯定会更好。

也就是说,你可以做的一件事是保护你的工作表,并禁止访问locking的单元格,只留下用户input的东西被locking的单元格。

这样做可以防止Ctrl End做任何事情:它不能跳到最后一个单元格,因为它被locking,所以它什么也不做。 (在Excel 2007上testing)

但是,再次,通过分隔不同表格中的用户和非用户数据,您可能会变得更好。