2016-07-21 2 views
0

Мне нужно ввести несколько символов в текстовое поле ActiveX в PowerPoint до того, как начнется марко. Текущий макрос срабатывает по мере ввода каждого символа.Как ввести несколько символов в TextBox1_Change

Private Sub TextBox1_Change() 
    IF TextBox1.Value = "18" then 
     MsgBox "You have entered 18" 
    End If 
End Sub 

Предыдущие попытки потерпели неудачу, так что я должен был добавить CommandButton, что будет инициировать действия после того, как все символы были набраны в текстовом поле, однако он является громоздким для ввода и нажмите кнопку для выполнения задач. Поэтому было бы еще лучше, если бы макрос был запущен после нажатия клавиши Enter/Return после ввода необходимых данных. Я попытался KeyPress и KeyDown и то есть

Private Sub TextBox1_KeyDown(KeyCode As Integer, Shift As Integer) 
    If KeyCode = vbKeyReturn Then 
     MsgBox "hello" 
    End If 
End Sub 

, но этот код дал мне ошибку компиляции:

Procedure declaration does not match description of event or procedure having the same name.

ответ

0

Возможно событие LostFocus будет более полезным. Предполагая, что TextBox1 находится на слайде 1:

Private Sub TextBox1_LostFocus() 
    MsgBox ActivePresentation.Slides(1).Shapes("TextBox1").OLEFormat.Object.Text 
End Sub 
+0

Я вставил ваш код и обновил правильный номер слайда. Хотя код действительно позволяет мне вводить несколько символов, он не запускался, когда я нажимал Enter, только когда я нажимаю в неиспользуемом пространстве презентации (что было бы лучше, если бы я нажал на кнопку команды, чтобы ввести/отправить данные), и когда я нажал Esc, но клавиша Esc закрыла презентацию после отображения окна сообщения. – Rgremer

+0

Событие LostFocus не срабатывает, пока вы не выйдете из текстового поля. И кажется, что текстовое поле «проглатывает» клавишу «Ввод» при нажатии на нее; событие изменения не срабатывает, поэтому я не уверен, как вы можете его заманить. –