Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Troquei um pouco o Cells e deu certo!

O meu código ficou ligeiramente diferente. Criei uma variável para ir alterando a coluna e não ficar repetindo o "Cells".

Option Explicit

Sub MeuLimpaDados()

    Dim Linha As Long
    Dim Coluna As Long
    Dim celt As Range
    
    Sheets(1).Copy After:=Sheets(1)
    ActiveSheet.Name = "Revisado em " & Format(Now(), "dd-mm HH.mm")
      
    For Linha = 2 To 10
    
        Set celt = Cells(Linha, 1)
             If Left(celt.Value, 5) <> "byte_" Then
                   celt.Value = "byte_" & celt.Value
               End If
        Set celt = Cells(Linha, 2)
            celt.Value = Replace(celt.Value, "$", "")
            celt.Value = Replace(celt.Value, "*", "")
            celt.Value = Replace(celt.Value, "%", "")
            celt.Value = Replace(celt.Value, "&", "")
        Set celt = Cells(Linha, 3)
            celt.Value = Replace(celt.Value, ".", "")
            celt.Value = Replace(celt.Value, ",", ".")
            celt.Value = Replace(celt.Value, "R$", "")
            celt.Style = "currency"
        Set celt = Cells(Linha, 4)
            celt.Value = Trim(Cells(Linha, 1) & "@bytebank.com.br")
    Next
    
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$10"), , xlYes).Name = _
        "Tabela " & Format(Now, "HH-mm")

End Sub

Estou gostando bastante de aprender o conteúdo. Obrigado.

Depois descobri que daria para fazer um For dentro de outro For. Só gostaria de saber como exatamente sem alterar tanto a estrutura.

1 resposta
solução!

Olá Caio, tudo bem?

Que ótimo saber que você está gostando do conteúdo e já está aplicando o que aprendeu! Sobre a sua dúvida em relação a usar um For dentro de outro For, isso é conhecido como "loop aninhado". No seu caso, você pode usá-lo para iterar sobre linhas e colunas de uma forma mais organizada.

Você tentar estruturar o seu código assim:

Option Explicit

Sub MeuLimpaDados()

    Dim Linha As Long
    Dim Coluna As Long
    Dim celt As Range
    Dim Colunas As Variant
    Colunas = Array(1, 2, 3, 4) ' Array com as colunas que você quer modificar
    
    Sheets(1).Copy After:=Sheets(1)
    ActiveSheet.Name = "Revisado em " & Format(Now(), "dd-mm HH.mm")
    
    For Linha = 2 To 10
        For Each Coluna In Colunas
            Set celt = Cells(Linha, Coluna)
            Select Case Coluna
                Case 1
                    If Left(celt.Value, 5) <> "byte_" Then
                        celt.Value = "byte_" & celt.Value
                    End If
                Case 2
                    celt.Value = Replace(celt.Value, "$", "")
                    celt.Value = Replace(celt.Value, "*", "")
                    celt.Value = Replace(celt.Value, "%", "")
                    celt.Value = Replace(celt.Value, "&", "")
                Case 3
                    celt.Value = Replace(celt.Value, ".", "")
                    celt.Value = Replace(celt.Value, ",", ".")
                    celt.Value = Replace(celt.Value, "R$", "")
                    celt.Style = "currency"
                Case 4
                    celt.Value = Trim(Cells(Linha, 1) & "@bytebank.com.br")
            End Select
        Next Coluna
    Next Linha
    
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$D$10"), , xlYes).Name = _
        "Tabela " & Format(Now, "HH-mm")

End Sub

Neste exemplo o array Colunas contém os números das colunas que você deseja processar. Para cada linha, o código passa por cada coluna especificada no array e aplica as modificações necessárias usando um Select Case .

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!