Notifications
Clear all

Macro substituir

9 Posts
1 Usuários
0 Reactions
1,785 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

gostaria de criar uma macro que substituísse os caracteres que constam na célula B1 pelos caracteres da célula B2, no intervalo A5:H20.

Manualmente, eu selecionaria o intervalo A5:H20, iria em Localizar colocaria o texto da célula B1 e em substituir por colocaria o texto da célula B2.

dá pra automatizar isso?

segue o exemplo:

Obrigado

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 9:10 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

lostruler, uma dica é utilizar o "Gravado de Macros", muitas duvidas acabamos resolvendo com ele :

Utilizando o "Gravador de Macros", temos :

Sub Macro1()
' Macro gravada em 4/3/2012 por MauroCoutinho
'
    Selection.Replace What:="9", Replacement:="7", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
End Sub

Ok, funcionou, mas temos de ter a Área Selecionada antes, então adaptamos, trocando as Referencias Absolutas por Variáveis, ficando :

Sub AdaptarVariaveis()
' Macro gravada em 4/3/2012 por MauroCoutinho
    
    Dim sRange As Range
    
    Dim sValorOrig As Integer
    Dim sReplace As Integer
    
    sValorOrig = [B1] 'Valor em B1
    sReplace = [B2] 'Valor em B2
    
    'Definimos o Range, pode ser alterado conforme a necessidade
    Set sRange = Range("A5:H20")
    
    'Trocamos as Refferencias pelas Variaveis
        sRange.Replace What:=sValorOrig, Replacement:=sReplace, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False

End Sub

Espero ter sido util, faça os testes e veja se é isto.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 9:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro,

desculpe a ignorância, mas montei minha macro assim:

Sub AdaptarVariaveis()
' Macro gravada em 4/3/2012 por MauroCoutinho

Dim sRange As Range

Dim sValorOrig As Integer
Dim sReplace As Integer

sValorOrig = [B1] 'Valor em B1
sReplace = [B2] 'Valor em B2

'Definimos o Range, pode ser alterado conforme a necessidade
Set sRange = Range("A5:H20")

End Sub

Mando executar, mas não acontece nadinha!

O que acontece?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 9:46 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro,

desculpe a ignorância, mas montei minha macro assim:

Sub AdaptarVariaveis()
' Macro gravada em 4/3/2012 por MauroCoutinho

Dim sRange As Range

Dim sValorOrig As Integer
Dim sReplace As Integer

sValorOrig = [B1] 'Valor em B1
sReplace = [B2] 'Valor em B2

'Definimos o Range, pode ser alterado conforme a necessidade
Set sRange = Range("A5:H20")

End Sub

Mando executar, mas não acontece nadinha!

O que acontece?

Faltou a parte principal :

'Trocamos as Refferencias pelas Variaveis
        sRange.Replace What:=sValorOrig, Replacement:=sReplace, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 9:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

hahhahah verdade po!

Funcionou certin agora! Eu que não copiei a rotina toda!

Mais uma vez, muito obrigado Mauro!

=)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 9:52 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro,

só mais uma dúvida..
e quando for TEXTO?? como faço?

Exemplo:

A rotina não está funcionando para texto. =/

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 10:39 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Neste caso precisamos redefinir o Tipo da Variável:

Dim sValorOrig As Integer
Dim sReplace As Integer

Integer representa que é Numerico, então podemos deixar somente :
Dim sValorOrig
Dim sReplace

Se não declararmos o tipo da mesma, significa que é Variant (Texto ou Numerico), logicamente dependendo dos Dados que estamos trabalhando, devemos declarar corretamente, para não obtermos erros.

Veja sobre Tipos :
14: Funções do VBA - Funções de Tipo - Parte 1
http://www.juliobattisti.com.br/cursos/ ... icao14.asp

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 10:56 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

PUTS...
só isso? rsrs
funcionou certin aki! Obrigado mais uma vez.

Estou estudando VBA e, nas próximas, vou tentar não dar tanto trabalho com questões tão simples assim.

Obgd pela atenção e paciência.

abs

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/03/2012 11:06 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!
Lostrule, marque seu tópico como resolvido!!!

Do la do superior direito um quadradinho com forma de uma setinha para baixo (Verde).

Obrigado!!
Att.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/03/2012 10:11 am