Pplware

Dicas de VBA – Separar Texto por Maiúsculas

Por Jorge Paulino para o Pplware!

Em VBA as formulas personalizadas podem simplificar muitos processos, permitindo criar fórmulas/operações à medida de cada necessidade.

Os seguintes exemplos mostram algumas formas de como separar um texto com base nas maiúsculas.

Por exemplo, estando o nome “JorgePaulino” numa célula e pretendendo separar esse nome, em outra célula, através das letras que se encontram em maiúsculas de modo a ficar “Jorge Paulino”.

Uma das formas de fazer esta separação é correr todas as letras e da frase e verificar qual o valor Ascii de cada letra/símbolo. Com base nesse resultado, adiciona-se ou não, um espaço de modo a separar o texto final (Método #1). As tabelas de códigos Ascii estão disponíveis nos ficheiros Help do Excel ou nos seguintes links da MSDN:

Tabela de Códigos Ascii – Parte 1 Tabela de Códigos Ascii – Parte 2

Outra forma de separar o texto é utilizando uma lista de letras/símbolos que irão servir para separar o texto e, através da função InStr() que verifica a posição de uma letra numa string, separar ou não (Método #2). A vantagem desta segunda forma é apenas que não é necessário saber os códigos Ascii e é mais simples de adicionar/remover condições para separar o texto.

Por exemplo, se fosse necessário separar também por um traço (-), bastava inseri-lo no final da string.

Segue o código dos dois métodos:

    ‘ ——————————————————————      ‘ Função que separa uma palavra com base nas letras maiúsculas      ‘      ‘ Método #1 – Ascii      ‘ ——————————————————————      Public Function SplitByUppecase(ByVal rg As Range) As String          Dim ascValue As Integer          Dim x As Integer          Dim c As String          Dim result As String 

         ‘ Ciclo em todas as letras da palavra          For x = 1 To Len(rg.Text) 

             ‘ Guarda a informação da letra actual              c = Mid(rg.Text, x, 1)

             ‘ Retorna o valor inteiro do código ascii de cada letra              ascValue = Asc(c)

             ‘ Caso o código pertença a uma letra maiúscula              ‘ coloca um espaço (separador) e de pois a letra              If ascValue >= 65 And ascValue <= 90 Then                  result = result & ” ” & c              Else                  result = result & c              End If

         Next x 

         SplitByUppecase = Trim(result)

    End Function      ‘ ——————————————————————      ‘ Função que separa uma palavra com base nas letras maiúsculas      ‘      ‘ Método #2 – Usando InStr()      ‘ ——————————————————————      Public Function SplitByUppecase2(ByVal rg As Range) As String          Dim matchString As String          Dim c As String, result As String          Dim x As Integer 

         ‘ Lista de letra que vão servir para separar o texto          matchString = “ABCDEFGHIJKLMNOPQRSTUVXYZW”

         ‘ Ciclo em todas as letras da palavra          For x = 1 To Len(rg.Text)

             ‘ Guarda a informação da letra actual              c = Mid(rg.Text, x, 1) 

             ‘ Verifica se a letra actual está na máscara, usando a              ‘ função InStr(), que retorna a posição da letra na string              If InStr(1, matchString, c, vbBinaryCompare) > 0 Then                  result = result & ” ” & c              Else                  result = result & c              End If 

        Next x

        SplitByUppecase2 = Trim(result) 

    End Function

 

São dois métodos que permitem obter o mesmo resultado. Em determinadas situações, um pode ser mais útil do que outro, como por exemplo no método 2, poder definir novos elementos de separação.

 

Exemplo do artigo: SepararMaiusculas

Escrito por: Jorge Paulino Homepage: Página Autor: Jorge Paulino

Exit mobile version