Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen / 9 сообщений из 9, страница 1 из 1
07.01.2012, 17:41
    #37605023
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
Нашел на форуме отличный макрос для назначения макросов событиям нажатия сочетаний клавиш

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub c_Hot_Keys()
' назначение комбинаций клавиш
With Application
    ' обозначение клавиш: + = Shift; % = Alt; ^ = Ctrl
     
    ' комбинация с клавишей Ctrl
    .OnKey "^{F1}", "myMacros_1"

    ' комбинация с клавишами Ctrl и Shift
     .OnKey "^+{a}", "myMacros_2"
    
    ' комбинация с клавишей Shift
    .OnKey "+{F1}", "myMacros_3"
     
    ' функциональные клавиши
    .OnKey "{F12}", "myMacros_4"

End With
End Sub




Хочется узнать как обозначить в VBA клавиши:

Print Screen

Esc

Tab

Windows

Delete

End
...
Рейтинг: 0 / 0
07.01.2012, 18:27
    #37605048
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
DMK67,

А в Справку заглянуть? (выбираем OnKey и жмем F1)

"{ESCAPE}" или "{ESC}" - Esc

"{TAB}" - Tab

"{DELETE}" или "{DEL}" - Delete

"{END}" - End

Для Print Screen и Windows нужно искать в сети, но, думаю, через .OnKey будет проблематично.
...
Рейтинг: 0 / 0
07.01.2012, 18:46
    #37605063
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
Enter -"~"
...
Рейтинг: 0 / 0
07.01.2012, 21:13
    #37605204
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen

Код: vbnet
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.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
'Вариант I. Разместите в любом стандартном модуле нужной рабочей книги :
 
Sub Запретить_клавиши()
 Application.OnKey Key:="+^%{F1}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + ALT + F1
 Application.OnKey Key:="^;", Procedure:=""
 ' Сочетание клавиш CTRL + ;
 Application.OnKey Key:="^:", Procedure:=""
 ' Сочетание клавиш CTRL + :
 Application.OnKey Key:="^0", Procedure:=""
 ' Сочетание клавиш CTRL + 0
 Application.OnKey Key:="^1", Procedure:=""
 ' Сочетание клавиш CTRL + 1
 Application.OnKey Key:="^6", Procedure:=""
 ' Сочетание клавиш CTRL + 6
 Application.OnKey Key:="^7", Procedure:=""
 ' Сочетание клавиш CTRL + 7
 Application.OnKey Key:="^8", Procedure:=""
 ' Сочетание клавиш CTRL + 8
 Application.OnKey Key:="^9", Procedure:=""
 ' Сочетание клавиш CTRL + 9
 Application.OnKey Key:="^a", Procedure:=""
 ' Сочетание клавиш CTRL + A
 Application.OnKey Key:="^c", Procedure:=""
 ' Сочетание клавиш CTRL + C
 Application.OnKey Key:="^d", Procedure:=""
 ' Сочетание клавиш CTRL + D
 Application.OnKey Key:="^f", Procedure:=""
 ' Сочетание клавиш CTRL + F
 Application.OnKey Key:="^h", Procedure:=""
 ' Сочетание клавиш CTRL + H
 Application.OnKey Key:="^k", Procedure:=""
 ' Сочетание клавиш CTRL + K
 Application.OnKey Key:="^n", Procedure:=""
 ' Сочетание клавиш CTRL + n
 Application.OnKey Key:="^o", Procedure:=""
 ' Сочетание клавиш CTRL + O
 Application.OnKey Key:="^p", Procedure:=""
 ' Сочетание клавиш CTRL + p
 Application.OnKey Key:="^r", Procedure:=""
 ' Сочетание клавиш CTRL + R
 Application.OnKey Key:="^s", Procedure:=""
 ' Сочетание клавиш CTRL + S
 
 Application.OnKey Key:="^v", Procedure:=""
 ' Сочетание клавиш CTRL + V
 Application.OnKey Key:="^x", Procedure:=""
 ' Сочетание клавиш CTRL + X
 Application.OnKey Key:="^z", Procedure:=""
 ' Сочетание клавиш CTRL + Z
 Application.OnKey Key:="^g", Procedure:=""
 ' Сочетание клавиш CTRL + G
 
 Application.OnKey Key:="%{F1}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F1
 Application.OnKey Key:="%{F2}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F2
 Application.OnKey Key:="%{F3}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F3
 Application.OnKey Key:="%{F4}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F4
 Application.OnKey Key:="%{F5}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F5
 Application.OnKey Key:="%{F6}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F6
 Application.OnKey Key:="%{F7}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F7
 Application.OnKey Key:="%{F8}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F8
 Application.OnKey Key:="%{F9}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F9
 Application.OnKey Key:="%{F10}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F10
 Application.OnKey Key:="%{F11}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F11
 Application.OnKey Key:="%{F12}", Procedure:=""
 ' Блокировка сочетания клавиш ALT + F12
 
 
 Application.OnKey Key:="{F1}", Procedure:=""
 ' Блокировка сочетания клавиш F1
 Application.OnKey Key:="{F2}", Procedure:=""
 ' Блокировка сочетания клавиш F2
 Application.OnKey Key:="{F3}", Procedure:=""
 ' Блокировка сочетания клавиш F3
 Application.OnKey Key:="{F4}", Procedure:=""
 ' Блокировка сочетания клавиш F4
 Application.OnKey Key:="{F5}", Procedure:=""
 ' Блокировка сочетания клавиш F5
 Application.OnKey Key:="{F6}", Procedure:=""
 ' Блокировка сочетания клавиш F6
 Application.OnKey Key:="{F7}", Procedure:=""
 ' Блокировка сочетания клавиш F7
 Application.OnKey Key:="{F8}", Procedure:=""
 ' Блокировка сочетания клавиш F8
 Application.OnKey Key:="{F9}", Procedure:=""
 ' Блокировка сочетания клавиш F9
 Application.OnKey Key:="{F10}", Procedure:=""
 ' Блокировка сочетания клавиш F10
 Application.OnKey Key:="{F11}", Procedure:=""
 ' Блокировка сочетания клавиш F11
 Application.OnKey Key:="{F12}", Procedure:=""
 ' Блокировка сочетания клавиш F12
 
 
 Application.OnKey Key:="^{F1}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F1
 Application.OnKey Key:="^{F2}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F2
 Application.OnKey Key:="^{F3}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F3
 Application.OnKey Key:="^{F4}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F4
 Application.OnKey Key:="^{F5}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F5
 Application.OnKey Key:="^{F6}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F6
 Application.OnKey Key:="^{F7}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F7
 Application.OnKey Key:="^{F8}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F8
 Application.OnKey Key:="^{F9}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F9
 Application.OnKey Key:="^{F10}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F10
 Application.OnKey Key:="^{F11}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F11
 Application.OnKey Key:="^{F12}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + F12
 
 
 
 Application.OnKey Key:="+{F1}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F1
 Application.OnKey Key:="+{F2}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F2
 Application.OnKey Key:="+{F3}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F3
 Application.OnKey Key:="+{F4}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F4
 Application.OnKey Key:="+{F5}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F5
 Application.OnKey Key:="+{F6}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F6
 Application.OnKey Key:="+{F7}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F7
 Application.OnKey Key:="+{F8}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F8
 Application.OnKey Key:="+{F9}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F9
 Application.OnKey Key:="+{F10}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F10
 Application.OnKey Key:="+{F11}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F11
 Application.OnKey Key:="+{F12}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + F12
 
 Application.OnKey Key:="+^{F1}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F1
 Application.OnKey Key:="+^{F2}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F2
 Application.OnKey Key:="+^{F3}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F3
 Application.OnKey Key:="+^{F4}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F4
 Application.OnKey Key:="+^{F5}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F5
 Application.OnKey Key:="+^{F6}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F6
 Application.OnKey Key:="+^{F7}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F7
 Application.OnKey Key:="+^{F8}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F8
 Application.OnKey Key:="+^{F9}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F9
 Application.OnKey Key:="+^{F10}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F10
 Application.OnKey Key:="+^{F11}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F11
 Application.OnKey Key:="+^{F12}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F12
 
