Я написал макрос, который должен запускать надстройку на каждом рабочем листе. Надстройка — это специфичная надстройка 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