Hej hej
Tips är att alltid ha option explicit längst uppe på kodbladet. Då tvingas du att dimensionera alla dina variabler, vilket kan tyckas vara jobbigt, men det tar ännu längre tid att sitta och leta stavfel, typfel och dyilkt :D
Hittar inga direkta fel i koden, Fick du något felmeddelande?. Fel uppstår om annat än en range följt av klicka ok görs av användaren. Detta kan(och bör) hanteras. Då felhanteringen i vba inte är världsbäst är det bra att undvika den om man kan. Nu hanteras din första inputbox så att användaren kan göra alla möjliga olika fel utan att programmet slinter, detta görs genom att lägga användarens svar i en collection, denna utvärderas sedan för att se om det är ett rangeobjekt eller inte. Oklart om detta löser ditt problem. Vilken excelversion kör du? Har du Mac?
Sub MultiFindNReplace()
'Updateby Extendoffice
Dim Rng As Object
Dim inputrng As Range, ReplaceRng As Range
'Dim xTitleId As String
xTitleId = "Ingen reklam"
Dim mCol As New Collection
Set inputrng = Application.Selection
mCol.Add Application.InputBox("Original Range ", xTitleId, inputrng.Address, Type:=8)
If TypeOf mCol(1) Is Range Then
Set inputrng = mCol(1)
Else
MsgBox "terminerat av användaren"
Exit Sub
End If
Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8)
Application.ScreenUpdating = False
For Each Rng In ReplaceRng.Columns(1).Cells
inputrng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value
Next
Application.ScreenUpdating = True
End Sub