Конкретный ответ на ваш вопрос, конечно, таков: перехватите использование клавиши 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% с более ранними предложениями о другой стратегии, потому что
- пользователь, узнавший, что именно строка 500 - 503 скрыта, может очень сильно удивиться, почему
- Ctrl-END - не единственный способ, которым пользователь может перемещаться после 100 строки - вам нужно подавить END-DOWN (комбинация из 2 клавиш ... вам нужно буферизовать END и спросить следующую клавишу: вы ВНИЗ ... веселиться!)
- и вы тратите место на диске, чтобы сохранить лист с таким количеством пустых строк только для этой строки 500
У вас могут быть причины для внедрения ключевого супрессора, но всегда помните, что у пользователя есть много разных способов его обойти, и это нужно учитывать очень осторожно.