Application.OnKey Key:="+^{F12}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F12
 Application.OnKey Key:="+%{F9}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + ALT + F9
 Application.OnKey Key:="+^{F6}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F6
 Application.OnKey Key:="+^{F3}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + CTRL + F3
 Application.OnKey Key:="+%{F2}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + ALT + F2
 Application.OnKey Key:="+%{F1}", Procedure:=""
 ' Блокировка сочетания клавиш SHIFT + ALT + F1
End Sub

'Вернуть всё обратно можно выполнив единственную инструкцию :
Sub Вернуть_назад()
Application.OnKey Key:="+^%{F1}"
Application.OnKey Key:="^;"
Application.OnKey Key:="^:"
Application.OnKey Key:="^0"
Application.OnKey Key:="^1"
Application.OnKey Key:="^6"
Application.OnKey Key:="^7"
Application.OnKey Key:="^8"
Application.OnKey Key:="^9"
Application.OnKey Key:="^a"
Application.OnKey Key:="^c"
Application.OnKey Key:="^d"
Application.OnKey Key:="^f"
Application.OnKey Key:="^h"
Application.OnKey Key:="^k"
Application.OnKey Key:="^o"
Application.OnKey Key:="^p"
Application.OnKey Key:="^r"
Application.OnKey Key:="^s"
Application.OnKey Key:="^v"
Application.OnKey Key:="^x"
Application.OnKey Key:="^z"
Application.OnKey Key:="^g"
 
 
 
 
 
 
 
 
 
Application.OnKey Key:="%{F1}"
Application.OnKey Key:="%{F2}"
Application.OnKey Key:="%{F3}"
Application.OnKey Key:="%{F4}"
Application.OnKey Key:="%{F5}"
Application.OnKey Key:="%{F6}"
Application.OnKey Key:="%{F7}"
Application.OnKey Key:="%{F8}"
Application.OnKey Key:="%{F9}"
Application.OnKey Key:="%{F10}"
Application.OnKey Key:="%{F11}"
Application.OnKey Key:="%{F12}"
 
