Макрос Excel не выполняется в том порядке, в котором он должен выполняться

Макрос Excel не выполняется в том порядке, в котором он должен выполняться

Я написал макрос, который должен запускать надстройку на каждом рабочем листе. Надстройка — это специфичная надстройка Sage. Я уверен, что sendkeys должны работать с любыми sendkeys, которые я ввожу? Однако он запускает мой тест «добавить текст» на всех листах, возвращается к исходному активному листу, а затем запускает надстройку столько раз, сколько листов — все на активном листе. Мне также нужно что-то добавить, чтобы она пропускала скрытые рабочие листы...? Пожалуйста, помогите.

Sub CountSheets()

Dim ws As Worksheet

Dim starting_ws As Worksheet

Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning

For Each ws In ThisWorkbook.Worksheets



 ws.Activate
                Application.SendKeys "%XRV%O", True
                Application.Wait (Now + #12:00:01 AM#)
                ws.Cells(1, 1) = "Created by Yo Castle 7 "
                Application.Wait (Now + #12:00:01 AM#)

Next


starting_ws.Activate 'activate the worksheet that was originally active


End Sub

решение1

Чтобы запустить маркер только на видимых листах, вы можете добавитьIFсразу после того, как вы начнете свой цикл. Это затем проверит, еслиVisibleсвойство истинно, в противном случае перейдите к следующему.

Итак, ваш код становится таким:

Sub CountSheets()

Dim ws As Worksheet

Dim starting_ws As Worksheet

Set starting_ws = ActiveSheet 'remember which worksheet is active in the beginning

For Each ws In ThisWorkbook.Worksheets

If ws.Visible = true Then

 ws.Activate
                Application.SendKeys "%XRV%O", True
                Application.Wait (Now + #12:00:01 AM#)
                ws.Cells(1, 1) = "Created by Yo Castle 7 "
                Application.Wait (Now + #12:00:01 AM#)
End If

Next


starting_ws.Activate 'activate the worksheet that was originally active


End Sub

Связанный контент