Страницы: 1
RSS
Перемещение курсора в заданную ячейку после ввода данных
 
Есть два столбца. В ячейку первого столбца (допустим, A2) вводятся данные со сканера штрих-кода, при этом курсор автоматом меняет ячейку. Необходимо, чтоб он менял ее на ячейку B2 и после ввода данных в нее перепрыгивал в первый столбец, в ячейку A3. Ну и так далее.  
 
Заранее спасибо за помощь!
 
{quote}{login=Roger}{date=18.01.2008 10:32}{thema=Перемещение курсора в заданную ячейку после ввода данных}{post}Есть два столбца. В ячейку первого столбца (допустим, A2) вводятся данные со сканера штрих-кода, при этом курсор автоматом меняет ячейку. Необходимо, чтоб он менял ее на ячейку B2 и после ввода данных в нее перепрыгивал в первый столбец, в ячейку A3. Ну и так далее.  
 
Заранее спасибо за помощь!{/post}{/quote}  
 
А где курсор автоматом оказывается после считывания? В ячейке ниже? Т.е. драйвер сканера сам как-бы нажимает ENTER. Верно? Тогда может в драйвере есть какие-нибудь настройки? Замените в драйврере {ENTER} на {TAB}.  
 
Хотя, конечно, можно решить и "влоб"...  
 
Но, если хотите, то попробуйте еще вот так:  
 
Меню-Параметры-Правка-Переход к другой ячейке после ввода, в направлении - Вправо - ОК
 
{quote}  
Меню-Параметры-Правка-Переход к другой ячейке после ввода, в направлении - Вправо - ОК{/post}{/quote}  
 
Но в этом случае курсор после ввода в B2 прыгнет в С2. А необходимо, чтобы вернулся в столбец A, в ячейку A3.
 
{quote}{login=}{date=18.01.2008 10:58}{thema=Re: Re: Перемещение курсора в заданную ячейку после ввода данных}{post}{quote}  
Меню-Параметры-Правка-Переход к другой ячейке после ввода, в направлении - Вправо - ОК{/post}{/quote}  
 
Но в этом случае курсор после ввода в B2 прыгнет в С2. А необходимо, чтобы вернулся в столбец A, в ячейку A3.{/post}{/quote}  
WorkSheet_SelectionChange и WorkSheet_Change Вам в помощь.
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If ActiveCell.Column <> 3 Then Exit Sub  
Cells(ActiveCell.Row + 1, ActiveCell.Column - 2).Activate  
End Sub
 
Вот это здорово! Спасибо!  
Правда, в принципе работы макроса не разобрался до конца, но на досуге постараюсь. И работает, к сожалению, только в случае, если направление перемещения курсора сменить на "Вправо".  
Но все равно спасибо!
 
Тройка во второй строке - это колонка куда ты перешел после ввода.  
Первая единица в третьей строке - переход на строку вниз, а двойка с минусом там же - переход на две колонки влево.
 
{quote}{login=}{date=19.01.2008 12:26}{thema=не понял}{post}Тройка во второй строке - это колонка куда ты перешел после ввода.  
Первая единица в третьей строке - переход на строку вниз, а двойка с минусом там же - переход на две колонки влево.{/post}{/quote}  
Ну это-то я понял, что ж тут не понять...  
Проблема в том, что работает, как задумано, только если в настройках Excel установить переход курсора после ввода на "Вправо". А в последующих столбцах нужно вводить данные сверху вниз (чтобы курсор после ввода смещался вниз, другими словами).
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If ActiveCell.Column > 2 Then Exit Sub 'если мы не в первых двух столбцах то выход  
If ActiveCell.Column = 1 Then  
Cells(ActiveCell.Row - 1, ActiveCell.Column + 1).Activate ' если в первом столбце после ввода  
Else  
Cells(ActiveCell.Row, ActiveCell.Column - 1).Activate ' если во втором столбце после ввода  
End If  
End Sub  
 
насчет третьего столбца в условиях задачи ничего не говорится
 
В принципе можно задать переход куда угодно откуда угодно, но тогда CASE будет удобнее
Страницы: 1
Читают тему
Наверх