Para minha surpresa, o Excel conhece pelo menos 4 métodos diferentes para substituir uma substring.
Todos eles podem lidar com um @
da maneira que você deseja. Exceto o primeiro método que você está usando ao abrir o search & substituir o diálogo .
O @
é o marcador de texto. . Se você inserir um valor numérico como 123
em uma célula e definir o formato personalizado como @
, a célula será formatada como texto (Alinhamento: direita »esquerda).
Estes exemplos substituirão o b
na célula A1 'valor abc
por 123
. O resultado é sempre a123c
.
1. Range.Replace () (igual à caixa de diálogo CTRL + H )
[A1].Replace "b", "123", xlPart
Sintaxe: Range.Replace( What, Replacement, [LookAt], [SearchOrder], [MatchCase], [SearchFormat], [ReplaceFormat] )
2. WorksheetFunction.Replace ()
[A1] = WorksheetFunction.Replace([A1], InStr([A1], "b"), Len("b"), "123")
Sintaxe: WorksheetFunction.Replace( old_text, start, number_of_chars, new_text )
3. WorksheetFunction.Substitute ()
[A1] = WorksheetFunction.Substitute([A1], "b", "123")
Sintaxe: WorksheetFunction.Substitute( text, old_text, new_text, [nth_appearance] )
4. Substituir ()
[A1] = Replace([A1], "b", "123")
Sintaxe: Replace( Expression, Find, Replace, [Start, [Count, [Compare]]] )
Para responder à pergunta de Loopo. Você deve usar o último método, pois ele pode manipular @
no início de um valor de célula. Eu fiquei um pouco mais confortável com 2 caixas de entrada.
Sub ReplaceFunction()
strFind = InputBox("Find what")
strReplace = InputBox("Replace with")
For Each cell In Selection
cell.Value = Replace(cell.Value, strFind, strReplace)
Next
End Sub