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.
Por Sullivan2021
Posts
#72400
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!!
Por osvaldomp
#72402
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.
#72403
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
Por osvaldomp
#72404
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.
#72406
@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.

=SE(MÊS(A1)<7;"1º sem&a[…]

Bom Dia Senhores. Tenho uma macro que preciso dei[…]

Free relationships without drama and obligations. […]

Girar Imagem e Zoom

Boa noite Teria alguma forma de dar um "[…]

Valeu. Muito Obrigado!!!!!!!!

Pessoal, Ao clicar no botão Copiar (Guia C[…]

Procv com serro em vba

Resolvido

Bom dia, pessoal! com a data de nascimento e data […]

Estamos migrando para uma comunidade no Discord