Notifications
Clear all

Ajuste na macro

8 Posts
3 Usuários
0 Reactions
979 Visualizações
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Bom dia
O que há de errado com a macro? nada. Tentei fazer um pequeno ajuste na mesma mas o resultado não ficou aos contento. Então... :D
Grato

 
Postado : 27/01/2014 9:41 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Dimorais,

As referências que vc alterou estão erradas. Se for apenas para corrigir o que vc digitou, seria assim:

Sub localizarSubstituir()
    Dim sRange As Range
     Dim sValorOrig As String
      Dim sReplace As String

       sValorOrig = [E1,F1,G1]
      sReplace = [I1,J1,K1]
     Set sRange = Range("A3:C100")
    sRange.Replace What:=sValorOrig, Replacement:=sReplace, LookAt:=xlWhole, _
   SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

Porém, se eu entendi o que vc quer, talvez seja esse o código:

Sub localizarSubstituir()

Dim sRange1 As Range
Dim sRange2 As Range
Dim linha1 As Integer
Dim linha2 As Integer
Dim sValorOrig(3) As Integer
Dim sReplace(3) As Integer
Dim i As Integer
Dim j As Integer
Dim Row As Integer

For i = 1 To 3
    sValorOrig(i) = Cells(1, i + 4).Value
    sReplace(i) = Cells(1, i + 8).Value
Next i

Set sRange1 = Range("A3")
Set sRange2 = Range("C100")

linha1 = sRange1.Row
linha2 = sRange2.Row
    
For Row = linha1 To linha2
    
    j = 0
    For i = 1 To 3
        If Cells(Row, i).Value = sValorOrig(1) Or Cells(Row, i).Value = sValorOrig(2) Or Cells(Row, i).Value = sValorOrig(3) Then j = j + 1
    Next i
    
    If j = 3 Then
        For i = 1 To 3
            Cells(Row, i).Value = sReplace(i)
        Next i
    End If

Next Row

End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 27/01/2014 10:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu não testei, mas tente..

Sub localizarSubstituir()
    Dim sRange As Range
     Dim sValorOrig As String
      Dim sReplace As String

       sValorOrig = [E3,F3,G3]
      sReplace = [I3,J3,K3]
     Set sRange = Range("A3:A100,B3:B100,C3:C100") '<- Veja...
    sRange.Replace What:=sValorOrig, Replacement:=sReplace, LookAt:=xlWhole, _
   SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

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

 
Postado : 27/01/2014 10:44 am
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Meus caros gtasalikis e AlexandreVba, ainda não é isso. Nessa plan coloquei os resultados obtidos com as macros sugeridas e o resultado obtido com cada uma delas. Na plan 0
o que de fato o código precisa fazer para obter os resultados esperados.

 
Postado : 27/01/2014 12:20 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

tente assim:

    Sub Gtsalikis_2()
    Dim sRangeI As Range
    Dim sRangeF As Range
    Dim sRange1 As Range
    Dim sRange2 As Range
    Dim linha1 As Integer
    Dim linha2 As Integer
    Dim sValorOrig(3) As Integer
    Dim sReplace(3) As Integer
    Dim i As Integer
    Dim j As Integer
    Dim Row As Integer
    Dim Deslocamento As Integer
    
    For i = 1 To 3
        sValorOrig(i) = Cells(1, i + 4).Value
        sReplace(i) = Cells(1, i + 8).Value
    Next i
    
    Set sRangeI = Range("A3:C100")
    Set sRangeF = Range("M3:O100")
    
    Set sRange1 = Range("M3")
    Set sRange2 = Range("O100")
    
    linha1 = sRange1.Row
    linha2 = sRange2.Row
       
    sRangeF.Clear
    sRangeF.Value = sRangeI.Value
       
    For Row = linha1 To linha2
       
        j = 0
        For i = 1 To 3
            If Cells(Row, i + 12).Value = sValorOrig(1) Or Cells(Row, i).Value = sValorOrig(2) Or Cells(Row, i).Value = sValorOrig(3) Then j = j + 1
        Next i
       
        If j = 3 Then
            For i = 1 To 3
                Cells(Row, i + 12).Value = sReplace(i)
            Next i
        End If

    Next Row

    End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 27/01/2014 12:41 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tentando contribuir:

Sub tt()
Dim nProc As Long, nNovo As Long, x As Long
Dim cel As Range
For x = 5 To 7
nProc = Cells(1, x)
nNovo = Cells(1, x + 4)
    For Each cel In Range(Cells(3, x - 4), Cells(100, x - 4))
    If cel.Value = nProc Then cel.Value = nNovo
    Next
Next
End Sub

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

 
Postado : 27/01/2014 1:06 pm
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Agradeço aos parceiros AlexandreVba, gtsalikis e ao Reinaldo. A macro do Reinaldo foi a que melhor se adequou ao pedido. :D

 
Postado : 27/01/2014 4:50 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

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

 
Postado : 27/01/2014 6:00 pm