none
TRIM() ou ARRUMAR() tem algum BUG ? RRS feed

  • Pergunta

  • Pesquisei bastante e não encontrei relatos sobre algum "bug" no funcionamento da função TRIM() ou ARRUMAR() na utilização com o MS Excel ou VBA.

    Supondo o texto "     teste     teste     teste     " em uma planilha, célula A1 por exemplo e em A2 a fórmula =ARRUMAR(A1)

    o resultado é justamente o esperado: "teste teste teste"

    Caso eu venha a gerar uma macro a partir da fórmula em A2, teríamos:

        Range("A2").Select
        ActiveCell.FormulaR1C1 = "=TRIM(R[-1]C)"

    E o mesmo resultado (ok)! De outra forma agora... transferindo para uma variável:

        Range("A2").Select
        teste = Trim(Cells(1, 1).Value)
        ActiveCell.FormulaR1C1 = teste

    É quase o mesmo resultado, mas não é: "teste     teste     teste"

    Funciona o "LTRIM" e o "RTRIM", mas não a parte dos espaços excedentes entre as palavras...

    Como proceder?
    Pois estou no meio de uma programação utilizando o TRIM e desejo eliminar os espaços excedentes entre as palavras

    :(

    quarta-feira, 13 de março de 2019 18:47

Respostas

  • Eu já tinha visto isso antes, em alguns casos a função nativa Trim não funcionava, então passei a utilizar assim:

      Dim texto As String
      texto = "   teste     teste     teste   "
      Debug.Print "Usando Trim:     " & Trim(texto)
      Debug.Print "Usando $Trim:    " & Trim$(texto)
      Debug.Print "Usando A.W.Trim: " & Application.WorksheetFunction.Trim(texto)

    Resultado:

    Abraço!


    Natan


    • Editado 'Natan Silva quarta-feira, 13 de março de 2019 19:53
    • Marcado como Resposta MLRamos quarta-feira, 13 de março de 2019 20:08
    quarta-feira, 13 de março de 2019 19:52

Todas as Respostas

  • Eu já tinha visto isso antes, em alguns casos a função nativa Trim não funcionava, então passei a utilizar assim:

      Dim texto As String
      texto = "   teste     teste     teste   "
      Debug.Print "Usando Trim:     " & Trim(texto)
      Debug.Print "Usando $Trim:    " & Trim$(texto)
      Debug.Print "Usando A.W.Trim: " & Application.WorksheetFunction.Trim(texto)

    Resultado:

    Abraço!


    Natan


    • Editado 'Natan Silva quarta-feira, 13 de março de 2019 19:53
    • Marcado como Resposta MLRamos quarta-feira, 13 de março de 2019 20:08
    quarta-feira, 13 de março de 2019 19:52
  • Eu já tinha visto isso antes, em alguns casos a função nativa Trim não funcionava, então passei a utilizar assim:

      Dim texto As String
      texto = "   teste     teste     teste   "
      Debug.Print "Usando Trim:     " & Trim(texto)
      Debug.Print "Usando $Trim:    " & Trim$(texto)
      Debug.Print "Usando A.W.Trim: " & Application.WorksheetFunction.Trim(texto)

    Resultado:

    Abraço!


    Natan


    Show !!!

    quarta-feira, 13 de março de 2019 20:08
  • Boa noite a todos.

    Apenas para esclarecer: não se trata de um bug, a função "Trim" do VBA é diferente da função "Trim" da planilha. A função do VBA retira os "espaços à esquerda e precedentes", mas não os interiores entre palavras. Já a função da planilha (idem "Application.WorksheetFunction.Trim")  "Remove todos os espaços do texto exceto os espaços únicos entre palavras".

    Os textos foram retirados da própria ajuda do VBA e do Excel.

    Abraço.


    Filipe Magno

    quinta-feira, 14 de março de 2019 02:49