Esta função funciona semelhante ao função Replace do VBA com a diferença de que poderá escolher em realizar a substituição
apenas se a palavra for completa.
Para realizar a substituição apenas em palavras completas, basta definir como True o parâmetro PalavraCompleta
Parâmetros da função:
TextoBase (string) - obrigatório: o texto que contém o texto a ser substituído
Procurar (string) - obrigatório: o texto que deverá ser substituído
Substituto (string) - obrigatório: texto substituto
PalavraCompleta (Boolean) - opcional: determina se a pesquisa considera ou não a palavra completa. Por padrão não considera,
e a pesquisa é realizado com o replace do VBA
Exemplo
Texto: Marta Maria Araújo gosta de mar
Quero substituir mar por uva.
Primeiro vou usar a substituição sem informar o parâmetro PalavraCompleta, assim, será uma pesquisa semelhante ao Replace do VBA
FncSubstituir("Marta Maria Araújo gosta de mar","mar","uva")
Resultado: uvata uvaia Araújo gosta de uva
Note que o resultado não foi o esperado, pois o replace substituio toda a sequencia que coincidio com a sequencia procurada
Agora vamos realizar a mesma substituição definindo como True o parâmetro PalavraCompleta:
FncSubstituir("Marta Maria Araújo gosta de mar","mar","uva", True)
Resultado: Marta Maria Araújo gosta de uva
Enjoy!
apenas se a palavra for completa.
Para realizar a substituição apenas em palavras completas, basta definir como True o parâmetro PalavraCompleta
Parâmetros da função:
TextoBase (string) - obrigatório: o texto que contém o texto a ser substituído
Procurar (string) - obrigatório: o texto que deverá ser substituído
Substituto (string) - obrigatório: texto substituto
PalavraCompleta (Boolean) - opcional: determina se a pesquisa considera ou não a palavra completa. Por padrão não considera,
e a pesquisa é realizado com o replace do VBA
Exemplo
Texto: Marta Maria Araújo gosta de mar
Quero substituir mar por uva.
Primeiro vou usar a substituição sem informar o parâmetro PalavraCompleta, assim, será uma pesquisa semelhante ao Replace do VBA
FncSubstituir("Marta Maria Araújo gosta de mar","mar","uva")
Resultado: uvata uvaia Araújo gosta de uva
Note que o resultado não foi o esperado, pois o replace substituio toda a sequencia que coincidio com a sequencia procurada
Agora vamos realizar a mesma substituição definindo como True o parâmetro PalavraCompleta:
FncSubstituir("Marta Maria Araújo gosta de mar","mar","uva", True)
Resultado: Marta Maria Araújo gosta de uva
Enjoy!
- Código:
Public Function FncSubstituir(TextoBase As String, Procurar As String, Substituto As String, Optional PalavraCompleta As Boolean = False)
'--------------------------------------------------------------------------------------------------------------
' Função desenvolvida por: Marcelo David '
' Data: 25/10/2021 '
' Uso livre desde que mantendo esse cabeçalho inicial '
' Conheçe meu canal no Youtube: https://www.youtube.com/MarceloDavidTreinamentos '
' Conheça meu treinamento de formulários desacoplados no Access: '
' https://www.udemy.com/course/access-vba-formulario-desacoplado/?referralCode=8D331E633FD82E09EFD2 '
'--------------------------------------------------------------------------------------------------------------
'### Como usar
'Esta função funciona semelhante ao função Replace do VBA com a diferença de que poderá escolher em realizar a substituição
'apenas se a palavra for completa.
'Para realizar a substituição apenas em palavras completas, basta definir como True o parâmetro PalavraCompleta
'Parâmetros da função:
'TextoBase (string) - obrigatório: o texto que contém o texto a ser substituído
'Procurar: (string) - obrigatório: o texto que deverá ser substituído
'Substituto (string) - obrigatório: texto substituto
'PalavraCompleta (Boolean) - opcional: determina se a pesquisa considera ou não a palavra completa. Por padrão não considera,
'e a pesquisa é realizado com o replace do VBA
'### Exemplo
'Texto: Marta Maria Araújo gosta de mar
'Quero substituir mar por uva.
'Primeiro vou usar a substituição sem informar o parâmetro PalavraCompleta, assim, será uma esquisa semelhante ao Replace do VBA
'FncSubstituir("Marta Maria Araújo gosta de mar","mar","uva")
'Resultado: uvata uvaia Araújo gosta de uva
'Note que o resultado não foi o esperado, pois o replace substituioui toda a sequencia que coincidio com a sequencia procurada
'Agora vamos realizar a mesma substituição definindo como True o parâmetro PalavraCompleta:
'FncSubstituir("Marta Maria Araújo gosta de mar","mar","uva", True)
'Resultado: Marta Maria Araújo gosta de uva
'enjoy
Dim clP As New Collection 'Coleção que guardará todas as palavras e espaços individualmente
Dim strP As String 'Conterá a palavra sendo montada para após ser adicionada a coleção
If PalavraCompleta = True Then
'Laço por todos os caracteres do texto base (TextoBase)
For i = 1 To Len(TextoBase)
If Mid(TextoBase, i, 1) <> " " Then 'Caso não seja espaço vazio o caractere atual, incremento a variável que conterá o nome
strP = strP & Mid(TextoBase, i, 1)
ElseIf Mid(TextoBase, i, 1) = " " Then 'Caso seja caractere vazio, indica que a sequencia anterior é uma palavra. Adiciono a coleção
clP.Add strP
clP.Add " "
strP = Empty 'Como a palavra/caractere foi adicionado, limpo a variável para receber uma nova palavra (se ainda existir)
End If
If i = Len(TextoBase) Then 'Como no loop, a última palavra fica de fora, verifico se estou no último caractere para adicionar a última palavra
clP.Add strP
End If
Next i
strP = Empty 'Limpo novamente a variável, pois irei usá-la para montar a frase final
'Como cada item da coleção possui uma palavra ou espaço vazio na sequencia, realizo um laço
'pelos itens da coleção. Caso o item atual contenha a palavra/caractere procurado, incremento
'a variável com a substituta (parâmetro substituir)
For i = 1 To clP.Count
strP = strP & IIf(CStr(clP(i)) = Procurar, Substituto, clP(i))
Next i
FncSubstituir = strP
Else
FncSubstituir = Replace(TextoBase, Procurar, Substituto)
End If
End Function
Última edição por Marcelo David em 27/10/2021, 13:42, editado 1 vez(es) (Motivo da edição : Correção do enunciado)