Pergunta

Preciso substituir STRINGS mas até agora consegui substituir apenas palavras.O código passa pela coluna Descrição e deve substituir todas as sequências da lista.A ideia é usar abreviaturas(novos valores) em vez de palavras completas (valores antigos).

Cada vez que há uma palavra, caractere etc. vizinho (sem espaço), o código falha.O que está errado?Obrigado!!!

Sub ReplaceWords_BUT_Need_ToReplaceStrings()

    Application.ScreenUpdating = False

    'This macro works with separated words only. Eliminate hyphens etc before applying this macro.

    Dim r As Range, A As Range
    Dim s1 As Worksheet, s2 As Worksheet, LastRow As Integer, v As String, j As Integer,      
    oldv As String, newv As String

    LastRow = Cells(Rows.count, "A").End(xlUp).row

    Set s1 = Sheets("JE_data")
    Set s2 = Sheets("ListToReplace")
    Set A = s1.Range("J:J").Cells.SpecialCells(xlCellTypeConstants)
    For Each r In A
        v = r.Value

        For j = 2 To LastRow

            oldv = s2.Cells(j, 1).text
            newv = s2.Cells(j, 2).text

'A função Substituir conforme você a usou diferencia maiúsculas de minúsculas.'Tem certeza de que todas as palavras da sua fatura começam com letra maiúscula?'Se não, use a função v = Replace(v, oldv, newv, 1, -1, vbTextCompare) em vez disso.OK.

        v = Replace(v, oldv, newv, 1, -1, vbTextCompare)    
        'v = Replace(v, oldv, newv)

        Next j
        r.Value = Trim(v)

    Next r

    Application.ScreenUpdating = True

End Sub

Exemplo:

ListToReplace

Left column (old)     Right column (new)
----------------------------------------
Invoice               inv 
Salary                sy 
Credit                cr 

JE_dados

cr Note
cr note 
INV/2712/14RF/0229/14 
Invoice 1078 10 
TECHNOQ01SI 2014 03288

(Nota do editor: Não sei se o exemplo está correto pois foi escrito nos comentários)

Credit foi substituído por cr e Invoice esperava-se que fosse substituído por inv mas não foi

Foi útil?

Solução

A função Substituir conforme você a usou diferencia maiúsculas de minúsculas.Tem certeza de que todas as palavras da sua fatura começam com letra maiúscula?Se não, então use

v = Replace(v, oldv, newv, 1, -1, vbTextCompare)

funcionar em vez disso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top