У Роба есть несколько рабочих листов, которые используются для выставления оценок. Первый рабочий лист содержит ячейки для имени, даты и т. Д., Затем несколько столбцов для ввода ответов с множественным выбором. Лист защищен, поэтому изменять можно только ячейки ввода. Когда пользователь заканчивает последнюю ячейку в столбце, фокус переместится на следующую незащищенную ячейку, которая может быть первой ячейкой в ​​следующем столбце или ячейкой «даты». Роб задается вопросом, как он может управлять фокусом, чтобы при вводе значения в последнюю (нижнюю) ячейку столбца оно переместилось в указанную им ячейку.

В Excel нет встроенного способа сделать это, поскольку программа сама определяет порядок выбора следующей ячейки. Вы можете изменить, какая ячейка будет выбрана следующей, когда вы нажмете Enter на листе, но вы не можете изменить то, что произойдет, когда вы нажмете Tab на защищенном листе.

По умолчанию ячейки выбираются слева направо, а затем сверху вниз на листе.

Если вы хотите изменить то, что происходит при нажатии клавиши Tab, вам нужно прибегнуть к использованию макроса для управления порядком выбора.

Следующий макрос является примером; он перемещается в ячейку D5 при выходе из ячейки C10 и в E5 при выходе из ячейки D10:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False     If Target.Address = "$C$10" Then Range("D5").Select     If Target.Address = "$D$10" Then Range("E5").Select     Application.EnableEvents = True End Sub

Проблема с использованием такого решения VBA заключается в том, что оно может сделать вашу электронную таблицу — особенно если она большая — немного более медленной. По своей природе макросы также означают, что функция отмены отключена.

Если ваши требования к порядку табуляции более сложны, вас может заинтересовать код, обсуждаемый на этой веб-странице:

http://www.ozgrid.com/forum/showthread.php?t=82272

Как видите, код иногда может быть довольно сложным. Конечно, такой подход, поскольку он предусматривает все перемещения от ячейки к ячейке, затрудняет внесение изменений в дизайн самого рабочего листа.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (10313) применим к Microsoft Excel 97, 2000, 2002 и 2003.

Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Controlling_Entry_Order_on_Unprotected_Cells [Управление порядком входа в незащищенные ячейки].