Notifications
Clear all

Adicionar caractere ao final de todos os campos

9 Posts
3 Usuários
0 Reactions
1,804 Visualizações
(@corso)
Posts: 0
New Member
Topic starter
 

Boa tarde.
Estou com um problema que não consegui resolver de forma rápida.
Tenho uma planilha com milhares de linhas e milhares de colunas para colocar no meu sistema. Porém o sistema só aceita quando a célula está com ; (Ponto e vírgula) no final, sem considerar as vazias.
Existe um macro que faça isso automaticamente?
Como são muitas colunas e terei esse problema com frequência, o concatenar ficou inviável.

Obrigado!

 
Postado : 01/12/2016 1:54 pm
(@brunoxro)
Posts: 0
New Member
 

Boa tarde corso,

É possível sim, disponibilize uma planilha de exemplo (não precisa ser com os dados originais) que fica mais fácil de ajudar.

att,

 
Postado : 01/12/2016 1:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Você pode usar uma formula!

=A1&";"

Depois arraste para baixo, cole valores!

Att

 
Postado : 01/12/2016 6:34 pm
(@corso)
Posts: 0
New Member
Topic starter
 

Criei um arquivo exemplo Bruno.
Tenho que fazer isso com frequência quase que diária, por isso a fórmula concatenar ou & não é valida.
Utilizo a função Se, se estiver vazio não coloco nada, se tiver preenchido, adiciono o ";" no final.

As minhas planilhas também são muito maiores que esse exemplo que deixei, deixando o SE um pouco lento, por isso acho que a macro seria a melhor opção.

Obrigado pelo ajuda

 
Postado : 02/12/2016 7:18 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não tenho certeza de haver entendido, experimente:

Sub acrescenta_pontoVirgula()
Dim r As Range

For Each r In UsedRange
    If Len(r.Text) > 0 Then
        r.Value = r.Value & ";"
    End If
Next r
End Sub
 
Postado : 02/12/2016 10:27 am
(@corso)
Posts: 0
New Member
Topic starter
 

Olá Reinaldo

Pelo pouco que entendo de programação de macro, parece que a ideia é essa mesmo, mas quando rodo a macro da erro.
Quando clico para depurar, aponta em amarelo For Each r In UsedRange

 
Postado : 02/12/2016 10:53 am
(@brunoxro)
Posts: 0
New Member
 

Boa tarde corso,

Só faltou um detalhe na macro do Reinaldo que é especificar a planilha [Worksheets("Exemplo")].

Sub Acrescenta_PontoVirgula()    
    ThisWorkbook.Activate
    
    Dim R As Range
    
    For Each R In [b]Worksheets("Exemplo")[/b].UsedRange
        If Len(R.Text) > 0 Then
            R.Value = Trim(R.Value) & ";"
        End If
    Next R
    
End Sub

No arquivo em anexo coloquei na macro do Reinaldo para funcionar na planilha chamada "Exemplo", para o seu caso do trabalho você terá que especificar a planilha.
Também coloquei uma adaptação do código que coloca o ; (ponto e vírgula) em todas as planilhas (abas) do arquivo arquivo.

Teste e de retorno.

Obs: Sempre faça uma cópia do arquivo antes de roda a macro, para não perder/alterar os dados caso acabe rodando a macro mais de uma vez.

att,

 
Postado : 02/12/2016 11:51 am
(@corso)
Posts: 0
New Member
Topic starter
 

Olá.
Deu certo.
Peguei seu modelo e alterei um pouco o código

Sub acrescentar_caractere()
    Dim R As Range
    For Each R In Application.Selection
        If Len(R.Text) > 0 Then
            R.Value = Trim(R.Value) & ";"
       End If
    Next R
End Sub

Obrigado!

 
Postado : 02/12/2016 12:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde corso

Como você é novato no fórum não conhece todos os procedimentos do fórum, como por exemplo como agradecer aos colaboradores que te ajudaram.

Para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s

 
Postado : 02/12/2016 1:38 pm