我在第500行--503处插入了一些数据。我有意将数据放在这些行中,因为这些行将用于宏,而不是用户的视图。与用户有关的数据在第100行结束。
我隐藏了行500 - 503,但在按下Ctrl + End后,光标移动到第499行。
我的要求是在按Ctrl + End后,Cursor应该在第100行的最后一个单元格。
那么,我该怎么做?
编辑:感谢所有答案。许多人建议我为非用户相关数据提供另一张表,但我不能拥有它。另外我不应该有vba脚本。(应该在给你这些条件之前......我的坏!)
答案 0 :(得分:11)
此问题将通过更好的隔离来消除。
也就是说,设计用于用户使用的工作表应限制为仅包含用户界面所需的元素。在这种情况下,只有用户应该看到的行。
任何需要持久保存在工作表中的数据都不应该在他们自己的工作表中,这些工作表甚至可以完全隐藏在用户工作表中。
答案 1 :(得分:5)
您的问题的具体答案当然是:捕获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复活节彩蛋。所以我同意100%的早期关于不同策略的建议,因为
您可能有理由实施关键的抑制器,但始终记住,有许多不同的方法可以让用户绕过它,这需要非常仔细地考虑。
答案 2 :(得分:3)
这是Excel的内置行为,我认为你不能改变它。建议:
答案 3 :(得分:3)
正如其他人所说,将非用户数据分开到另一张表格当然更好。
尽管如此,你可以做的一件事就是保护你的工作表并禁止访问锁定的单元格,只留下用户必须输入未锁定单元格的单元格。
这样做可以防止 Ctrl 结束做任何事情:它无法跳转到锁定的最后一个单元格,因此它不会执行任何操作。 (在Excel 2007上测试)
但是,再次,通过在不同的工作表中分离用户和非用户数据,你可能会更好。