Активировать книгу, содержащую код - PullRequest
0 голосов
/ 29 мая 2019

Попытка активировать активную книгу после макросов UNAPP, но (если открыто много рабочих книг), активирующая всегда последнюю открытую книгу и каждый раз переключение (с последней рабочей книги на Activeworkbook), мне нужно ВСЕГДА активировать рабочую книгу, из которой вызывается код.

Sub App()
    With Application
      .ScreenUpdating = False
      .DisplayAlerts = False
      .EnableEvents = False
      .Calculation = xlManual
      .Visible = False
    End With
End Sub

Sub unApp()
    With Application
      .ScreenUpdating = True
      .DisplayAlerts = True
      .EnableEvents = True
      .Calculation = xlCalculationAutomatic
      .Visible = True
    End With
End Sub

Sub testActivate()
    Set wbT = ThisWorkbook
    App
    unApp
    wbT.Activate
End Sub

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Application влияет на все книги в текущем приложении, поэтому я предполагаю, что у вас открыто несколько приложений и вы хотите сослаться на ту, в которой выполняется код?

Если это так, вы можете использовать

With ThisWorkbook.Application

(что в любом случае является хорошей практикой)

0 голосов
/ 29 мая 2019

Как правило, не рекомендуется использовать .Activate.На мой взгляд, лучший способ косвенного использования рабочих книг - это установить рабочие книги в переменные, а затем использовать эту переменную в With Statement.

Option Explicit

Sub test()

    Dim wb1 As Workbook, wb2 As Workbook

    Set wb1 = Workbooks("Book1")
    Set wb2 = Workbooks("Book2")

    With wb2
        'Close is just an example
        .Close
    End With

End Sub
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...