Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как сделать чтобы курсор сдвигался в ином наравлении - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как сделать чтобы курсор сдвигался в ином наравлении
Филатов Дата: Среда, 29.08.2012, 17:25 | Сообщение № 1
Группа: Гости
Как сделать в эксель чтобы курсор сдвигался на три ячейки вправо а после на одну вниз?
 
Ответить
СообщениеКак сделать в эксель чтобы курсор сдвигался на три ячейки вправо а после на одну вниз?

Автор - Филатов
Дата добавления - 29.08.2012 в 17:25
Gustav Дата: Среда, 29.08.2012, 17:26 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Ого, ход конём программируете?! wink

ПОСЛЕ ЧЕГО сдвигался? Enter?

P.S. После изменения значения в текущей ячейке (и нажатия Enter или Tab или мышкой в другую произвольную ячейку) курсор отскочит от текущей как Вы просите:

[vba]
Code

Private Sub Worksheet_Change(ByVal Target As Range)
       Target.Offset(1, 3).Select
End Sub
[/vba]

Этот код нужно поместить в модуль листа, на котором предполагается такое поведение (попасть в модуль - правой кнопкой мыши на корешке листа и выбрать "Исходный текст").


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 29.08.2012, 17:40
 
Ответить
СообщениеОго, ход конём программируете?! wink

ПОСЛЕ ЧЕГО сдвигался? Enter?

P.S. После изменения значения в текущей ячейке (и нажатия Enter или Tab или мышкой в другую произвольную ячейку) курсор отскочит от текущей как Вы просите:

[vba]
Code

Private Sub Worksheet_Change(ByVal Target As Range)
       Target.Offset(1, 3).Select
End Sub
[/vba]

Этот код нужно поместить в модуль листа, на котором предполагается такое поведение (попасть в модуль - правой кнопкой мыши на корешке листа и выбрать "Исходный текст").

Автор - Gustav
Дата добавления - 29.08.2012 в 17:26
Irysha Дата: Четверг, 30.08.2012, 09:34 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 17 ±
Замечаний: 0% ±

2007,2013
В Excel предусмотрена также возможность задать направление сдвига курсора после нажатия клавиши Enter

Для Excel 2003: меню "Сервис" - "Параметры" - "Правка" - "Переход к другой ячейке после нажатия клавиши ВВОД"

Для Excel 2007: меню "Другие команды" - "Дополнительно" - "Параметры правки" - "Переход к другой ячейке после нажатия клавиши ВВОД"
 
Ответить
СообщениеВ Excel предусмотрена также возможность задать направление сдвига курсора после нажатия клавиши Enter

Для Excel 2003: меню "Сервис" - "Параметры" - "Правка" - "Переход к другой ячейке после нажатия клавиши ВВОД"

Для Excel 2007: меню "Другие команды" - "Дополнительно" - "Параметры правки" - "Переход к другой ячейке после нажатия клавиши ВВОД"

Автор - Irysha
Дата добавления - 30.08.2012 в 09:34
Gustav Дата: Четверг, 30.08.2012, 10:32 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Irysha)
В Excel предусмотрена также возможность задать направление сдвига курсора после нажатия клавиши Enter

Хорошее замечание. Попутно глянул, какие свойства отвечают за это при программировании:

[vba]
Code

     Application.MoveAfterReturn = True
     Application.MoveAfterReturnDirection = xlDown
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (Irysha)
В Excel предусмотрена также возможность задать направление сдвига курсора после нажатия клавиши Enter

Хорошее замечание. Попутно глянул, какие свойства отвечают за это при программировании:

[vba]
Code

     Application.MoveAfterReturn = True
     Application.MoveAfterReturnDirection = xlDown
[/vba]

Автор - Gustav
Дата добавления - 30.08.2012 в 10:32
Филатов Дата: Четверг, 30.08.2012, 10:36 | Сообщение № 5
Группа: Гости
Это все понятно, всем спасибо!( меню "Другие команды" - "Дополнительно" - "Параметры правки" - "Переход к правой ячейке после нажатия клавиши ВВОД")-это у меня стоит. Но дело в том что я сканирую штрих-коды и после третьего сканирование мне надо чтобы автоматом возвращалось на исходную позицию только на ячейку вниз
 
Ответить
СообщениеЭто все понятно, всем спасибо!( меню "Другие команды" - "Дополнительно" - "Параметры правки" - "Переход к правой ячейке после нажатия клавиши ВВОД")-это у меня стоит. Но дело в том что я сканирую штрих-коды и после третьего сканирование мне надо чтобы автоматом возвращалось на исходную позицию только на ячейку вниз

