2017-01-18 4 views
2

Я пытаюсь программным нажмите клавишу ввод раз значение было установлено в конкретную ячейку:Программных нажмите ввод с Excel VBA

Private Sub TextBox1_Change() 
    If TextBox1.Text = "ALC Test" Then 
     Range("$F$2").Value = "17" 
     ActiveWorkbook.RefreshAll 
    End If 
    If TextBox1.Text = "ALC Prod" Then 
     Range("$F$2").Value = "54" 
     ActiveWorkbook.RefreshAll 
    End If 
    If TextBox1.Text = "" Then 
     Range("$F$2").Value = "" 
     ActiveWorkbook.RefreshAll 
    End If 
End Sub 

Так что я могу вызвать в превосходил обновление моего стола Но что не в шов, чтобы работать правильно

enter image description here

+0

Ваш вопрос на самом деле не нажимает клавишу ввода, но вы хотите, чтобы excel пересчитывал (обновлял) вашу таблицу после обновления значения с помощью vba. Это верно? – davejal

+0

@ davejal Да, это –

+0

попробуйте 'ActiveWorkbook.RefreshAll', как я отредактировал в своем ответе – davejal

ответ

2

Использование sendkeys правильно.


Если вы просто хотите пересчитывать (обновить) данные таблицы, можно сделать следующее:

Private Sub TextBox1_Change() 

If TextBox1.Text = "ALC Test" Then 
     Range("$F$2").Value = "17" 
     Range("$F$2").Select 
     Application.SendKeys("~") 

В вашей ситуации, вам необходимо выбрать ячейку (который содержит параметры) перед команда ввода отправляется в excel.

+0

Спасибо за ваш ответ Да, я сделал это, но как-то отлично освежил не вызвано, чтобы обновить мою таблицу –

+0

Я отредактировал свой ответ, в зависимости от того, что вы на самом деле хотите достичь, есть больше вариантов – davejal

+0

Прошу прощения, если это было непонятно из исходного вопроса: я печатаю в своем текстовом поле, например, «ALC Test », то в ячейке F2 появится номер 17. Ячейка F2 была задана как поле параметра на том, что моя таблица обновляет часть обновления поля, не работает, я думаю, что это не срабатывает, потому что нет ввода ввода, когда я делаю это как это вручную, он отлично работает –

0

Что вы делаете это: изменить значение, а затем нажмите кнопку «войти», который не имеет никакого эффекта.

Использование

calculate 

или

activesheet.calculate 

отредактирован, чтобы понять:

Private Sub TextBox1_Change() 
If TextBox1.Text = "ALC Test" Then 
    Range("$F$2").Value = "17" 
    calculate 
+0

Эй, большое спасибо за ваш ответ. Можете ли вы дать мне немного больше контекста, где я собираюсь установить это? или вместо чего? –

+0

Просто замените вашу линию sendkey одним из них :) – Pierre

+0

как это приложение. Калькуляция («~») –

Смежные вопросы