VBA - Atribuir cadeia, comparar e concatenar

Trata-se de descrever as operações básicas das cadeias de caracteres. Tudo é explicado nos comentários das funções propostas.


Atribuir

Criação e destruição de uma variável String:
Sub String_Creation()
'String criação e destruição  
Dim myString As String
    'Aqui, minha variável myString existe, é criada, e vale: ""
    
End Sub '==> Aqui, minha variável myString é destruida!


Sub String_Atribuição()
Dim myString$    ‘O símbolo $ substitui As String
    'Aqui, minha variável myString existe, é criada, e vale: ""

    
    'atribuições :
    myString = vbNullString     'retorna: ""
    myString = "Hello World"    'retorna: "Hello World"
    myString = String(12, "A")  'retorna: "AAAAAAAAAAAA"
End Sub

Comparar

Para ler obrigatoriamente: Instrução Option Compare.

Sub String_Comparaison()
'String comparação
Dim A$, B$, C$

    If A = B Then Debug.Print "A = B"
    
    A = "creation": B = "destruição": C = "CREATION"
    
    'teste igualdade: (operador =)
    If A = B Then
         Debug.Print A & " = " & B
    'uteis para a triagem alfabética: (operador < et >)
    ElseIf A > B Then
         Debug.Print A & " > " & B
    Else 'aqui : A < B
         Debug.Print A & " < " & B
    End If
    
    'teste se A é diferente de C
    If A <> C Then Debug.Print A & " et " & B & " são diferentes."
    'mesmo teste sem quebra 
    If UCase(A) = UCase(C) Then Debug.Print A & " = " & C & " (sem quebra)"
    
    'operador Like :
    If A Like "*ation" Then Debug.Print A & " Like *ation"
    If Not B Like "*ation" Then Debug.Print B & " Not Like *ation"
End Sub

Veja também: Like Operator (Visual Basic) em inglês.

Copia por clonagem

Sub String_Clone_Copy()
Dim A As String, B$
    A = "Hello world!"
    'clonagem:
    B = A
End Sub

Teste se String estiver vazio

Sub Teste_SE_Vazio()
Dim A As String, B As Variante

    Debug.Print IsEmpty(A)          'retorna Falso
    Debug.Print IsEmpty(Null)       'retorna Falso
    Debug.Print IsEmpty(B)          'retorna Verdadeiro ==> B é uma variante 

    Debug.Print A = vbNullString    'retorna Verdadeiro
    Debug.Print StrPtr(A)           'retorna 0 (zéro)
    
    'Pressionar o botão OK sem digitar nenhum dados no Inputbox :
    A = InputBox("Nnão digitar e validar com OK : ")
    Debug.Print A = ""              'retorna Verdadeiro
    Debug.Print IsEmpty(A)         'retorna Falso
    Debug.Print StrPtr(A) = 0      'retorna Falso
    
    'Pressione o botão Anular (com ou sem digitação de dados)
    A = InputBox("Pressionar o botão anular: ")
    Debug.Print StrPtr(A) = 0       'retorna Verdadeiro
    Debug.Print IsEmpty(A)          'retorna Falso
    Debug.Print A = ""              'retorna verdadeiro
    'Note : StrPtr éum bom meio de saber se você anulou uma InputBox
End Sub

Adicionar à uma String - Concatenar

Sub Adicionar_A_string()
Dim A As String
    A = "Hello worl"
    Debug.Print A & Chr(100)        'retorna : Hello world
    Debug.Print A & "d"                'retorna : Hello world
End Sub


Sub Concatenar()
Dim A$, B As String

    A = "Hello"
    B = "world"
    Debug.Print A & " " & B         'retorna : Hello world
    'Se você está seguro que A e B são Strings :
    Debug.Print A + " " + B         'retorna : Hello world
End Sub

Extrair uma substring

Sub ExtraireDeString()
Dim A$, B As String

    A = "Hello world"
    B = Mid(A, 3, 8)
    Debug.Print B                   'retorna : llo worl
End Sub

Substituir um caractere

Substitua cada ocorrência de um caractere em uma String
Sub ReplaceInString()
'este exemplo substitui o l por um espaço
Dim A$, B As String, C$
    A = "Hello world"
    B = Chr(108)        ' "l"
    C = " "
    Debug.Print Substitui(A, B, C)    'retorna: He  o wor d
End Sub

Inverter os caracteres de uma String

Para o exemplo, vamos testar se a cadeia é um palíndromo:
Sub Teste_Palindromo()
    Debug.Print IsPalindromo("Uma rocha lamina l animal cornudo") 'retorna Verdadeiro
End Sub

Function IsPalindrome(txt As String) As Boolean
Dim tempTxt As String
    tempTxt = LCase(Substitui(txt, " ", ""))
    IsPalindromo = (tempTxt = StrReverse(tempTxt))
End Function

Colocar cada caractere em uma matriz

Sub Eclater_String()
Dim tb, Ch As String
    
    Ch = "Bom dia pessoal!"
    tb = Split(StrConv(Ch, vbUnicode), Chr(0))
    'retorna uma matriz contendo cada caractere da cadeia (espaços incluídos)
  Debug.Print Join(tb, Chr(124) & " ")
End Sub
End Sub </code>

Split Especial

Esta função splitte uma cadeia de caracteres de acordo com a mudança de caractere.
Exemplo: CnnnTY vai retornar: (C, nnn, T, Y)

Exemplo de chamada:
Sub Split_String_change_character()
Dim myArr() As String, t As String

Const STRINPUT As String = "gHHH5YY++///\"
Const SEP As String = ", "

    myArr = Split_Especial(STRINPUT)
    t = Join(myArr, SEP)
    Debug.Print Left(t, Len(t) - Len(SEP))
End Sub

Código da função :
Function Split_Special(Ch As String) As String()
'retorna uma ordem de Strings
Dim tb, i&, st As String, cpt As Long, R() As String

    tb = Split(StrConv(Ch, vbUnicode), Chr(0))
    st = tb(LBound(tb))
    ReDim R(cpt)
    R(cpt) = st
    For i = 1 To UBound(tb)
        If tb(i) = st Then
            R(cpt) = R(cpt) & st
        Else
            st = tb(i)
            cpt = cpt + 1
            ReDim Preserve R(cpt)
            R(cpt) = st
        End If
    Next
    Split_Special = R
End Function


Foto: © VBA.
Artigo original publicado por pijaku. Tradução feita por ninha25. Última modificação: 19 de fevereiro de 2018 às 13:14 por ninha25.
Este documento, intitulado 'VBA - Atribuir cadeia, comparar e concatenar ', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (https://br.ccm.net/) ao utilizar este artigo.
VBA - Jogo Bulls & Cows (Touros e Vacas)
VBA: como programar o deslocamento de um UserForm sem barra de janela