Página 1 de 1
Otimizar macro
Enviado: 24 Jun 2020 às 16:17
por Diego100ges
Boa tarde pessoal,
Fiz essa macro (em anexo) e está servindo bem, porém acho que daria pra melhorar um pouco o código.
sugestões?
desde já, obrigado!
Re: Otimizar macro
Enviado: 26 Jun 2020 às 10:26
por mucascosta
Talvez possa diminuir o tem de execução da macro adicionando no inicio Application.Calculation = xlCalculationManual no final Application.Calculation = xlCalculationAutomatic
Sub TesteVelocidade()
Dim Tempo As Double
Tempo = Now()
'SUA MACRO
MsgBox Now() - Tempo
End Sub
Re: Otimizar macro
Enviado: 26 Jun 2020 às 21:17
por osvaldomp
Experimente:
Código: Selecionar todosSub PontaOuForaPonta()
Dim LR As Long
Application.ScreenUpdating = False
With ActiveSheet
.AutoFilterMode = False
LR = .Cells(Rows.Count, 1).End(3).Row
.Range("J5:K" & LR) = ""
.Range("K5:K" & LR).FormulaLocal = "=DIATRABALHO(B5-1;1;R$1:R$7)=B5"
.Range("A4:K4").AutoFilter 3, ">=18", xlAnd, "<21"
.Range("A4:K4").AutoFilter 11, "VERDADEIRO"
.Range("J5:J" & LR) = "Ponta"
.AutoFilterMode = False
.Range("J5:J" & LR).SpecialCells(xlBlanks).Value = "Fora Ponta"
.[K:K] = ""
End With
End Sub
Coloque a lista dos feriados em
R1:R7.
Otimizar macro
Enviado: 09 Jul 2020 às 10:26
por Diego100ges
@osvaldomp ficou incrivelmente mais rápido, ótimo mesmo, muito obrigado!
osvaldomp escreveu:Experimente:
Código: Selecionar todosSub PontaOuForaPonta()
Dim LR As Long
Application.ScreenUpdating = False
With ActiveSheet
.AutoFilterMode = False
LR = .Cells(Rows.Count, 1).End(3).Row
.Range("J5:K" & LR) = ""
.Range("K5:K" & LR).FormulaLocal = "=DIATRABALHO(B5-1;1;R$1:R$7)=B5"
.Range("A4:K4").AutoFilter 3, ">=18", xlAnd, "<21"
.Range("A4:K4").AutoFilter 11, "VERDADEIRO"
.Range("J5:J" & LR) = "Ponta"
.AutoFilterMode = False
.Range("J5:J" & LR).SpecialCells(xlBlanks).Value = "Fora Ponta"
.[K:K] = ""
End With
End Sub
Coloque a lista dos feriados em R1:R7.