Página 1 de 1

Função que retorne partes de uma String, separadas por um cr

Enviado: 25 Abr 2017 às 20:12
por gilbertjuniors
Pessoal, boa noite.

Estou tentando implementar uma função que eu passe uma String para ela e um caracter referencia para separação e ela me retorne uma Array contendo os itens separados e a quantidade de itens. exemplo:
String original = "A casa vermelha"
caracter de referência = " "

retorno desejado:
a(0) = "A"
a(1) = "casa"
a(2) = "vermelha"
quant = 3
Tentei adaptar este código do site http://www.tomasvasquez.com.br/blog/tag ... string-vba
Código: Selecionar todos
Public Function ContaCaracteresNaString(ByVal texto As String, ByVal caracter As String) As Long
     Dim x As Variant
     x = Split(texto, caracter)
     ContaCaracteresNaString = UBound(x)
End Function
 
Public Sub Teste()
     MsgBox ContaCaracteresNaString("janeiro|fevereiro|março|abril|", "|")
End Sub
porém, ainda não consegui.

Alguém me da uma luz, please!

Função que retorne partes de uma String, separadas por um cr

Enviado: 26 Abr 2017 às 08:55
por JCabral
Será que isso ajuda?
Abr
JCabral

Re: Função que retorne partes de uma String, separadas por u

Enviado: 26 Abr 2017 às 13:08
por gilbertjuniors
JCabral, boa tarde.

Fiz uma adaptação da sua planilha para a minha necessidade.
Mesclei com o tutorial que vi no seguinte site http://www.geeksengine.com/article/vba- ... lues2.html
Estou lendo diretamente a lista de dados na folha3

O código final ficou assim:
Código: Selecionar todos
 Public Function separar(ByVal str1 As String, ByVal str2 As String) As Variant
    Dim WrdArray() As String
    WrdArray() = Split(str1, str2)
    separar = WrdArray
End Function
Sub principal()
    Dim arr As Variant
    linhaREF = 1
    While Not IsEmpty(ThisWorkbook.Worksheets("Folha3").Range("A" & linhaREF))
    
        Info = ThisWorkbook.Worksheets("Folha3").Range("A" & linhaREF).Value
        
        arr = separar(Info, " ")
        
        ' Daqui pra baixo posso realizar as comparações do código pré-existente
        For i = 0 To UBound(arr)
            Debug.Print arr(i)
        Next
        
        Debug.Print ""
        
        linhaREF = linhaREF + 1
    Wend
    
End Sub

Grato