Vídeo recomendado
https://youtu.be/diWPPPhW-9E

[Resolvido] Função Vba para Contar (com Limite) os espaços vazios

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Mathmatic
Manda bem
Manda bem
Mensagens: 184
Registrado em: Seg Out 24, 2011 1:50 pm

[Resolvido] Função Vba para Contar (com Limite) os espaços vazios

Mensagem por Mathmatic »

Saudações amigos,

estou precisando muito da vossa ajuda no seguinte problema:

Preciso construir uma Função que me retornará a quantidade de espaços vazios que existe no Texto de uma célula, sendo que tenho um ponto limite, onde a função deve Contar os espaços vazios até logo após este limite.

Por exemplo, vamos supor que tenho o seguinte Texto abaixo na célula A1:

GOSTO MUITO DE UTILIZAR MACROS VBA NO EXCEL

Gostaria por exemplo de Contar a quantidade de espaços vazios que existe no texto, tendo como referência(limite) a palavra MACROS.

a Função precisa Contar os espaços vazios até logo após encontrar a palavra MACROS no texto mencionado acima.

sempre Contar até logo após a palavra de referência(limite), ou seja, neste Texto do exemplo a função deveria me retornar o valor igual a 5, pois é a quantidade de espaços vazios que existe no Texto até logo após a ocorrência da palavra MACROS .

desde já, agradeço a vossa ajuda .
Editado pela última vez por Mathmatic em Seg Fev 24, 2020 1:08 pm, em um total de 2 vezes.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Função Vba para Contar (com Limite) os espaços vazios na célula

Mensagem por Reinaldo »

Talvez algo +/- assim:

Código: Selecionar todos

Function intContaEspaco(ByVal strTexto As String, ByVal strDelimite As String) As Integer
Dim i As Integer, x As Integer
If Not IsNull(strDelimite) Then
    strTexto = Mid(strTexto, 1, InStr(strTexto, strDelimite) + Len(strDelimite))
End If
For i = 1 To Len(strTexto)
    If Mid(strTexto, i, 1) = VBA.Chr(32) Then x = x + 1
Next
intContaEspaco = x
End Function
Obs.: As is, sem muitos testes/validações


Mathmatic
Manda bem
Manda bem
Mensagens: 184
Registrado em: Seg Out 24, 2011 1:50 pm

Re: Função Vba para Contar (com Limite) os espaços vazios

Mensagem por Mathmatic »

sr. Reinaldo,

era isso mesmo, funcionou muito bem sua função para Contar (com Limite) a quantidade de espaços vazios... :)
Aproveitando sua generosidade, tenho uma outra necessidade que também me ajudará muitíssimo no meu dia-a-dia:

tenho uma fórmula que Conta os caracteres até encontrar uma determinada palavra no texto da célula. Se usar como exemplo a mesma palavra MACROS, a fórmula que eu tenho me dá como resultado o valor 25, ou seja, essa fórmula que eu tenho, procura no texto da célula a palavra MACROS e então me informa que são 25 caracteres até encontrar essa palavra MACROS (contando junto a primeira letra da palavra).

essa minha outra necessidade é a seguinte:

eu gostaria de conseguir buscar no texto a palavra posterior e a palavra anterior, tendo como referência a quantidade de caracteres .

por exemplo, Se na célula A1 está o texto já mencionado no inicio deste tópico, na célula B1 tenho minha fórmula que contará os caracteres com referência numa determinada palavra (vou usar aqui o resultado 25).

Então, de acordo com o resultado 25 calculado na célula B1 pela minha fórmula, gostaria de ter na célula C1 uma função que me informará como resultado a palavra: UTILIZAR e na célula D1 uma função que me informará como resultado a palavra: VBA .

Resumindo: pela quantidade de caracteres 25, gostaria de conseguir encontrar a palavra posterior e a palavra anterior no texto.

será que existe esta possibilidade ?

muito obrigado por toda ajuda.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Função Vba para Contar (com Limite) os espaços vazios

Mensagem por Reinaldo »

Experimente

Código: Selecionar todos

Function strPalavra(ByVal strtexto As String, ByVal strDelimite As String, ByVal intLocal As Integer) As String
Dim MyArray() As String
Dim x As Integer
MyArray = VBA.Split(strtexto, " ")
    For x = LBound(MyArray) To UBound(MyArray)
        If MyArray(x) = strDelimite And intLocal - 1 Then
            strPalavra = MyArray(x - 1)
        ElseIf MyArray(x) = strDelimite And intLocal = 1 Then
            strPalavra = MyArray(x + 1)
        End If
    Next
End Function
Sintaxe/utilização:
Na Planilha SuaCelula=strPalavra(A1; "MACROS"; -1) (Utilizando-1 obtenha o texto anterior e 1 o posterior)
No Vba

Código: Selecionar todos

Sub Exemplo()
Dim strtexto As String

strtexto = strPalavra([a1].Value, "MACROS", -1)
MsgBox strtexto
strtexto = strPalavra([a1].Value, "MACROS", 1)
MsgBox strtexto
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Mathmatic
Manda bem
Manda bem
Mensagens: 184
Registrado em: Seg Out 24, 2011 1:50 pm

Re: Função Vba para Contar (com Limite) os espaços vazios

Mensagem por Mathmatic »

sr. Reinaldo,

sua função para encontrar no texto a palavra posterior e a palavra anterior também ficou boa.

Mas notei que o senhor usou como referência uma "palavra", neste caso, a palavra MACROS.

Haveria uma forma de usar como referência uma determinada quantidade de Caracteres ? por exemplo, a quantidade 25, que sugeri anteriormente ?

ou seja, ao invés da variável de referência ser uma palavra, então a variável de referência seria uma determinada quantidade de Caracteres, neste caso 25.

Muito obrigado por sua disposição em ajudar-me.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Função Vba para Contar (com Limite) os espaços vazios

Mensagem por Reinaldo »

Fico com a impressão que a sua demanda e outra; diferente da anunciada. Postei o que a principio e omais simples, rapido e coerente com sua necessidade informada inicialmente.
Sem uma maior noção sobre a necessidade; maiores descrições/exemplos fica difícil.


Mathmatic
Manda bem
Manda bem
Mensagens: 184
Registrado em: Seg Out 24, 2011 1:50 pm

[Resolvido] Função Vba para Contar (com Limite) os espaços vazios

Mensagem por Mathmatic »

sr. Reinaldo,

vou abrir um novo tópico para uma nova demanda.

a demanda deste tópico já foi Resolvida. :)

muito obrigado por sua ajuda. :)


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder