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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 21:17   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию При нажатии F3 переместить курсор

При нажатии F3 переместить курсор в заданный диапазон.
Но, почему- то не работает?
Код:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Excel.Range)
   Select Case sh.Index
        Case 1 To 3
        For dat = 0 To 30
        With [A3:J45].Offset(dat * 54)
If Not Intersect(Target, .Cells) Is Nothing Then
Application.OnKey "{F3}" = Cells(dat * 54 + 3, 4).Select
End If
End With
Next
End Select
End Sub
valerij вне форума Ответить с цитированием
Старый 19.06.2009, 06:14   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Твой код можно заменить одной строкой:
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    If Sh.Index <= 3 Then Cells(((Target.Row - 4) \ 54) * 54 + 3, 4).Select
End Sub
Цитата:
Но, почему- то не работает?
И не будет, пока ты не начнёшь соблюдать синтаксис VBA.
У тебя есть множество рабочих примеров использования Application.OnKey, а ты опять изобретаешь что-то новое...
EducatedFool вне форума Ответить с цитированием
Старый 19.06.2009, 14:34   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
У тебя есть множество рабочих примеров использования Application.OnKey, а ты опять изобретаешь что-то новое...
Да, но не могу придумать, как использовать.
Задача такая:
Например, я нахожусь в диапазоне А489:К583, но видимый диапазон(на мониторе) А572:К593, курсор находится К579, теперь мне надо переместиться на D543, кручу колесиком пока не увижу 543 строку, долго, вот и подумал про нажатие
Application.OnKey "{F3}" = Cells(dat * 54 + 3, 4).Select

Хотел переместить в модуль
Код:
Private Sub Workbook_Open() 
Application.OnKey "{F3}", "вначало"
End Sub
Но модуль не видит переменную dat, вернее она все время =0, Public dat, результата не дал.
Код:
Sub вначало()
    Sheets(1).Cells(dat * 54 + 3, 4).Select
End Sub
Вот и загвоздка.
valerij вне форума Ответить с цитированием
Старый 19.06.2009, 14:41   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Например, я нахожусь в диапазоне А489:К583, но видимый диапазон(на мониторе) А572:К593, курсор находится К579
Что такое видимый диапазон и курсор, я понял.
Но что означает "я нахожусь в диапазоне А489:К583" - увы, не понимаю.

Попробуй так:
Код:
Sub вначало()
    Cells(((Activecell.Row - 4) \ 54) * 54 + 3, 4).Select
End Sub

Private Sub Workbook_Open() 
    Application.OnKey "{F3}", "вначало"
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 19.06.2009, 14:59   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Но что означает "я нахожусь в диапазоне А489:К583" - увы, не понимаю.
Я имел ввиду, что программа выполняется только по условию(не знаю как объяснить)
Код:
For dat = 0 To 30
        With [A3:J45].Offset(dat * 54)
If Not Intersect(Target, .Cells) Is Nothing Then
Цитата:
Попробуй так:
Sub вначало()
Cells(((Activecell.Row - 4) \ 54) * 54 + 3, 4).Select
End Sub
Ага, ага, очень близко к "телу", попробую разобраться
Игорек, Спасибо!!!
valerij вне форума Ответить с цитированием
Старый 19.06.2009, 15:19   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Игорь, вот так, все СУПЕР!!
Код:
Sub вначало()
    Cells(((ActiveCell.Row - 4) \ 54) * 54 + 3, 4).Select
    ActiveWindow.SmallScroll Down:=11
End Sub
valerij вне форума Ответить с цитированием
Старый 20.06.2009, 15:42   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Выявился один бок, если видимый диапазон А19:К40, то при нажатии F3, курсор перемещается в D3, но не сдвигает строку D3 в зону видимости, бок исправил так:
Код:
Sub вначало()
Dim iScr As Byte
    Cells(((ActiveCell.Row - 4) \ 54) * 54 + 3, 4).Select
    If ActiveCell.Row > 54 Then iScr = 11
    ActiveWindow.SmallScroll Down:=iScr
End Sub
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переместить мигающий курсор? Сергей089 Паскаль, Turbo Pascal, PascalABC.NET 1 04.06.2009 17:35
При нажатии enter запускалась процедура Rusl92 Общие вопросы Delphi 9 01.10.2008 09:33
прокрутка при нажатии на кнопку neformat JavaScript, Ajax 0 20.06.2008 20:40
как переместить курсор DBGrid1 / Table1 1900s БД в Delphi 3 28.05.2008 17:49
Загрузка файла при нажатии на кнопку Simply-Art Общие вопросы Delphi 15 23.01.2007 14:00