Автор - Филатов
Дата добавления - 30.08.2012 в 10:36
Gustav Дата: Четверг, 30.08.2012, 10:48 | Сообщение № 6
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Филатов)
после третьего сканирование мне надо чтобы автоматом возвращалось на исходную позицию только на ячейку вниз

Тогда такой модуль:

[vba]
Code

Option Explicit

Dim cnt As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = True
      cnt = 0 'для принудительного обнуления
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
      cnt = cnt + 1
      If cnt Mod 3 = 0 Then
          On Error Resume Next
          Target.Offset(1, -2).Select 'каждый 3-й ентер
          On Error GoTo 0
      Else
          Target.Offset(0, 1).Select 'каждый 1,2-й ентер
      End If
End Sub
[/vba]
Если процесс по какой-либо причине сбивается, то дабл-кликнуть по любой ячейке листа, чтобы обнулить счетчик движений cnt.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Четверг, 30.08.2012, 10:50
 
Ответить
Сообщение
Quote (Филатов)
после третьего сканирование мне надо чтобы автоматом возвращалось на исходную позицию только на ячейку вниз

Тогда такой модуль:

[vba]
Code

Option Explicit

Dim cnt As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Cancel = True
      cnt = 0 'для принудительного обнуления
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
      cnt = cnt + 1
      If cnt Mod 3 = 0 Then
          On Error Resume Next
          Target.Offset(1, -2).Select 'каждый 3-й ентер
          On Error GoTo 0
      Else
          Target.Offset(0, 1).Select 'каждый 1,2-й ентер
      End If
End Sub
[/vba]
Если процесс по какой-либо причине сбивается, то дабл-кликнуть по любой ячейке листа, чтобы обнулить счетчик движений cnt.

Автор - Gustav
Дата добавления - 30.08.2012 в 10:48
Филатов Дата: Четверг, 30.08.2012, 11:36 | Сообщение № 7
Группа: Гости
а если тоже-самое, только чтобы через одну перескакивало, и те же самые 3 ячейки? И огромнейшее спасибо за:
[vba]
Code
Option Explicit

Dim cnt As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
cnt = 0 'для принудительного обнуления
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
cnt = cnt + 1
If cnt Mod 3 = 0 Then
On Error Resume Next
Target.Offset(1, -2).Select 'каждый 3-й ентер
On Error GoTo 0
Else
Target.Offset(0, 1).Select 'каждый 1,2-й ентер
End If
End Sub
[/vba]
ОЧЕНЬ ПОМОГЛО!!!!!
 
Ответить
Сообщениеа если тоже-самое, только чтобы через одну перескакивало, и те же самые 3 ячейки? И огромнейшее спасибо за:
[vba]
Code
Option Explicit

Dim cnt As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
cnt = 0 'для принудительного обнуления
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
cnt = cnt + 1
If cnt Mod 3 = 0 Then
On Error Resume Next
Target.Offset(1, -2).Select 'каждый 3-й ентер
On Error GoTo 0
Else
Target.Offset(0, 1).Select 'каждый 1,2-й ентер
End If
End Sub
[/vba]
ОЧЕНЬ ПОМОГЛО!!!!!

Автор - Филатов
Дата добавления - 30.08.2012 в 11:36
Gustav Дата: Четверг, 30.08.2012, 13:27 | Сообщение № 8
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Филатов)
а если тоже-самое, только чтобы через одну перескакивало, и те же самые 3 ячейки?

Через одну - через какую? По горизонтали или по вертикали?

Сейчас от A1 скачет так: A1 B1 C1 A2.

А хочется: A1 C1 E1 A2
или: A1 B1 C1 A3 ?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (Филатов)
а если тоже-самое, только чтобы через одну перескакивало, и те же самые 3 ячейки?

Через одну - через какую? По горизонтали или по вертикали?

Сейчас от A1 скачет так: A1 B1 C1 A2.

А хочется: A1 C1 E1 A2
или: A1 B1 C1 A3 ?

Автор - Gustav
Дата добавления - 30.08.2012 в 13:27
Филатов Дата: Четверг, 30.08.2012, 13:52 | Сообщение № 9
Группа: Гости
В1,D1
 
Ответить
СообщениеВ1,D1

Автор - Филатов
Дата добавления - 30.08.2012 в 13:52
Филатов Дата: Четверг, 30.08.2012, 13:53 | Сообщение № 10
Группа: Гости
B1,D1, B2, и т.д.
 
Ответить
СообщениеB1,D1, B2, и т.д.

