Форум программистов, компьютерный форум, киберфорум
MS Office Excel
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 10
1

Перемещение на несколько столбцов одним нажатием

21.09.2013, 09:21. Показов 1675. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Подскажите пожалуйста как в excel можно при нажатии на клавиатуре кнопки "->" перемещаться не на один столбец, а, например, на 5?

Пример - курсор находится на ячейке столбца D, я нажимаю на клавиатуре стрелку "->" и необходимо чтобы курсор переместился на 5 столбцов вправо - на соответствующую ячейку столбца I
Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2013, 09:21
Ответы с готовыми решениями:

Интернет одним нажатием
Есть ли в вин10 способ чтоб интернет подключался и отключался одним нажатием иконки, или хотяб как...

Запуск telnet одним нажатием клавиши
В силу специфики работы, очень часто приходится телнетится к различному оборудованию. Порядком...

Заполнение нескольких Label одним нажатием кнопки
Пишу код и не как не могу додуматься до того чтобы сделать так, когда при нажатии на кнопку каждый...

как послать 2 формы одним нажатием на клавишу?
как послать 2 формы одним нажатием на клавишу? в одной форме текстовые поля, в другой...

2
188 / 22 / 1
Регистрация: 20.09.2013
Сообщений: 65
21.09.2013, 12:39 2
Скройте промежуточные столбцы.
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
21.09.2013, 13:01 3
Цитата Сообщение от djaba2012_1 Посмотреть сообщение
курсор находится на ячейке столбца D, я нажимаю на клавиатуре стрелку "->" и необходимо чтобы курсор переместился на 5 столбцов вправо - на соответствующую ячейку столбца I
Как это сделать?
Написать соответствующий макрос несложно:

Visual Basic
1
2
3
Sub MoveRight()
    ActiveCell.Offset(0, 5).Activate
End Sub
Вот повесить его именно на клавишу "->" куда сложнее (если вообще возможно стандартными средствами). Но можно назначить ему сочетание Ctrl+(Shift+)буква.

Или использовать
сложное решение

Отслеживание нажатий клавиш запускается процедурой StartKeyWatch(), выход – Escape, смещения указываются в Left/Up/Right/DownOffset.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Option Explicit
 
Private Type POINTAPI
    x As Long
    y As Long
End Type
 
Private Type MSG
    hwnd As Long
    Message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type
 
Private Declare Function WaitMessage Lib "user32" () As Long
 
Private Declare Function PeekMessage Lib "user32" _
Alias "PeekMessageA" _
(ByRef lpMsg As MSG, ByVal hwnd As Long, _
ByVal wMsgFilterMin As Long, _
ByVal wMsgFilterMax As Long, _
ByVal wRemoveMsg As Long) As Long
 
Private Declare Function TranslateMessage Lib "user32" _
(ByRef lpMsg As MSG) As Long
 
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
 
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
 
Private Const WM_KEYDOWN As Long = &H100
Private Const PM_REMOVE  As Long = &H1
Private Const WM_CHAR    As Long = &H102
Private bExitLoop As Boolean
 
Private Const LeftKey As Long = 37
Private Const UpKey As Long = 38
Private Const RightKey As Long = 39
Private Const DownKey As Long = 40
 
Private Const LeftOffset As Long = 3
Private Const UpOffset As Long = 2
Private Const RightOffset As Long = 5
Private Const DownOffset As Long = 4
 
Sub StartKeyWatch()
 
    Dim msgMessage As MSG
    Dim bCancel As Boolean
    Dim iKeyCode As Integer
    Dim lXLhwnd As Long
 
    On Error GoTo handleCancel:
    Application.EnableCancelKey = xlErrorHandler
    bExitLoop = False
    lXLhwnd = FindWindow("XLMAIN", Application.Caption)
    Do
        WaitMessage
        If PeekMessage(msgMessage, lXLhwnd, WM_KEYDOWN, WM_KEYDOWN, PM_REMOVE) Then
            iKeyCode = msgMessage.wParam
            TranslateMessage msgMessage
            PeekMessage msgMessage, lXLhwnd, WM_CHAR, WM_CHAR, PM_REMOVE
            If iKeyCode = vbKeyBack Then SendKeys "{BS}"
            If iKeyCode = vbKeyReturn Then SendKeys "{ENTER}"
            bCancel = True
            Sheet_KeyPress ByVal msgMessage.wParam, ByVal iKeyCode, ByVal Selection, bCancel
            If bCancel = False Then
                PostMessage lXLhwnd, msgMessage.Message, msgMessage.wParam, 0
            End If
        End If
        DoEvents
    Loop Until bExitLoop
    
handleCancel:
If Err = 18 Then
    bExitLoop = True
End If
 
End Sub
 
Private Sub Sheet_KeyPress _
(ByVal KeyAscii As Integer, ByVal KeyCode As Integer, _
ByVal Target As Range, Cancel As Boolean)
 
    Select Case KeyAscii
    Case LeftKey
        If ActiveCell.Column > LeftOffset Then
            ActiveCell.Offset(0, -LeftOffset).Activate
        End If
    Case UpKey
        If ActiveCell.Row > UpOffset Then
            ActiveCell.Offset(-UpOffset, 0).Activate
        End If
    Case RightKey
        ActiveCell.Offset(0, RightOffset).Activate
    Case DownKey
        ActiveCell.Offset(DownOffset, 0).Activate
    Case Else
        Cancel = False
    End Select
 
End Sub


Исходник взят отсюда: Custom Worksheet KeyPress Event
1
21.09.2013, 13:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2013, 13:01
Помогаю со студенческими работами здесь

Одним нажатием открыть одну форму и закрыть другую
Всем привет. Бью себя ушами по щекам, но извините, не нашёл этой темы на форуме. В общем, я...

Обновить содержимое формы одним нажатием кнопки на клавиатуре
Работаю с ВДЕ, локальное приложение на стареньком компе. На форму выводится содержимое таблицы, в...

Перемещение объекта нажатием клавиш
хедер #ifndef BULLET_H #define BULLET_H #include <QWidget> class Bullet : public QWidget {...

Одним нажатием кнопки запустить mp3 и соответствующий вордовский файл
Вопрос важный,ибо мучаюсь уже года 2. Как можно одним нажатием кнопки на иконку запустить имеющийся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru