Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2011, 01:21   #1
Dog_DinGo
Пользователь
 
Аватар для Dog_DinGo
 
Регистрация: 16.02.2011
Сообщений: 36
По умолчанию Переход по нажатию ENTER в заданном порядке

Доброго времени суток...

у меня проблема... нужна очень помощь, буду признателен...

Суть: надо, чтобы при нажатии клавиши Enter курсор двигался в заданном направлении... то есть зигзагом....

В приложенном скрине чёрной линией отмечено как именно....
Изображения
Тип файла: jpg Пример.jpg (33.9 Кб, 76 просмотров)
Dog_DinGo вне форума Ответить с цитированием
Старый 28.02.2011, 01:36   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

такую траекторию надо получить с одного нажатия Enter?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.02.2011, 01:43   #3
Dog_DinGo
Пользователь
 
Аватар для Dog_DinGo
 
Регистрация: 16.02.2011
Сообщений: 36
По умолчанию

в том-то и дело, что нет...
это было бы слишком просто =)

одно нажатие, один переход....

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


вот таким образом:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column < 4 And Target.Row > 2 Then Cells(Target.Row + 0, Target.Column + 2).Select
If Target.Column = 4 Then Cells(Target.Row + 1, 2).Select
End Sub


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

Последний раз редактировалось Dog_DinGo; 28.02.2011 в 02:53.
Dog_DinGo вне форума Ответить с цитированием
Старый 28.02.2011, 09:15   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Может так? (сам принцип)
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Address
Case "$B$1", "$B$2", "$F$1", "$F$2": Target.Offset(, 1).Select
Case "$C$1", "$G$1": Target.Offset(1, -1).Select
Case "$C$2": Target.Offset(-1, 3).Select
Case "$G$2": Target.Offset(-1, -5).Select
End Select
Application.EnableEvents = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.02.2011 в 09:19.
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2011, 11:23   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

или так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim dr as Long, dc a long
  If Intersect(Target, Union(Range("C3:C6"), Range("H3:H8"))) Is Nothing Then ' с которых 2 вправо
    If Intersect(Target, Union(Range("E3:E5"), Range("I3:I7"))) Is Nothing Then ' с кот. 1 вниз 2 влево
      If Intersect(Target, Range("E6")) Is Nothing Then Exit Sub ' с кот. вверх вправо на сосед.столбик
      Else: dr = -3: dc = 3: End If
    Else: dr = 1: dc = -2: End If
  Else: dr = 0: dc = 2: End If
  Target.Offset(dr, dc).Select
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.02.2011, 11:28   #6
Dog_DinGo
Пользователь
 
Аватар для Dog_DinGo
 
Регистрация: 16.02.2011
Сообщений: 36
По умолчанию Спасибо...

Первый вариант посмотрел.. сейчас второй гляну...
Dog_DinGo вне форума Ответить с цитированием
Старый 28.02.2011, 11:38   #7
Dog_DinGo
Пользователь
 
Аватар для Dog_DinGo
 
Регистрация: 16.02.2011
Сообщений: 36
По умолчанию

В Варианте от IgorGo он ругается на то, что нет "Else" без " if"
Хотя всё есть....

Последний раз редактировалось Dog_DinGo; 28.02.2011 в 11:58.
Dog_DinGo вне форума Ответить с цитированием
Старый 28.02.2011, 12:02   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

У Игоря Exit Sub лишнее.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2011, 12:13   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я изучаю синтаксис ВБА, не все еще получается...
пробуйте так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim dr As Long, dc As Long
  If Intersect(Target, Union(Range("C3:C6"), Range("H3:H8"))) Is Nothing Then ' с которых 2 вправо
    If Intersect(Target, Union(Range("E3:E5"), Range("I3:I7"))) Is Nothing Then ' с кот. 1 вниз 2 влево
      If Intersect(Target, Range("E6")) Is Nothing Then ' с кот. вверх вправо на сосед.столбик
        Exit Sub
      Else: dr = -3: dc = 3: End If
    Else: dr = 1: dc = -2: End If
  Else: dr = 0: dc = 2: End If
  Target.Offset(dr, dc).Select
End Sub
убедитесь, что все диапазоны заданы правильно, по рисунку Вашему это не очень понятно.
Exit Sub - не лишний, он коряво записан... был
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 28.02.2011 в 12:29.
IgorGO вне форума Ответить с цитированием
Старый 28.02.2011, 12:18   #10
Dog_DinGo
Пользователь
 
Аватар для Dog_DinGo
 
Регистрация: 16.02.2011
Сообщений: 36
По умолчанию

Спасибо, Вам...

Буду подгонять под себя....

Я вообще ВБА изучаю всего две недели...

ПОэтому, далеко не всё получается...

СПасибо большое =)))

Последний раз редактировалось Dog_DinGo; 28.02.2011 в 12:43.
Dog_DinGo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По нажатию клавиши Enter на клавиатуре нажимается определенный BitBtn Akemi Компоненты Delphi 1 08.06.2010 19:44
По нажатию Enter Cpluser Общие вопросы .NET 4 30.04.2009 10:28
Переход по ENTER на ячейку справа komar73 Microsoft Office Excel 2 10.02.2009 19:06
По нажатию Enter Andr Общие вопросы Delphi 8 22.12.2008 16:58
переход курсора по нажатию клавиши matus Общие вопросы Delphi 3 22.11.2007 22:33