Range ("D5").Select
ActiveCell.Resize(1, 25).Select
SendKeys ("%y1"), True 'Alt+Y1
SendKeys ("%y2"), True 'Alt+Y2, Activates third part add-in
SendKeys ("~"), True 'Enter, initiates the merge add-in function

Range ("D6").Select
ActiveCell.Resize(1, 25).Select
SendKeys ("%y1"), True 'Alt+Y1
SendKeys ("%y2"), True 'Alt+Y2, Activates third part add-in
SendKeys ("~"), True 'Enter, initiates the merge add-in function

Продолжал выбирать каждую ячейку в столбце D до D40 ...

Каждый раз, когда я запускаю код SendKeys, VBA запускает только последнюю команду в последовательности. Я пытаюсь использовать wait или sleep, но макрос просто задерживает указанный период времени, а затем выполняет только последний набор операций. Мне нужно, чтобы это работало линейно (в порядке желаемых операций).

Как сделать так, чтобы набор клавиш происходил линейно и последовательно?

1 ответ1

1

Используйте DoEvents

Range ("D5").Select
ActiveCell.Resize(1, 25).Select
DoEvents
SendKeys ("%y1"), True 'Alt+Y1
DoEvents
SendKeys ("%y2"), True 'Alt+Y2, Activates third part add-in
DoEvents
SendKeys ("~"), True 'Enter, initiates the merge add-in function
DoEvents

Range ("D6").Select
ActiveCell.Resize(1, 25).Select
DoEvents
SendKeys ("%y1"), True 'Alt+Y1
DoEvents
SendKeys ("%y2"), True 'Alt+Y2, Activates third part add-in
DoEvents
SendKeys ("~"), True 'Enter, 
DoEvents

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .