Página 1 de 1

Localizar e substituir em userform

Enviado: 19 Out 2022 às 21:05
por Sullivan2021
Boa noite galera, tudo bem?
Eu estou com uma dúvida relacionada ao userform. Eu criei um userform que possui dois textbox e quero que eles funcionem como a função “localizar e substituir”, que o próprio excel já apresenta na aba página inicial > edição > localizar e selecionar > localizar e substituir.
Para melhor explicar, vou colar duas imagens que mostrará como funciona:


Imagem

Ao clicar no botão “abrir userform” irá aparecer a janela “mudar valores”. A primeira textbox irá procurar o valor “AAA” em F3:J12 (esses campos devem estar no código e eu não vou precisar selecionar eles, ou seja, a macro irá funcionar só nesses campos).

Já a segunda texbox é o texto que eu quero que substitua. Assim, ele irá substituir todos os campos AAA por BBB. Quando eu clicar em “mudar valores”, o código da programação irá rodar e os valores serão mudados:


Imagem

Sei que o excel já possui essa funcionalidade no próprio programa, porém, preciso fazer exatamente a mesma coisa só que usando um userform.
Muito obrigado pela atenção!!

Re: Localizar e substituir em userform

Enviado: 20 Out 2022 às 08:24
por osvaldomp
Olá, Sullivan.

Você pode utilizar o método Find associado ao FindNext , este último no interior de um Do ... Loop, ou pode utilizar o método Replace, que faz a substituição em "one go", sem Loop.

Re: Localizar e substituir em userform

Enviado: 20 Out 2022 às 13:50
por Sullivan2021
Muito obrigado @osvaldomp

Fui procurando esses métodos e consegui realizar o processo com o seguinte código no botão "Mudar valores"
:

Range("A1").Value = TextBox1.Text
Range("A2").Value = TextBox2.Text

Dim Palavra As String, Celula As Range, Intervalo As Range
Palavra = Range("A1").Cells

Set Intervalo = Range("F3:J12").Cells

For Each Celula In Intervalo
If Celula Like "*" & Palavra & "*" Then
Celula = Replace(Celula, Palavra, Range("A2").Value)
End If

Next Celula


Entretanto, a dúvida que ficou é que não estou conseguindo adicionar uma MsgBox no código se caso eu não encontre o valor, retornar com a mensagem "Valor não encontrado. Verifique o valor procurado novamente" e outra MsgBox quando um dos dois (ou os dois) TextBox estiver vazio retornar com a mensagem "Preencha os campos para alterar os valores". Você saberia em qual ponto do código eu coloco essas MsgBox?

Outra coisa que aconteceu agora quando fiz o teste, foi que ele não mudou valores que terminam em "#". Como por exemplo, encontrar o número 1168416# e mudar para o número 7618765#. Porém, quando eu retiro o "#" o código funciona normalmente. Você saberia pq isso acontece?


Muito obrigado pela atenção

Re: Localizar e substituir em userform

Enviado: 20 Out 2022 às 17:14
por osvaldomp
Sullivan2021 escreveu: 20 Out 2022 às 13:50
Você saberia em qual ponto do código eu coloco essas MsgBox?
Eu não sei, mas ... podemos palpitar ... :D

Outra coisa que aconteceu agora quando fiz o teste, foi que ele não mudou valores que terminam em "#".
Sugestão: disponibilize uma amostra do seu arquivo Excel com alguns dados na planilha e alguns exemplos representativos dos conteúdos a serem substituídos.


Você saberia pq isso acontece?
Eu não sei, mas ... podemos palpitar ... :D


Seguem algumas dicas:
1. você passou os valores das TextBoxes para duas células e depois fez a busca com base nos valores das células. A busca pode ser feita diretamente das TextBoxes.
2. você colocou duas ocorrências de .Cells. Não é necessário.
3. da forma que você fez a busca ~~~> For Each Celula In Intervalo ~~~> serão analisadas TODAS as células do intervalo, incluindo as células vazias e as células sem o conteúdo de interesse. Utilizando Find ...FindNext somente as células de interesse são buscadas
4. na expressão ~~~> If Celula Like ~~~> é aconselhável acrescentar a propriedade Value à variável Celula


Conforme eu sugeri acima, aguardamos uma amostra do seu arquivo Excel com o Form e os códigos atuais. Lembrando, imagens não servem.

Re: Localizar e substituir em userform

Enviado: 22 Out 2022 às 13:15
por Sullivan2021
@osvaldomp

Eu só vi agora a sua resposta, eu consegui resolver o problema das Textbox e do símbolo "#", agora está funcionando corretamente. Muito obrigado pela atenção, sempre consigo resolver os problemas do Excel com as suas dicas.