Já tem um comando pra excluir as datas vazias no SQL "IsNull(Data_Pagamento) = False"
Pra otimizar a atualização + formatação do histórico eu colocaria um loop de formatação direto num loop pra descarregar o RecordSet.
É mais rápido que um loop normal linha a linha da planilha. Fiz o teste aqui e demorou 1 segundo pra atualizar + formatar.
Sub AtualizaHistorico()
Call TurnOffStuff
Dim ConexaoPlan As New ADODB.Connection
Dim rsConsulta As New ADODB.Recordset
Dim Sql As String, i As Double
Dim tempo As Variant
tempo = Now
ConexaoPlan.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0;"
ConexaoPlan.Open
Sql = "Select * From [Controle$] Where IsNull(Data_Pagamento) = False"
rsConsulta.Open Sql, ConexaoPlan, adOpenKeyset, adLockOptimistic
i = shHistorico.Cells(Rows.Count, 1).End(xlUp).Row + 1
Do While Not rsConsulta.EOF
shHistorico.Cells(i, 1) = rsConsulta(0)
shHistorico.Cells(i, 2) = rsConsulta(1)
shHistorico.Cells(i, 3) = rsConsulta(2)
shHistorico.Cells(i, 4) = rsConsulta(3)
shHistorico.Cells(i, 5) = rsConsulta(4)
shHistorico.Cells(i, 6) = rsConsulta(5)
shHistorico.Cells(i, 7) = rsConsulta(6)
shHistorico.Cells(i, 8) = rsConsulta(7)
shHistorico.Cells(i, 9) = rsConsulta(8)
shHistorico.Cells(i, 10) = rsConsulta(9)
shHistorico.Cells(i, 11) = rsConsulta(10)
shHistorico.Cells(i, 12) = rsConsulta(11)
shHistorico.Cells(i, 13) = rsConsulta(12)
shHistorico.Cells(i, 14) = rsConsulta(13)
shHistorico.Cells(i, 15) = rsConsulta(14)
shHistorico.Cells(i, 16) = CInt(rsConsulta(15))
shHistorico.Cells(i, 17) = rsConsulta(16)
shHistorico.Cells(i, 18) = CDbl(rsConsulta(17))
shHistorico.Cells(i, 19) = CDbl(rsConsulta(18))
shHistorico.Cells(i, 20) = CDbl(rsConsulta(19))
shHistorico.Cells(i, 21) = CDbl(rsConsulta(20))
shHistorico.Cells(i, 22) = CDbl(rsConsulta(21))
shHistorico.Cells(i, 23) = CInt(rsConsulta(22))
shHistorico.Cells(i, 24) = rsConsulta(23)
shHistorico.Cells(i, 25) = CInt(rsConsulta(24))
i = i + 1
rsConsulta.MoveNext
Loop
shHistorico.Range("T:T,U:U").Select
Selection.Style = "Percent"
Selection.NumberFormat = "0.0%"
rsConsulta.Close
ConexaoPlan.Close
MsgBox "Dados atualizados com sucesso em " & Format(Now - tempo, "HH:MM:SS"), vbInformation, "Aviso."
[A2].Select
Call TurnOnStuff
End Sub
Postado : 27/12/2020 6:50 pm