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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2009, 10:26   #1
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию Вопрос по Application.Onkey!!!

Всем Привет!
Подскажите, пожалуйста, возможно ли задать Application.Onkey следующий параметр: при нажати ENTER на NumPad чтобы данные из textbox данной формы добавлялись в listbox другой формы???
Подробнее в файле....
Заранее спасибо!

P. S. И еще вопрос: как запретить при нажатии кнопки Добавить добавление значения, которой уже было добавлено???
В справке Microsoft нашел такое:
Private Sub CommandButton2_Click()
'Ensure ListBox contains list items
If ListBox2.ListCount >= 1 Then
'If no selection, choose last list item.
If ListBox2.ListIndex = -1 Then
ListBox2.ListIndex = _
ListBox2.ListCount - 1
End If
ListBox2.RemoveItem (ListBox2.ListIndex)
End If
Label1.Caption = ListBox2.ListCount
End Sub

То есть просто удаляем элемент из списка... Вариант устраивает. Но всё-равно хотелось бы посмотреть как всё-таки запретить ввод значений!
Вложения
Тип файла: rar OnKey.rar (14.7 Кб, 15 просмотров)
Чтобы правильно задать вопрос, надо знать большую часть ответа.

Последний раз редактировалось Klim Bassenger; 07.07.2009 в 10:59. Причина: На второй вопрос нашел в спраке VBA один из вариантов решения...
Klim Bassenger вне форума Ответить с цитированием
Старый 07.07.2009, 10:59   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Application.Onkey здесь вряд ли поможет.

Во-первых, без использования WinAPI у Вас вряд ли получится отличить нажатие основной клавиши Enter от расположенной на NumPad.

Если без разницы, какая из клавиш Enter нажата, то можно использовать примерно такой код:

Код:
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then CommandButton1_Click
End Sub
Цитата:
как запретить при нажатии кнопки Добавить добавление значения, которой уже было добавлено?
Запретить добавление значения куда? На лист, или в одно из полей формы?
EducatedFool вне форума Ответить с цитированием
Старый 07.07.2009, 11:06   #3
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
If KeyCode = 13 Then
Думаю - это то, что нужно... А где посмотреть все KeyCode ???
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Старый 07.07.2009, 11:07   #4
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию

Запретить добавление значения куда? На лист, или в одно из полей формы?[/QUOTE]
Запретить добавление элемента в листбокс.
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Старый 07.07.2009, 11:22   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А где посмотреть все KeyCode ???
Проще посмотреть коды нужных клавиш, используя такой код:

Код:
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    MsgBox "KeyCode " & KeyCode
End Sub

Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    MsgBox "KeyAscii " & KeyAscii
End Sub
Выделите одно из значений в ListBox1, и понажимайте различные клавиши.
Обратите внимание - KeyAscii для цифр с основной и дополнительной части клавиатуры (NumPad) одинаковый, а KeyCode - разный.

Впрочем, можно попробовать использовать и Application.Onkey
Только назначать макрос нужной кнопке при запуске формы, и отменять назначение макроса при закрытии формы.
Иначе после закрытия формы и нажатия Enter на листе макрос будет мешать работе с ячейками.
EducatedFool вне форума Ответить с цитированием
Старый 07.07.2009, 11:30   #6
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию

Впрочем, можно попробовать использовать и Application.Onkey
Только назначать макрос нужной кнопке при запуске формы, и отменять назначение макроса при закрытии формы.
Иначе после закрытия формы и нажатия Enter на листе макрос будет мешать работе с ячейками.[/QUOTE]

Я вроде так и пытался сделать, но ничего не получилось (
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
application run *Devil* Общие вопросы Delphi 5 12.12.2012 21:30
Application eror beemoto Работа с сетью в Delphi 5 17.04.2009 20:25
application.ProcessMessages; UROKSAN Общие вопросы Delphi 2 10.04.2008 13:32
Application.terminate GAGARIN-NEW Общие вопросы Delphi 11 09.03.2008 19:32