У меня есть небольшая пользовательская форма в качестве интерфейса для различных функций VBA. Я обычно использую их для автоматизации документов, например, для вставки таблиц, отформатированных определенным образом, и т. д.
Это прекрасно работает, но я хотел бы иметь рабочий процесс, в котором я помещаю курсор в нужное место, нажимаю функцию и можно продолжать писать. В настоящее время форма всегда сохраняет фокус после нажатия. Форма не модальная.
Итак, на изображении ниже я сосредоточился на (1), но хочу сосредоточиться на (2) после завершения формы VBA.
Я попытался закончить макрос с помощью ActiveDocument.ActiveWindow.SetFocus
, что не имеет значения.
Я мог бы, конечно, закрывать форму после каждого макроса, но я использую его часто, поэтому это было бы менее предпочтительно.
Не ответ на ваш вопрос, но, возможно, улучшение вашего рабочего процесса: возможно, было бы целесообразно создать пользовательскую ленту или пользовательское контекстное меню и разместить там функции вместо использования пользовательской формы...
@Ike часть формы - это ввод некоторых переменных, которые, я думаю, не поддерживаются лентами. В противном случае вы правы.
@FaneDuru сделай это ответом, и я приму его. Ваше решение сработало. Спасибо.
конечно - вы можете иметь входные данные (поле редактирования, раскрывающийся список) на ленте (здесь docs.microsoft.com/en-us/openspecs/office_standards/ms-customui/…). Но вы правы - это зависит от количества данных, если это действительно лучший пользовательский интерфейс.
Пожалуйста, попробуйте один из двух способов. Оба должны работать:
Word.Application.Activate
AppActivate ActiveDocument.ActiveWindow.Caption
Пожалуйста, используйте
Word.Application.Activate
. Он должен делать то, что вам нужно...