Требуется сделать так, чтобы при нажатии клавиши <Enter> следующая ячейка выбиралась так: сначала следующая за ней в этой же строке, если текущая ячейка в последнем столбце таблицы, то - первая в следующей строке, если текущая ячейка была последней в таблице, то - первая в вервой строке. Вариант с "плавающим" TextBox не годится :(
Требуется сделать так, чтобы при нажатии клавиши <Enter> следующая ячейка выбиралась так: сначала следующая за ней в этой же строке, если текущая ячейка в последнем столбце таблицы, то - первая в следующей строке, если текущая ячейка была последней в таблице, то - первая в вервой строке. Вариант с "плавающим" TextBox не годится :(
SGerman, не знаю, то ли Вам нужно: в модуле книги [vba]
Код
Private Sub Workbook_Open() Application.OnKey "~", "Module1.M111" End Sub
[/vba] в модуле1 [vba]
Код
Sub M111() Application.EnableEvents = False r& = ActiveCell.Row If ActiveCell.Column < 9 Then ActiveCell.Offset(, 1).Activate Else If (r < 34) Then Cells(ActiveCell.Row + 1, 4).Activate Else Cells(13, 4).Activate End If End If Application.EnableEvents = True End Sub
[/vba] Правда, такая поправка станет действовать на все открытые книги. Пока не закроете эксель.
SGerman, не знаю, то ли Вам нужно: в модуле книги [vba]
Код
Private Sub Workbook_Open() Application.OnKey "~", "Module1.M111" End Sub
[/vba] в модуле1 [vba]
Код
Sub M111() Application.EnableEvents = False r& = ActiveCell.Row If ActiveCell.Column < 9 Then ActiveCell.Offset(, 1).Activate Else If (r < 34) Then Cells(ActiveCell.Row + 1, 4).Activate Else Cells(13, 4).Activate End If End If Application.EnableEvents = True End Sub
[/vba] Правда, такая поправка станет действовать на все открытые книги. Пока не закроете эксель.Roman777
Private Sub Workbook_Activate() If ActiveSheet Is Sheets("Лист1") Then Application.MoveAfterReturnDirection = xlToRight End Sub Private Sub Workbook_Deactivate() Application.MoveAfterReturnDirection = xlDown End Sub
[/vba]
в модуле листа [vba]
Код
Private Sub Worksheet_Activate() Application.MoveAfterReturnDirection = xlToRight End Sub Private Sub Worksheet_Deactivate() Application.MoveAfterReturnDirection = xlDown End Sub
[/vba]
в модуле книги [vba]
Код
Private Sub Workbook_Activate() If ActiveSheet Is Sheets("Лист1") Then Application.MoveAfterReturnDirection = xlToRight End Sub Private Sub Workbook_Deactivate() Application.MoveAfterReturnDirection = xlDown End Sub
[/vba]
в модуле листа [vba]
Код
Private Sub Worksheet_Activate() Application.MoveAfterReturnDirection = xlToRight End Sub Private Sub Worksheet_Deactivate() Application.MoveAfterReturnDirection = xlDown End Sub
SGerman, "{ENTER}" - это "ENTER" на клавиатуре "Num" (клавиатура с цифрами правее стрелочек, обычно). А так просто тильда "~". Manual. А так - то у krosav4ig, способ поинтереснее будет).
SGerman, "{ENTER}" - это "ENTER" на клавиатуре "Num" (клавиатура с цифрами правее стрелочек, обычно). А так просто тильда "~". Manual. А так - то у krosav4ig, способ поинтереснее будет).Roman777
Ваше решение тоже отличное, спасибо ! Если б еще узнать где почитать о том, что под загадочным "~" понимется {Enter}, а заодно и все остальные клавиши, например {Ctrl+Del}, {Ctrl+Ins} и прочие
Roman777,
Ваше решение тоже отличное, спасибо ! Если б еще узнать где почитать о том, что под загадочным "~" понимется {Enter}, а заодно и все остальные клавиши, например {Ctrl+Del}, {Ctrl+Ins} и прочие SGerman
Мудрость приходит со старостью. Но иногда старость приходит одна :)