Скрытый макрос Excel VBA с активного листа на все листы без фокуса

#vba #excel #formula

#vba #excel #формула

Вопрос:

В настоящее время я использую макрос, который автоматически заполняет формулы в зависимости от наличия данных в столбце «A». Макрос работает нормально, только только на текущем выбранном листе (т. Е. На том, на котором находится пользователь).

Кто-нибудь может помочь мне преобразовать для работы со всеми листами в книге?

Формула, как показано ниже:

 Sub FillForms()
Dim WKS As Worksheet

For Each WKS In Worksheets

    Select Case UCase(WKS.Name)
    Case "Sheet1"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet2"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet3"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet4"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet5"
        Range("J3:M3").AutoFill Destination:=Range("J3:M" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "Sheet6"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 3]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 5]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 10]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 15]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case "[Day 20]"
        Range("J3:K3").AutoFill Destination:=Range("J3:K" amp; Cells(Rows.Count, "A").End(xlUp).Row)
    Case Else
         'Code for other sheets
    End Select
Next WKS
End Sub
  

Спасибо

Комментарии:

1. требуется минимальное усилие, SO не является сервисом для написания кода. Смотрите справочный центр!

2. Почему UCase ? Case "Sheet1" никогда не будет достигнут…

3. @mehow нет необходимости понижать голос. OP попытался написать некоторый код, он работает определенным образом, но не так, как ожидалось, они попросили помощи о том, почему он не работает. Я думаю, что это прекрасный пример вопроса. OP не просит нас писать его для них, они обратились за помощью, и CTS-Link предоставил прекрасный пример (где он / она не написал для них весь код)

4. @SilverShotBee Я не проголосовал против, просто проголосовал за закрытие, поскольку неясно, что запрашивает OP (для меня он просит написать дополнительный код поверх его текущего кода без каких-либо усилий)

Ответ №1:

Как насчет

 WKS.Range("J3:M3").AutoFill ...
  

вместо

 Range("J3:M3").AutoFill ...
  

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

Последующее редактирование: пожалуйста, обратите внимание, что Destination ссылки аргумента, возможно, потребуется обновить также на указанный лист вместо активного.

Комментарии:

1. Это лучший способ приблизиться к этому! 1