1
resposta

[Projeto] O que pode dar errado no meu código?

Fiz o código de uma forma diferente, mas funcionou perfeitamente, pode futuramente dar algum erro da forma que fiz ? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Option Explicit

   'Ajusta data feito
    Function fnAjustaData(pData As String) As Date
    fnAjustaData = Mid(pData, 9, 2) & "/" & Mid(pData, 6, 2) & "/" & Mid(pData, 1, 4)
    End Function


    
'Rotinha para Data
Sub sbData()



    Dim lcontador As Long
'Inicializa a variavel de linha
    lcontador = 2
        
'Cria uma copia da planilha
    
    ActiveSheet.Copy after:=Sheets(1)
    ActiveSheet.Name = "Revisada-" & Format(Now(), "HH-mm-ss")

    Do While Trim(Cells(lcontador, 4)) <> vbNullString
    
    Cells(lcontador, 5) = Replace(Cells(lcontador, 4), "", "=fnAjustaData(lcontador, 2")

    
    lcontador = lcontador + 1
    
    Loop
    

End Sub
1 resposta

Oii, Felipe! Tudo bem?

Você está no caminho certo, parabéns por explorar outras formas de resolver o problema!

É interessante ficar atento a alguns pontos como:

  • A função fnAjustaData pode falhar se pData não estiver no formato esperado (YYYYMMDD). Se a string for inválida ou vazia, pode resultar em erro de conversão.
  • A lógica do Replace ao chamar fnAjustaData. O interessante seria atribuir o valor processado diretamente.

Um exemplo para auxílio:

Option Explicit

'Ajusta data
Function fnAjustaData(pData As String) As Date
    ' Verifica se a string possui o formato correto antes de converter
    If Len(pData) = 8 And IsNumeric(pData) Then
        fnAjustaData = DateSerial(Mid(pData, 1, 4), Mid(pData, 5, 2), Mid(pData, 7, 2))
    Else
        MsgBox "Erro: Data inválida - " & pData, vbCritical
        fnAjustaData = 0
    End If
End Function

'Rotina para ajuste de data
Sub sbData()

    Dim lcontador As Long
    lcontador = 2 ' Inicializa a variável de linha

    ' Cria uma cópia da planilha
    ActiveSheet.Copy after:=Sheets(1)
    ActiveSheet.Name = "Revisada-" & Format(Now(), "HH-mm-ss")

    ' Loop para ajustar as datas
    Do While Trim(Cells(lcontador, 4).Value) <> ""
        On Error Resume Next
        Cells(lcontador, 5).Value = fnAjustaData(Cells(lcontador, 4).Value)
        On Error GoTo 0
        lcontador = lcontador + 1
    Loop

End Sub

Continue se dedicando aos estudos e a prática.

Bons estudos, Felipe!