Первая I вас раздражает, повторяя, что вы получили от MSDN;). Затем я опишу, какие способы я нашел, чтобы вывести окна на передний план.
Я тоже не вижу необходимости делать то, что вы просите. Вы хотите отлаживать свой код, но для отладки я считаю необходимым (большую часть времени) видеть код во время его выполнения. Помещение окон бок о бок и использование F8 для перехода через код кажется лучшим вариантом.
Для нескольких сценариев я могу думать, что этого достаточно, чтобы запустить макрос из окна Excel (Alt + F8).
Теперь для фактического ответа: я не знаю о других версиях, но для меня просто активация окна не приносит его на передний план (Управление 2016, Windows 10). Я нашел следующую работу:
Использования AppActivate (вероятно, самый лучший метод, хотя я не хотел указать окна по имени)
AppActivate Application.Caption
Отправить ключи Alt
+ F11
:
Application.SendKeys "%{F11}"
однако вы, вероятно, должны проверить, находится ли окно excel спереди (или вы можете вернуть VBE). Единственный способ, которым я нашел использует систему API:
'on top of your module
Declare Function GetForegroundWindow Lib "user32"() As Long
'in your sub
If GetForegroundWindow = Application.VBE.mainwindow.hwnd Then Application.SendKeys "%{F11}"
Использование системной функции
'on top of your module
Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'in your sub
SetForegroundWindow ThisWorkbook.Windows(1).hwnd
Установка видимость ложной и истинной снова и приносит его на фронт для меня
ThisWorkbook.Windows(1).Visible = False
ThisWorkbook.Windows(1).Visible = True
Я вижу, что вы говорите, не уверен, что это возможно. Первоначально я предлагал метод «Активировать», но это не приведет к появлению окна Excel.Можете ли вы запустить метод из формы кнопки, которая фактически будет делать то же самое (и чередовать листы, если нужно использовать метод «Активировать») – AER