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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord