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

Sai*_*mar 0 excel excel-2007 excel-formula

我在第500行--503处插入了一些数据.我有意将数据放在这些行中,因为这些行将用于宏,而不是用户的视图.与用户有关的数据在第100行结束.

我隐藏了行500 - 503,但在按下Ctrl + End后,光标移动到行499.

我的要求是在按Ctrl + End后,Cursor应该在第100行的最后一个单元格.

那么,我该怎么做?

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

Ada*_*lph 11

这个问题将通过更好的隔离来消除.

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

任何需要持久保存在工作表中的数据都不应该在他们自己的工作表中,这些工作表甚至可以完全隐藏在用户手中.


Mik*_*keD 5

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

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

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

Private Sub Worksheet_Deactivate()
    Application.OnKey "^{END}", ""
End Sub
Run Code Online (Sandbox Code Playgroud)

和另一个包含的模块

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

另一种满足您描述的要求并且无需观察和抑制键的可爱方式是限制导航到第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
Run Code Online (Sandbox Code Playgroud)

可是等等 !!!真的没办法吗?...当然用户仍然可以滚过第100行并检测到你的小排500复活节彩蛋.所以我同意100%的早期关于不同策略的建议,因为

  • 一个用户发现确切地隐藏了500 - 503行可能会对为什么会变得非常好奇
  • Ctrl-END不是用户可以通过第100行导航的唯一方式 - 你需要压制END-DOWN(一个2键组合......你需要缓冲END并询问下一个键:你是一个DOWN. .. 玩得开心!)
  • 并且你浪费磁盘空间来存储一张只有该行500的空白行的表单

您可能有理由实施关键的抑制器,但始终记住,有许多不同的方法可以让用户绕过它,这需要非常仔细地考虑.