|
Тема
|
натиснат клавиш
|
|
Автор |
nepukis (минаващ) |
Публикувано | 24.04.15 11:38 |
|
някой би ли ми казал как може да се следи дали е натиснат даден клавиш на клавиатурата(например стрелка нагоре) по време на изпълнение на макрос
например имаме някакъв дълъг цикъл и искам да го спра при натискане на точно определен клавиш (без Esc)
четох в хелпа, ама нищо не ми стана ясно
Редактирано от nepukis на 24.04.15 11:40.
| |
|
Не даваш информация каква ти е операционната система и какви ти са електронните таблици.
Понеже повечето от потребителите, под "електронна таблица" разбират ЕКСЕЛ, предполагам , че си с ЕКСЕЛ и някакъв WINDOWS (естественно).
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Const VK_CONTROL = &H11, VK_LEFT = &H25, VK_UP = &H26, VK_RIGHT = &H27, VK_DOWN = &H28
Const VK_0 = &H30, VK_1 = &H31, VK_2 = &H32, VK_3 = &H33, VK_4 = &H34
Const VK_5 = &H35, VK_6 = &H36, VK_7 = &H37, VK_8 = &H38, VK_9 = &H39
Const VK_A = &H41, VK_B = &H42, VK_C = &H43, VK_D = &H44, VK_E = &H45
Const VK_F = &H46, VK_G = &H47, VK_H = &H48, VK_I = &H49, VK_J = &H4A
Const VK_K = &H4B, VK_L = &H4C, VK_M = &H4D, VK_N = &H4E, VK_O = &H4F
Const VK_P = &H50, VK_Q = &H51, VK_R = &H52, VK_S = &H53, VK_T = &H54
Const VK_U = &H55, VK_V = &H56, VK_W = &H57, VK_X = &H58, VK_Y = &H59, VK_Z = &H5A
Const VK_ENTER = &HD
Sub Test()
Dim I As Long
For I = 1 To 2000000000
'pravi6 ne6to
If GetAsyncKeyState(VK_UP) <> 0 Then
MsgBox "Natisna strelkata!"
Exit Sub
End If
Next
End Sub
при декларирането на клавишите, можеш да оставиш само тоя дето искаш (ако нямаш място на теливизора де). примерът е с продължителен цикъл. При тебе не знам къде какво и как. Така че сам реши , де ще я ръгнеш проверката. А защо не на няколко места да я има?
При мене на WIN XP SP3 + ОФИС ПАКЕТ 2003 на този комп - върви. При тебе - не зная.
| |
|
Правилно си предположил за ЕКСЕЛА и WINDOWS. И тръгна, за което благодаря. Но понеже не съм от хората папагали, дето само копират без да знаят защо и как стават нещата ще помоля за малко инфо при дефиниране на функцията.
това (Lib "User32.dll") предполагам, че е някаква библиотека с кодове... или какво?
и например (VK_CONTROL = &H11) какво значи? . по точно това &H11 което присвояваме на клавиша "контрол" от де се взема
| |
|
1.user32.dll - библиотека на бозата. За това те питах за операционната система. Инфо да нея
2.За функцията, дето се ползва от тази библиотека, инфо
3.За константите - това е за удобство. Можеш вместо константи, да пишеш числа. &H11 - това е ascci код 11 - шестнадесетично (десетично-17) - демек стрелка наляво. Инфо за таблицата в десетичен вид например:
| |
|
мерси
| |
|
| |
|
|
|
|