Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Событие по нажатию клавиш 
:(
    Опции темы
Веди
Дата 1.12.2016, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.11.2016

Репутация: нет
Всего: нет



привет, друзья! в Excel необходимо выполнять бесконечную программу: Code1, после "пробела", Code2 и т.д., а если нажимает "Esc",
то выход из программы:

Код

Sub mainProg()
  do
    '...Code1

    '...Пауза
    if нажать пробел then продолжить Code2
    if нажать Esc then Exit do
    '...Cod2
  loop
End Sub


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

помогите пожалуйста разобраться.

PM MAIL   Вверх
kapbepucm
Дата 16.1.2017, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 3
Всего: 12



Код
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 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 Const WM_CHAR As Long = &H102
Private Const WM_KEYDOWN As Long = &H100
Private Const PM_REMOVE As Long = &H1
Private Const PM_NOYIELD As Long = &H2
Public Function ReadKeyboardBuffer() As Long
  Dim msgMessage As MSG
  Dim hWnd As Long
  Dim lResult As Long
  hWnd = 0
  lResult = PeekMessage(msgMessage, hWnd, WM_KEYDOWN, WM_KEYDOWN, PM_REMOVE + PM_NOYIELD)
  If lResult <> 0 Then
    lResult = TranslateMessage(msgMessage)
    lResult = PeekMessage(msgMessage, hWnd, WM_CHAR, WM_CHAR, PM_REMOVE + PM_NOYIELD)
    ReadKeyboardBuffer = msgMessage.wParam
  End If
End Function
Sub mainProg()
'...
  Select Case ReadKeyboardBuffer
  Case 27:
    '...
  Case 32:
    '...
  Case Else
  End Select
'...
End Sub


Это сообщение отредактировал(а) kapbepucm - 16.1.2017, 14:09


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.1136 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.