MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    Função FncSubstituir que funciona semelhante a Replace do VBA, que considera a palavra completa

    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3871
    Registrado : 21/04/2011

    Função FncSubstituir que funciona semelhante a Replace do VBA, que considera a palavra completa Empty Função FncSubstituir que funciona semelhante a Replace do VBA, que considera a palavra completa

    Mensagem  Marcelo David 25/10/2021, 16:52

    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!

    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)


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    Função FncSubstituir que funciona semelhante a Replace do VBA, que considera a palavra completa Marcel11

    =>Nois gosta desta mensagem


      Data/hora atual: 26/4/2024, 11:55