Application.OnKey Key:="{F1}"
Application.OnKey Key:="{F2}"
Application.OnKey Key:="{F3}"
Application.OnKey Key:="{F4}"
Application.OnKey Key:="{F5}"
 Application.OnKey Key:="{F6}"
 Application.OnKey Key:="{F7}"
 Application.OnKey Key:="{F8}"
 Application.OnKey Key:="{F9}"
 Application.OnKey Key:="{F10}"
 Application.OnKey Key:="{F11}"
 Application.OnKey Key:="{F12}"
 
 
 Application.OnKey Key:="^{F1}"
 Application.OnKey Key:="^{F2}"
 Application.OnKey Key:="^{F3}"
 Application.OnKey Key:="^{F4}"
 Application.OnKey Key:="^{F5}"
 Application.OnKey Key:="^{F6}"
 Application.OnKey Key:="^{F7}"
 Application.OnKey Key:="^{F8}"
 Application.OnKey Key:="^{F9}"
 Application.OnKey Key:="^{F10}"
 Application.OnKey Key:="^{F11}"
 Application.OnKey Key:="^{F12}"
 
 
 
 Application.OnKey Key:="+{F1}"
 Application.OnKey Key:="+{F2}"
 Application.OnKey Key:="+{F3}"
 Application.OnKey Key:="+{F4}"
 Application.OnKey Key:="+{F5}"
 Application.OnKey Key:="+{F6}"
 Application.OnKey Key:="+{F7}"
 Application.OnKey Key:="+{F8}"
 Application.OnKey Key:="+{F9}"
 Application.OnKey Key:="+{F10}"
 Application.OnKey Key:="+{F11}"
 Application.OnKey Key:="+{F12}"
 
 Application.OnKey Key:="+^{F1}"
 Application.OnKey Key:="+^{F2}"
 Application.OnKey Key:="+^{F3}"
 Application.OnKey Key:="+^{F4}"
 Application.OnKey Key:="+^{F5}"
 Application.OnKey Key:="+^{F6}"
 Application.OnKey Key:="+^{F7}"
 Application.OnKey Key:="+^{F8}"
 Application.OnKey Key:="+^{F9}"
 Application.OnKey Key:="+^{F10}"
 Application.OnKey Key:="+^{F11}"
 Application.OnKey Key:="+^{F12}"
 
 Application.OnKey Key:="+^{F12}"
 Application.OnKey Key:="+%{F9}"
 Application.OnKey Key:="+^{F6}"
 Application.OnKey Key:="+^{F3}"
 Application.OnKey Key:="+%{F2}"
 Application.OnKey Key:="+%{F1}"
End Sub





А вот следующая конструкция:

Код: vbnet
1.
2.
 Application.OnKey Key:="^%{del}", Procedure:=""
 ' Блокировка сочетания клавиш CTRL + ALT + DEL



не работает
...
Рейтинг: 0 / 0
08.01.2012, 08:42
    #37605450
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
DMK67,
Вы еще. как минимум, про Alt-Tab забыли. И про мышку, наверное.
Не все сочетания нажатий клавиш кодируются через OnKey.
Системные можно заблокировать только с помощью API, использую сабклассинг.

Но лучше бы Вы пояснили зачем всё это.
Потому что, например, при редактировании ячейки в Excel все OnKey игнорируются и работают Ctrl-C, Ctrl-C и проч.
...
Рейтинг: 0 / 0
10.01.2012, 19:10
    #37608116
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
Об этом то я и не подумал....

А вот для UserForm отключить Print Screen не удалось... но зато удалось отследить отпускание клавиши и посадить на это событие очистку буфера обмена

Код: vbnet
1.
2.
3.
4.
5.
Private Sub CommandButton001_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeySnapshot Then
OCHISTKA_BOOFERA_OBMENA
End If
End Sub



Проблема состоит только в том что этот код надо повторить для любого контрола имеющего свойство Focus и находящейся на данной форме... Т.е при наличии 100 кнопок и чекбоксов на форме...легче застрелиться...

Никто не пробовал на форме отследить кнопку Windows?
...
Рейтинг: 0 / 0
10.01.2012, 19:33
    #37608146
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
DMK67Проблема состоит только в том что этот код надо повторить для любого контрола имеющего свойство Focus и находящейся на данной форме... Т.е при наличии 100 кнопок и чекбоксов на форме...легче застрелиться...

Для этого существуют классы. Вот простенький пример воплощения: http://spreadsheetpage.com/index.php/site/tip/handle_multiple_userform_buttons_with_one_subroutine/
...
Рейтинг: 0 / 0
10.01.2012, 22:47
    #37608348
DMK67
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
Видно все таки придется лезть в учебники ... пришло время учить классы
...
Рейтинг: 0 / 0
11.01.2012, 00:06
    #37608446
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen
DMK67,

Если есть желание, то - да. А так, там все уже готово и файл для скачивания есть. Нужно только поменять событие, тип контролов, ну и процедуру вызываемую обработчиком :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Назначение комбинаций клавиш. Как назначить макрос клавише Print Screen / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]