Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#23126
Pessoal, bom dia.

Tenho uma função que separa uma String (por exemplo: frases ou sequencias de códigos) usando um caracter como referência e colaca cada pedaço resultante em uma posição de um array
Exemplo:

String1: "A roupa do rei"
String2 " "
retorna o array arr:
arr(0) = "A"
arr(1) = "roupa"
arr(2) = "do"
arr(3) = "rei"

Tem alguma função do VBA que eu possa usar para verificar se exeste um determinado string dentro deste array? Exemplo

Existe "roupa" dentro do arr? Resposta: Sim na posição 1
Existe "teclado" dentro de arr? Resposta: Não


O código implementado esta similar a este
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
#23128
Franco, bom dia.

Não pode ser função nativa pois é uma analise de um relatório que varia muito e as informações são localizadas e transportadas para um banco de dados.

Também tem o fato que estes dados são tratados via VBA, dentro de array.

Necessito mesmo que seja VBA, de forma a simplificar o código hoje existente.
#23129
Bom dia.
Sugiro postar um modelo de sua planilha ( com dados fictícios mas mesma estrutura) com uma demonstração manual do resultado esperado.
at
gfranco
#23131
Experimente:
Código: Selecionar todos
        If Not IsError(Application.Match("roupa", arr, 0)) Then
         i = Application.WorksheetFunction.Match("roupa", arr, 0): MsgBox "encontrado na posição " & i
        Else: MsgBox "não encontrado"
        End If
http://www.planilhando.com.br/forum/vie ... 10#p124010
#23137
Osvaldo só agora tive tempo de acessar a net.

Vou testar amanhã a sua solução lá no serviço.
A história é a seguinte: Um cliente da empresa que trabalho quer aproveitar os dados do sistema antigo para migrar para o nosso porém, este sistema dele não permite consulta SQL diretamente no BD, só gera relatórios em Excel.
Estes relatórios são linhas em cada célula com todos atributos porém, estes mudam de posição conforme aparecem determinadas palavras no nestas linhas de texto (como por exemplo CON e BLOC)
Este cliente tem um Excel com a relação dos códigos com a descrição dos produtos.

Teremos que vasculhar os relat´rorios atrás de valor de cada produto, corredor, setor e quantidade de estoque.
Fiz uma macro que separa estas linhas baseadas nos espaços em branco em array e irei analisar estes array.

Segue uma pequena simulação do tipo de relatório assim como o resultado que deverei obter (o relatório é apenas a coluna A do Excel)


Grato por enquanto e amanhã testarei sua sugestão de código.
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord