Notifications
Clear all

Fazer quebra de linha separado por palavra e espaço.

11 Posts
4 Usuários
0 Reactions
2,051 Visualizações
(@rodmad85)
Posts: 0
New Member
Topic starter
 

Boa tarde.
Preciso fazer uma quebra de linha em VBA mas que separe quando encontrar o ultimo espaço limitando a quebra no 28º caracter. Eu fiz um código que realiza a quebra no caracter para ficar nos limites da minha planilha, porem preciso fazer essa quebra por palavra e não no meio dela.
Exemplo:
Com o código abaixo fica assim;
desenho de teste desta budeg
a zuada blablabla
----------------
Quero que fique assim;
desenho de teste desta
budega zuada blablabla

Independente da quantidade de caracteres, que quebre antes dos 28.
Grato.

If Len(Des) < 28 Then
            Range("C" & Linha).Value = Des
            Else
            
            Range("C" & Linha).Value = Left(Des, 28)
            
            Range("C" & Linha + 1).Value = Right(Des, Len(Des) - 28)
            Linha = Linha + 1
            End If
 
Postado : 04/07/2016 1:02 pm
(@jonascruz)
Posts: 0
New Member
 

Olá. Consegue postar o arquivo com a rotina?

Ou explicar melhor as variáveis? Não consegui entender o que cada uma faz.

 
Postado : 14/07/2016 10:31 am
(@vbajr10)
Posts: 0
New Member
 

Boa Noite! Espero que ajude.

Sub Teste_Des()
 Dim i, Linha, D As Integer
 Dim Des As String
 
 'vamos supor que você queira começar a transpor na linha 5
 Linha = 5
 
 'utilizando seu texto como Des e levando em consideração que entre cada palavra haja espaço
 Des = "Preciso fazer uma quebra de linha em VBA mas que separe quando encont" & _
 "rar o ultimo espaço limitando a quebra no 28º caracter. Eu fiz um código qu" & _
 "e realiza a quebra no caracter para ficar nos limites da minha planilha, porem pr" & _
 "eciso fazer essa quebra por palavra e não no meio dela."
 
 For i = 1 To Len(Des)
    D = 28
    Do Until Mid(Left(Des, D), D, 1) = " "
      D = D - 1
    Loop
    Linha = Linha + 1
    Range("C" & Linha) = Left(Des, D)
    Des = Right(Des, Len(Des) - D)
    If Not Len(Des) < 28 Then
      i = i + D
    Else
      Linha = Linha + 1
      Range("C" & Linha) = Des
      Exit Sub
    End If
 Next i
 
End Sub
 
Postado : 14/07/2016 7:45 pm
(@vbajr10)
Posts: 0
New Member
 
Sub Teste_Des()
 Dim i, Linha, D As Integer
 Dim Des As String
 
 'vamos supor que você queira começar a transpor na linha 5[/color]

 Linha = 5
 
 'utilizando seu texto como Des e levando em consideração que entre cada palavra haja espaço[/color]
 
Des = "Preciso fazer uma quebra de linha em VBA mas que separe quando encont" & _
 "rar o ultimo espaço limitando a quebra no 28º caracter. Eu fiz um código qu" & _
 "e realiza a quebra no caracter para ficar nos limites da minha planilha, porem pr" & _
 "eciso fazer essa quebra por palavra e não no meio dela."
 
 For i = 1 To Len(Des)
    D = 28
    Do Until Mid(Left(Des, D), D, 1) = " "
      D = D - 1
    Loop
    Linha = Linha + 1
    Range("C" & Linha) = Left(Des, D)
    Des = Right(Des, Len(Des) - D)
    If Not Len(Des) < 28 Then
      i = i + D
    Else
      Linha = Linha + 1
      Range("C" & Linha) = Des
      Exit Sub
    End If
 Next i
 
 
End Sub
 
Postado : 14/07/2016 7:49 pm
(@jonascruz)
Posts: 0
New Member
 

O seu código está executando o que vc pediu. Eu testei aqui, ele quebra antes de 28 caracteres e não separa palavras.
Não entendi o erro do seu código. :shock:

 
Postado : 15/07/2016 2:21 pm
(@vbajr10)
Posts: 0
New Member
 

Boa noite! Acho que vc confundiu a minha resposta com a dúvida inicial.

 
Postado : 15/07/2016 5:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fiz um modelo baseado nas dicas do link abaixo, veja se é isto:

Character Limit per line
https://www.reddit.com/r/excel/comments ... _per_line/

[]s

 
Postado : 15/07/2016 8:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

.
Com coluna auxiliar é mole!! ... Fiz um teste aqui que nem precisou de VBA, e ficou igual ao postado acima!!!
.
Digite os textos na coluna A ... formate a coluna B para "quebra automática" ... ajuste a largura da coluna B como desejar ... B1=A1 ... pronto, é só arrastar!!!
.

 
Postado : 16/07/2016 6:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

.
Como não podia mais editar, e não é recomendável fazer postagens seguidas, esperei alguém falar alguma coisa para poder esclarecer, mas estão demorando demais para esse ansioso aqui kkk
.
Nem precisa da coluna auxiliar ... é só formatar a coluna A para "quebra automática" e ajuste a largura da coluna como desejar ... pronto, é só ir digitando ... ao dar Enter o texto vai ficar com o tamanho desejado!!
.

 
Postado : 16/07/2016 9:01 am
(@jonascruz)
Posts: 0
New Member
 

.
Com coluna auxiliar é mole!! ... Fiz um teste aqui que nem precisou de VBA, e ficou igual ao postado acima!!!
.
Digite os textos na coluna A ... formate a coluna B para "quebra automática" ... ajuste a largura da coluna B como desejar ... B1=A1 ... pronto, é só arrastar!!!
.

Não sei se é essa a solução procurada, mas de qualquer forma, posso dizer que você "pensou fora da caixa". Sua resposta é SUPER SIMPLES e funcional. Parabéns!

 
Postado : 18/07/2016 7:02 am
(@rodmad85)
Posts: 0
New Member
Topic starter
 

Obrigado a todos pelas Informações.
Resolvido.

 
Postado : 01/08/2016 7:18 am