Автор - Филатов
Дата добавления - 30.08.2012 в 13:53
Gustav Дата: Четверг, 30.08.2012, 14:54 | Сообщение № 11
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Филатов)
B1,D1, B2, и т.д.


[vba]
Code

Private Sub Worksheet_Change(ByVal Target As Range)
     cnt = cnt + 1
     If cnt Mod 2 = 0 Then
         On Error Resume Next
         Target.Offset(1, -2).Select 'каждый 2-й ентер
         On Error GoTo 0
     Else
         Target.Offset(0, 2).Select 'каждый 1-й ентер
     End If
End Sub
[/vba]
Ну и если еще что-нибудь захочется, то уже самостоятельно по аналогии меняйте. Наверное, уже понятно, как я видоизменяю код.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (Филатов)
B1,D1, B2, и т.д.


[vba]
Code

Private Sub Worksheet_Change(ByVal Target As Range)
     cnt = cnt + 1
     If cnt Mod 2 = 0 Then
         On Error Resume Next
         Target.Offset(1, -2).Select 'каждый 2-й ентер
         On Error GoTo 0
     Else
         Target.Offset(0, 2).Select 'каждый 1-й ентер
     End If
End Sub
[/vba]
Ну и если еще что-нибудь захочется, то уже самостоятельно по аналогии меняйте. Наверное, уже понятно, как я видоизменяю код.

Автор - Gustav
Дата добавления - 30.08.2012 в 14:54
Филатов Дата: Четверг, 30.08.2012, 16:15 | Сообщение № 12
Группа: Гости
то все понятно, я так уже делал, но не перескакивает курсор через одну ячейку, то-есть, мне надо что-бы совместно с Target.Offset(0, 2) было связан пропуск одной ячейки
 
Ответить
Сообщението все понятно, я так уже делал, но не перескакивает курсор через одну ячейку, то-есть, мне надо что-бы совместно с Target.Offset(0, 2) было связан пропуск одной ячейки

Автор - Филатов
Дата добавления - 30.08.2012 в 16:15
Gustav Дата: Четверг, 30.08.2012, 16:44 | Сообщение № 13
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Филатов)
не перескакивает курсор через одну ячейку

Как не перескакивает?! Я надеюсь Вы поняли, что процедуру Worksheet_Change из предыдущего сообщения надо подпихнуть вместо одноименной процедуры в полном коде модуля два моих сообщения назад?! Т.е. сверху должно остаться неизменная часть:
[vba]
Code

Option Explicit
Dim cnt As Long
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
cnt = 0 'для принудительного обнуления
End Sub
[/vba]
Или верхнюю часть выкинули??

P.S. В самый первый раз-то Вы можете установить курсор на ячейку B1? Например, мышкой. И дальше по Энтерам пошло: B1 D1 B2 D2 B3 D3 и т.д. Или я чего-то принципиально не понимаю?


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Четверг, 30.08.2012, 16:54
 
Ответить
Сообщение
Quote (Филатов)
не перескакивает курсор через одну ячейку

Как не перескакивает?! Я надеюсь Вы поняли, что процедуру Worksheet_Change из предыдущего сообщения надо подпихнуть вместо одноименной процедуры в полном коде модуля два моих сообщения назад?! Т.е. сверху должно остаться неизменная часть:
[vba]
Code

Option Explicit
Dim cnt As Long
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
cnt = 0 'для принудительного обнуления
End Sub
[/vba]
Или верхнюю часть выкинули??

P.S. В самый первый раз-то Вы можете установить курсор на ячейку B1? Например, мышкой. И дальше по Энтерам пошло: B1 D1 B2 D2 B3 D3 и т.д. Или я чего-то принципиально не понимаю?

Автор - Gustav
Дата добавления - 30.08.2012 в 16:44
Филатов Дата: Четверг, 30.08.2012, 17:05 | Сообщение № 14
Группа: Гости
Gustav, огромное спасибо, и прости за мою невнимательность, я писал на одном листе а пробывал на другом.
 
Ответить
СообщениеGustav, огромное спасибо, и прости за мою невнимательность, я писал на одном листе а пробывал на другом.

Автор - Филатов
Дата добавления - 30.08.2012 в 17:05
Gustav Дата: Четверг, 30.08.2012, 17:10 | Сообщение № 15
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Quote (Филатов)
я писал на одном листе а пробывал на другом

"ничего-ничего, у нас бывает и похуже" (с) Бриллиантовая рука wink


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Quote (Филатов)
я писал на одном листе а пробывал на другом

"ничего-ничего, у нас бывает и похуже" (с) Бриллиантовая рука wink

Автор - Gustav
Дата добавления - 30.08.2012 в 17:10
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!