Команды фокусировки не работают при автоматическом выполнении событий этой рабочей книги, которые были вызваны в формате xlsx? - PullRequest
0 голосов
/ 11 апреля 2019

Когда я закрываю свою книгу, она вызывает SubClose Sub, которая выбирает А1 на всех листах, кроме одного, который вместо этого выбирает самый последний.

По какой-то причине, когда другая книга закрывает эту книгу,Команды активации просто игнорируются, код запускает строку ... но не меняет фокус.который сразу после этого выбирает диапазон вне пределов, так как фокус не на том листе.

У меня есть «ведущий» ковчег Excel, который используется для автоматического открытия нескольких других листов Excel.и запустить их код.проблема в том, что они настроены особым образом, поэтому при закрытии он запускает функцию (Workbook_BeforeClose), которая выбирает A1 на всех листах, кроме одного с именем "Arkiv", и вместо этого выбирает самую последнюю строку.

Проблема возникает с тех пор, как thisworkbook.activate и thisworkbook.sheets ("arkiv"). Activate просто игнорируется, если запускается функцией события, если она была запущена иначе.закрыто другим кодом рабочей книги.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.Saved Then SaveStatus = vbYes Else SaveStatus = vbNo
    If SaveStatus = vbNo Then SaveStatus = MsgBox("Do you want to save before closing the workbook?", vbYesNoCancel, "Save Prompt")
    If SaveStatus = 2 Then Cancel = True: Exit Sub
    If SaveStatus = vbYes Then
    ThisWorkbook.Activate
    Application.ScreenUpdating = False
    For Each CloseSheet In ThisWorkbook.Sheets
        CloseSheet.Activate 'activate it so it's selectable, and active
        Range("A1").Select
        RTS = 1 'Row To Scroll - Top if sheet is not Arkiv
        If CloseSheet.Name = "Arkiv" Then
            RTS = CloseSheet.Cells(2, 1).End(xlDown).Row
            CloseSheet.Cells(RTS, 2).Select 'ERROR HERE
            CloseSheet.Cells(RTS, 1).Select 'ERROR HERE
            RTS = RTS - 10
        End If
        ActiveWindow.ScrollRow = RTS 'Scroll to the top
        ActiveWindow.ScrollColumn = 1 'Scroll to the left
    Next
    ThisWorkbook.Sheets(1).Select
    ThisWorkbook.Save
    End If
    ThisWorkbook.Saved = True
End Sub

Я ожидаю, что Рабочая книга будет выбрана, а затем будут выбраны все листы один за другим, но фокус не меняется вообще.

1 Ответ

0 голосов
/ 12 апреля 2019

Я нашел проблему и какое-то решение ... Я полностью упустил написать это, но рабочая книга, которая вызывает событие, сохраняется как файл .xlsx перед закрытием (так как я не могу сохранить и закрытьв то же время), что по какой-то причине означает изменение выделения или фокуса с помощью макросов, которые все еще остаются в модуле кода до закрытия, не работает.

Мое исправление: я использую «On Error Resume Next»до этого в случае.(ofc. с "on error goto 0" после выбора) и сделать повторный выбор отдельной функцией, чтобы я мог вызывать ее внешне перед сохранением макроса.

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

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