#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