In this VBA Tutorial, you learn how to replace or substitute substrings or characters within strings.
This VBA Tutorial is accompanied by Excel workbooks containing the data and macros I use in the examples below. You can get immediate free access to these example workbooks by subscribing to the Power Spreadsheets Newsletter.
Use the following Table of Contents to navigate to the section you're interested in.
Table of Contents
Related VBA and Macro Tutorials
The following VBA and Macro Tutorials may help you better understand and implement the contents below:
- General VBA constructs and structures:
- Practical VBA applications and macro examples:
You can find additional VBA and Macro Tutorials in the Archives.
#1: Replace String in Cell
VBA Code to Replace String in Cell
To replace a string in a cell with VBA, use a statement with the following structure:
Cell.Value = Replace(Expression:=Cell.Value, Find:=StringToReplace, Replace:=ReplacementString, Count:=NumberOfReplacements)
Process Followed by VBA Code to Replace String in Cell
VBA Statement Explanation
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property specifies the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
- VBA Construct: Assignment operator.
- Item: Replace(…).
- VBA Construct: Replace function.
- Description: The Replace function returns a string where a specific substring (StringToReplace) is replaced by another substring (ReplacementString) a specific number of times (NumberOfReplacements).
- VBA Construct: Replace function.
- Item: Expression:=Cell.Value.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Description: The Expression parameter of the Replace function specifies the string expression containing the substring you want to replace (StringToReplace). Within this macro structure, Expression is the value (string) within Cell, as returned by the Range.Value property.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Item: Find:=StringToReplace.
- VBA Construct: Find parameter of the Replace function.
- Description: The Find parameter of the Replace function specifies the substring you search for and replace.
If you explicitly declare a variable to represent StringToReplace, use the String data type.
- VBA Construct: Find parameter of the Replace function.
- Item: Replace:=ReplacementString.
- VBA Construct: Replace parameter of the Replace function.
- Description: The Replace parameter of the Replace function specifies the substring you want to use as replacement for StringToReplace.
If you explicitly declare a variable to represent ReplacementString, use the String data type.
- VBA Construct: Replace parameter of the Replace function.
- Item: Count:=NumberOfReplacements.
- VBA Construct: Count parameter of the Replace function.
- Description: The Count parameter of the Replace function specifies the number of substitutions you want to carry out. In other words, the number of times you want to replace StringToReplace with ReplacementString.
If you want VBA to replace all occurrences of StringToReplace with ReplacementString, omit the Count parameter. In such case, Count defaults to -1 and VBA carries out all possible substitutions. Please refer to the appropriate section (Replace All Occurrences of String in Cell) below for further information about this scenario.
- VBA Construct: Count parameter of the Replace function.
Macro Example to Replace String in Cell
The following macro replaces the string “replace” (myStringToReplace) with the string “substitute” (myReplacementString) one time (myNumberOfReplacements) within the string in cell A5 of the worksheet named “Excel VBA Replace” (myCell).
Sub replaceStringInCell() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold parameters for string replacement (string to replace, replacement string, and number of replacements) Dim myStringToReplace As String Dim myReplacementString As String Dim myNumberOfReplacements As Long 'identify cell you work with Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A5") 'specify parameters for string replacement (string to replace, replacement string, and number of replacements) myStringToReplace = "replace" myReplacementString = "substitute" myNumberOfReplacements = 1 'replace string in cell you work with, and assign resulting string to Range.Value property of cell you work with myCell.Value = Replace(Expression:=myCell.Value, Find:=myStringToReplace, Replace:=myReplacementString, Count:=myNumberOfReplacements) End Sub
Effects of Executing Macro Example to Replace String in Cell
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces the string “replace” with the string “substitute” one time within the string in cell A5.
#2: Replace String in Cell Specifying a Starting Position for Search
VBA Code to Replace String in Cell Specifying a Starting Position for Search
To replace a string in a cell and specify the starting position to search for the string with VBA, use a statement with the following structure:
Cell.Value = Left(String:=Cell.Value, Length:=StartPosition - 1) & Replace(Expression:=Cell.Value, Find:=StringToReplace, Replace:=ReplacementString, Start:=StartPosition, Count:=NumberOfReplacements)
Process Followed by VBA Code to Replace String in Cell Specifying a Starting Position for Search
VBA Statement Explanation
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property specifies the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
- VBA Construct: Assignment operator.
- Item: Left(…).
- VBA Construct: Left function.
- Description: The Left function returns a string containing the number of characters specified by the Length parameter (StartPosition – 1) from the left side of the string specified by the String parameter (Cell.Value).
Within this macro structure, you use the Left function to return the substring containing the first characters of the string within the cell you work with. This substring goes from the first character of the string to the character immediately before the position within the string where you start searching for the substring you want to replace (StringToReplace).
You need to do this because the Replace function doesn't return a copy of the string (with substitutions) from start to finish. The string that Replace returns starts at the position within the string where you start searching for the substring you want to replace (StartPosition). Therefore, VBA truncates the string and the characters to the left of StartPosition aren't part of the string returned by Replace.
- VBA Construct: Left function.
- Item: String:=Cell.Value.
- VBA Construct: String parameter of the Left function, Range object and Range.Value property.
- Description: The String parameter of the Left function specifies the string expression containing the substring you want to replace (StringToReplace).
Within this macro structure, String is the value (string) within Cell, as returned by the Range.Value property. The value of the String parameter of the Left function is the same as the value of the Expression parameter of the Replace function.
- VBA Construct: String parameter of the Left function, Range object and Range.Value property.
- Item: Length:=StartPosition – 1.
- VBA Construct: Length parameter of the Left function.
- Description: The Length parameter of the Left function specifies the number of characters the Left function returns from the string you work with. StartPosition is the position within the string where you start searching for the substring you want to replace (StringToReplace). (StartPosition – 1) is the position of the character immediately before StartPosition. Therefore, the Left function returns the substring containing the first characters of the string within the cell you work with, up until the character located in position (StartPosition – 1).
If you explicitly declare a variable to represent StartPosition, use the Long data type. The value of StartPosition within the Length parameter of the Left function is the same as the value of the Start parameter of the Replace function.
- VBA Construct: Length parameter of the Left function.
- Item: &.
- VBA Construct: Concatenation operator.
- Description: The & operator concatenates the strings returned by the Left and Replace functions.
- VBA Construct: Concatenation operator.
- Item: Replace(…).
- VBA Construct: Replace function.
- Description: The Replace function returns a string where a specific substring (StringToReplace) is replaced by another substring (ReplacementString) a specific number of times (NumberOfReplacements).
- VBA Construct: Replace function.
- Item: Expression:=Cell.Value.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Description: The Expression parameter of the Replace function specifies the string expression containing the substring you want to replace (StringToReplace). Within this macro structure, Expression is the value (string) within Cell, as returned by the Range.Value property.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Item: Find:=StringToReplace.
- VBA Construct: Find parameter of the Replace function.
- Description: The Find parameter of the Replace function specifies the substring you search for and replace.
If you explicitly declare a variable to represent StringToReplace, use the String data type.
- VBA Construct: Find parameter of the Replace function.
- Item: Replace:=ReplacementString.
- VBA Construct: Replace parameter of the Replace function.
- Description: The Replace parameter of the Replace function specifies the substring you want to use as replacement for StringToReplace.
If you explicitly declare a variable to represent ReplacementString, use the String data type.
- VBA Construct: Replace parameter of the Replace function.
- Item: Start:=StartPosition.
- VBA Construct: Start parameter of the Replace function.
- Description: The Start parameter of the Replace function specifies the position within the string you work with where you start searching for StringToReplace.
The default value of the Start parameter is 1. In such case, the Replace function doesn't truncate the string. Therefore, you generally don't have to work with the Left function and concatenation operator. Please refer to the appropriate section (Replace String in Cell) above for further information about this scenario.
- VBA Construct: Start parameter of the Replace function.
- Item: Count:=NumberOfReplacements.
- VBA Construct: Count parameter of the Replace function.
- Description: The Count parameter of the Replace function specifies the number of substitutions you want to carry out. In other words, the number of times you want to replace StringToReplace with ReplacementString.
If you want VBA to replace all occurrences of StringToReplace after StartPosition with ReplacementString, omit the Count parameter. In such case, Count defaults to -1 and VBA carries out all possible substitutions. Please refer to the appropriate section (Replace All Occurrences of String in Cell) below for further information about this scenario.
- VBA Construct: Count parameter of the Replace function.
Macro Example to Replace String in Cell Specifying a Starting Position for Search
The following macro replaces the string “replace” (myStringToReplace) with the string “substitute” (myReplacementString) one time (myNumberOfReplacements) within the string in cell A6 of the worksheet named “Excel VBA Replace” (myCell). The search for myStringToReplace begins in position 14 (myStartPosition) of the string in myCell.
Sub replaceStringInCellWithStartPosition() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold parameters for string replacement (string to replace, replacement string, start position for search of string to replace, and number of replacements) Dim myStringToReplace As String Dim myReplacementString As String Dim myStartPosition As Long Dim myNumberOfReplacements As Long 'identify cell you work with Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A6") 'specify parameters for string replacement (string to replace, replacement string, start position for search of string to replace, and number of replacements) myStringToReplace = "replace" myReplacementString = "substitute" myStartPosition = 14 myNumberOfReplacements = 1 'return and concatenate the following strings, and assign the resulting (concatenated) string to Range.Value property of cell you work with '(i) string containing the first characters within the cell you work with (from first position up to the character before the start position for search of string to replace) '(ii) string resulting from working with the Replace function and the parameter for string replacement you specify myCell.Value = Left(String:=myCell.Value, Length:=myStartPosition - 1) & Replace(Expression:=myCell.Value, Find:=myStringToReplace, Replace:=myReplacementString, Start:=myStartPosition, Count:=myNumberOfReplacements) End Sub
Effects of Executing Macro Example to Replace String in Cell Specifying a Starting Position for Search
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces the string “replace” with the string “substitute” one time within the string in cell A6. The search for myStringToReplace begins in position 14 of the string in cell A6. This matches with the second occurrence of the “replace” string.
#3: Replace All Occurrences of String in Cell
VBA Code to Replace All Occurrences of String in Cell
To replace all occurrences of a string in a cell with VBA, use a statement with the following structure:
Cell.Value = Replace(Expression:=Cell.Value, Find:=StringToReplace, Replace:=ReplacementString)
Process Followed by VBA Code to Replace All Occurrences of String in Cell
VBA Statement Explanation
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property specifies the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
- VBA Construct: Assignment operator.
- Item: Replace(…).
- VBA Construct: Replace function.
- Description: The Replace function returns a string where a specific substring (StringToReplace) is replaced by another substring (ReplacementString). Within this macro structure, Replace carries out all possible substitutions.
- VBA Construct: Replace function.
- Item: Expression:=Cell.Value.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Description: The Expression parameter of the Replace function specifies the string expression containing the substring you want to replace (StringToReplace). Within this macro structure, Expression is the value (string) within Cell, as returned by the Range.Value property.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Item: Find:=StringToReplace.
- VBA Construct: Find parameter of the Replace function.
- Description: The Find parameter of the Replace function specifies the substring you search for and replace.
If you explicitly declare a variable to represent StringToReplace, use the String data type.
- VBA Construct: Find parameter of the Replace function.
- Item: Replace:=ReplacementString.
- VBA Construct: Replace parameter of the Replace function.
- Description: The Replace parameter of the Replace function specifies the substring you want to use as replacement for StringToReplace.
If you explicitly declare a variable to represent ReplacementString, use the String data type.
- VBA Construct: Replace parameter of the Replace function.
Macro Example to Replace All Occurrences of String in Cell
The following macro replaces all occurrences of the string “replace” (myStringToReplace) with the string “substitute” (myReplacementString) within the string in cell A7 of the worksheet named “Excel VBA Replace” (myCell).
Sub replaceAll() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold parameters for string replacement (string to replace and replacement string) Dim myStringToReplace As String Dim myReplacementString As String 'identify cell you work with Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A7") 'specify parameters for string replacement (string to replace and replacement string) myStringToReplace = "replace" myReplacementString = "substitute" 'replace all occurrences within string in cell you work with, and assign resulting string to Range.Value property of cell you work with myCell.Value = Replace(Expression:=myCell.Value, Find:=myStringToReplace, Replace:=myReplacementString) End Sub
Effects of Executing Macro Example to Replace All Occurrences of String in Cell
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces all (2) occurrences of the string “replace” with the string “substitute” within the string in cell A7.
#4: Replace Character in String
VBA Code to Replace Character in String
To replace a character in a string within a cell with VBA, use a statement with the following structure:
Cell.Value = Replace(Expression:=Cell.Value, Find:=CharacterToReplace, Replace:=ReplacementCharacter)
Process Followed by VBA Code to Replace Character in String
VBA Statement Explanation
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property specifies the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
- VBA Construct: Assignment operator.
- Item: Replace(…).
- VBA Construct: Replace function.
- Description: The Replace function returns a string where a specific character (CharacterToReplace) is replaced by another character (ReplacementCharacter). Within this macro structure, Replace carries out all possible substitutions.
- VBA Construct: Replace function.
- Item: Expression:=Cell.Value.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Description: The Expression parameter of the Replace function specifies the string expression containing the character you want to replace (CharacterToReplace). Within this macro structure, Expression is the value (string) within Cell, as returned by the Range.Value property.
- VBA Construct: Expression parameter of the Replace function, Range object and Range.Value property.
- Item: Find:=CharacterToReplace.
- VBA Construct: Find parameter of the Replace function.
- Description: The Find parameter of the Replace function specifies the character you search for and replace.
If you explicitly declare a variable to represent CharacterToReplace, use the String data type.
- VBA Construct: Find parameter of the Replace function.
- Item: Replace:=ReplacementCharacter.
- VBA Construct: Replace parameter of the Replace function.
- Description: The Replace parameter of the Replace function specifies the character you want to use as replacement for CharacterToReplace.
If you explicitly declare a variable to represent ReplacementCharacter, use the String data type.
- VBA Construct: Replace parameter of the Replace function.
Macro Example to Replace Character in String
The following macro replaces all occurrences of the character “a” (myCharacterToReplace) with the character “e” (myReplacementCharacter) within the string in cell A8 of the worksheet named “Excel VBA Replace” (myCell).
Sub replaceCharacterInString() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold parameters for character replacement (character to replace and replacement character) Dim myCharacterToReplace As String Dim myReplacementCharacter As String 'identify cell you work with Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A8") 'specify parameters for string replacement (character to replace and replacement character) myCharacterToReplace = "a" myReplacementCharacter = "e" 'replace all occurrences of character within string in cell you work with, and assign resulting string to Range.Value property of cell you work with myCell.Value = Replace(Expression:=myCell.Value, Find:=myCharacterToReplace, Replace:=myReplacementCharacter) End Sub
Effects of Executing Macro Example to Replace Character in String
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces all occurrences of the character “a” with the character “e” within the string in cell A8.
#5: Replace Multiple Characters in String
VBA Code to Replace Multiple Characters in String
To replace multiple characters in a string with VBA, use a macro with the following statement structure:
Dim StringReplace As String StringReplace = Cell.Value For Each Character In Array(CharactersList) StringReplace = Replace(Expression:=StringReplace, Find:=Character, Replace:=ReplacementCharacter) Next Character Cell.Value = StringReplace
Process Followed by VBA Code to Replace Multiple Characters in String
VBA Statement Explanation
Line #1: Dim StringReplace As String
- Item: Dim StringReplace As String.
- VBA Construct: Dim statement.
- Description: The Dim statement declares the StringReplace variable as of the String data type.
StringReplace represents the string you work with. StringReplace is both (i) the string where you replace multiple characters (prior to working with the Replace function and the For Each… Next statement) and (ii) the new string after multiple characters have been replaced (after working with the Replace function and the For Each… Next statement).
- VBA Construct: Dim statement.
Line #2: StringReplace = Cell.Value
- Item: StringReplace.
- VBA Construct: Variable of the string data type.
- Description: StringReplace represents the string you work with. StringReplace is both (i) the string where you replace multiple characters (prior to working with the Replace function and the For Each… Next statement) and (ii) the new string after multiple characters have been replaced (after working with the Replace function and the For Each… Next statement).
- VBA Construct: Variable of the string data type.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Range.Value property to the StringReplace variable.
- VBA Construct: Assignment operator.
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property returns the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
Lines #3 and #5: For Each Character In Array(CharactersList) | Next Character
- Item: For Each… In… Next.
- VBA Construct: For Each… Next statement.
- Description: The For Each… Next statement repeats the statement within the loop (line #4) for each element (Character) in the array returned by the Array function (Array(CharactersList)).
- VBA Construct: For Each… Next statement.
- Item: Character.
- VBA Construct: Element of For Each… Next statement and variable of the Variant data type.
- Description: The Element of the For Each… Next statement is a variable used to iterate through the elements of the array returned by the Array function (Array(CharactersList)).
If you explicitly declare a variable to represent Character, use the Variant data type.
- VBA Construct: Element of For Each… Next statement and variable of the Variant data type.
- Item: Array(CharactersList).
- VBA Construct: Array function.
- Description: The Array function returns a Variant containing an array. CharactersList is the comma-delimited list of characters (passed as strings) that you assign to each of the array elements
- VBA Construct: Array function.
Line #4: StringReplace = Replace(Expression:=StringReplace, Find:=Character, Replace:=ReplacementCharacter)
- Item: StringReplace.
- VBA Construct: Variable of the String data type.
- Description: StringReplace represents the string you work with. StringReplace is both (i) the string where you replace multiple characters (prior to working with the Replace function and the For Each… Next statement) and (ii) the new string after multiple characters have been replaced (after working with the Replace function and the For Each… Next statement).
- VBA Construct: Variable of the String data type.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Replace function to StringReplace.
- VBA Construct: Assignment operator.
- Item: Replace(…).
- VBA Construct: Replace function.
- Description: The Replace function returns a string (starting with StringReplace) where a specific character (Character) is replaced by another character (ReplacementCharacter). Within this macro structure, Replace carries out all possible substitutions.
- VBA Construct: Replace function.
- Item: Expression:=StringReplace.
- VBA Construct: Expression parameter of the Replace function and variable of the String data type.
- Description: The Expression parameter of the Replace function specifies the string expression (StringReplace) containing the characters you want to replace (CharactersList).
- VBA Construct: Expression parameter of the Replace function and variable of the String data type.
- Item: Find:=Character.
- VBA Construct: Find parameter of the Replace function and variable of the Variant data type.
- Description: The Find parameter of the Replace function specifies the character you search for and replace.
Within this macro structure, Character is also the Element of the For Each… Next statement. This is the variable used to iterate through the elements of the array returned by the Array function (Array(CharactersList)).
If you explicitly declare a variable to represent Character, use the Variant data type.
- VBA Construct: Find parameter of the Replace function and variable of the Variant data type.
- Item: Replace:=ReplacementCharacter.
- VBA Construct: Replace parameter of the Replace function.
- Description: The Replace parameter of the Replace function specifies the character you want to use as replacement for the characters you want to replace (CharactersList).
If you explicitly declare a variable to represent ReplacementCharacter, use the String data type.
- VBA Construct: Replace parameter of the Replace function.
Line #6: Cell.Value = StringReplace
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property specifies the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string represented by the StringReplace variable to the Range.Value property of Cell.
- VBA Construct: Assignment operator.
- Item: StringReplace.
- VBA Construct: Variable of the String data type.
- Description: StringReplace represents the string you work with. StringReplace is both (i) the string where you replace multiple characters (prior to working with the Replace function and the For Each… Next statement) and (ii) the new string after multiple characters have been replaced (after working with the Replace function and the For Each… Next statement).
- VBA Construct: Variable of the String data type.
Macro Example to Replace Multiple Characters in String
The following macro replaces all occurrences of the characters “a”, “e” and “i” (myCharactersArray) with the character “o” (myReplacementCharacter) within the string in cell A9 of the worksheet named “Excel VBA Replace” (myCell).
Sub replaceMultipleCharactersInString() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold string you work with and replacement character Dim myString As String Dim myReplacementCharacter As String 'declare variable to hold Variant containing array whose elements are characters to replace, and variable used to iterate through the elements of the array Dim myCharactersArray() As Variant Dim iCharacter As Variant 'identify the cell you work with and the string within that cell Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A9") myString = myCell.Value 'specify elements of array (characters to replace) and replacement character myCharactersArray = Array("a", "e", "i") myReplacementCharacter = "o" 'loop through each element (iCharacter) of the array (myCharacterArray) For Each iCharacter In myCharactersArray 'replace all occurrences of element (iCharacter) within current version of string you work with (myString), and assign resulting string to myString variable myString = Replace(Expression:=myString, Find:=iCharacter, Replace:=myReplacementCharacter) Next iCharacter 'assign string represented by myString variable to Range.Value property of cell you work with myCell.Value = myString End Sub
Effects of Executing Macro Example to Replace Multiple Characters in String
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces all occurrences of the characters “a”, “e” and “i” with the character “o” within the string in cell A9.
#6: Replace Wildcard
VBA Code to Replace Wildcard
To replace characters in a string within a cell using a wildcard with VBA, use a statement with the following structure:
Cell.Replace What:=StringToReplace, Replacement:=ReplacementString, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Process Followed by VBA Code to Replace Wildcard
VBA Statement Explanation
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Replace.
- VBA Construct: Range.Replace method.
- Description: The Range.Replace method replaces a specific substring (StringToReplace) by another substring (ReplacementString) within Cell.
- VBA Construct: Range.Replace method.
- Item: What:=StringToReplace.
- VBA Construct: What parameter of the Range.Replace method.
- Description: The What parameter of the Range.Replace method specifies the string you want to replace (StringToReplace).
When specifying StringToReplace, use the following wildcards as required:
- Question mark (?): The question mark represents any single character. For example, “w?ldcard” represents a string (i) starting with a “w”, (ii) followed by any single character (including “i”), and (iii) ending with “lcard”.
- Asterisk (*): The asterisk represents any group of characters. For example, “w*card” represents a string (i) starting with a “w”, (ii) followed by any group of characters (including “ild”), and (iii) ending with “card”.
If you explicitly declare a variable to represent StringToReplace, use the String data type.
- Question mark (?): The question mark represents any single character. For example, “w?ldcard” represents a string (i) starting with a “w”, (ii) followed by any single character (including “i”), and (iii) ending with “lcard”.
- VBA Construct: What parameter of the Range.Replace method.
- Item: Replacement:=ReplacementString.
- VBA Construct: Replacement parameter of the Range.Replace method.
- Description: The Replacement parameter of the Range.Replace method specifies the substring you want to use as replacement for StringToReplace.
- VBA Construct: Replacement parameter of the Range.Replace method.
- Item: LookAt:=xlPart.
- VBA Construct: LookAt parameter of the Range.Replace method.
- Description: The LookAt parameter of the Range.Replace method specifies that Range.Replace looks at (and matches) a part (xlPart) of the search data.
- VBA Construct: LookAt parameter of the Range.Replace method.
- Item: SearchOrder:=xlByRows.
- VBA Construct: SearchOrder parameter of the Range.Replace method.
- Description: The SearchOrder parameter of the Range.Replace method specifies that Range.Replace searches by rows (xlByRows).
- VBA Construct: SearchOrder parameter of the Range.Replace method.
- Item: MatchCase:=False.
- VBA Construct: MatchCase parameter of the Range.Replace method.
- Description: The MatchCase parameter of the Range.Replace method specifies that the search isn't case sensitive (False).
- VBA Construct: MatchCase parameter of the Range.Replace method.
- Item: SearchFormat:=False.
- VBA Construct: SearchFormat parameter of the Range.Replace method.
- Description: The SearchFormat parameter of the Range.Replace method specifies that the search doesn't consider formatting (False).
- VBA Construct: SearchFormat parameter of the Range.Replace method.
- Item: ReplaceFormat:=False.
- VBA Construct: ReplaceFormat parameter of the Range.Replace method.
- Description: The ReplaceFormat parameter of the Range.Replace method specifies that no replace format is set (False).
- VBA Construct: ReplaceFormat parameter of the Range.Replace method.
Macro Example to Replace Wildcard
The following macro replaces the string (i) starting with a “w”, (ii) followed by any group of characters (including “ild”), and (iii) ending with “card” (myStringToReplace), with the string “question mark” (myReplacementString) within the string in cell A10 of the worksheet named “Excel VBA Replace” (myCell).
Sub replaceWildcard() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold parameters for string replacement (string to replace and replacement string) Dim myStringToReplace As String Dim myReplacementString As String 'identify the cell you work with Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A10") 'specify parameters for string replacement (string to replace and replacement string). Use wildcards (? or *) to specify string to replace myStringToReplace = "w*card" myReplacementString = "question mark" 'replace all occurrences within string in cell you work with, and assign resulting string to Range.Value property of cell you work with myCell.Replace What:=myStringToReplace, Replacement:=myReplacementString, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub
Effects of Executing Macro Example to Replace Wildcard
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces the string “wildcard” which (i) starts with a “w”, (ii) followed by a group of characters (“ild”), and (iii) ends with “card”, with the string “question mark” within the string in cell A10.
#7: Replace Character in String by Position
VBA Code to Replace Character in String by Position
To replace a character in a string within a cell according to its position with VBA, use a statement with the following structure:
Cell.Value = WorksheetFunction.Replace(Cell.Value, CharacterPosition, CharactersToReplace, ReplacementString)
Process Followed by VBA Code to Replace Character in String by Position
VBA Statement Explanation
- Item: Cell.
- VBA Construct: Range object.
- Description: Range object representing the cell you work with.
You can usually return a Range object with constructs such as the Worksheet.Range, Worksheet.Cells (with the Range.Item) or Range.Offset properties.
- VBA Construct: Range object.
- Item: Value.
- VBA Construct: Range.Value property.
- Description: The Range.Value property specifies the value (in this case string) within Cell.
- VBA Construct: Range.Value property.
- Item: =.
- VBA Construct: Assignment operator.
- Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
- VBA Construct: Assignment operator.
- Item: WorksheetFunction.Replace(…).
- VBA Construct: WorksheetFunction.Replace method.
- Description: The WorksheetFunction.Replace method replaces a substring with a different string (ReplacementString). The replaced substring is determined based on its position within the string you work with (CharacterPosition) and the number of characters to replace (CharactersToReplace).
- VBA Construct: WorksheetFunction.Replace method.
- Item: Cell.Value.
- VBA Construct: Arg1 parameter of the WorksheetFunction.Replace method, Range object and Range.Value property.
- Description: The Arg1 parameter of the WorksheetFunction.Replace method specifies the string containing the substring you want to replace. Within this macro structure, Arg1 is the value (string) within Cell, as returned by the Range.Value property.
If you explicitly declare a variable to represent Arg1, use the String data type.
- VBA Construct: Arg1 parameter of the WorksheetFunction.Replace method, Range object and Range.Value property.
- Item: CharacterPosition.
- VBA Construct: Arg2 parameter of the WorksheetFunction.Replace method.
- Description: The Arg2 parameter of the WorksheetFunction.Replace method specifies the starting position within Arg1 (Cell.Value) of the substring you want to replace with Arg4 (ReplacementString).
If you explicitly declare a variable to represent Arg2 (CharacterPosition), use the Double data type.
- VBA Construct: Arg2 parameter of the WorksheetFunction.Replace method.
- Item: CharactersToReplace.
- VBA Construct: Arg3 parameter of the WorksheetFunction.Replace method.
- Description: The Arg3 parameter of the WorksheetFunction.Replace method specifies the number of characters within Arg1 (Cell.Value) you want to replace with Arg4 (ReplacementString).
If you explicitly declare a variable to represent Arg3 (CharactersToReplace), use the Double data type.
- VBA Construct: Arg3 parameter of the WorksheetFunction.Replace method.
- Item: ReplacementString.
- VBA Construct: Arg4 parameter of the WorksheetFunction.Replace method.
- Description: The Arg4 parameter of the WorksheetFunction.Replace method specifies the substring you want to use as replacement.
If you explicitly declare a variable to represent Arg4 (ReplacementString), use the String data type.
- VBA Construct: Arg4 parameter of the WorksheetFunction.Replace method.
Macro Example to Replace Character in String by Position
The following macro replaces the string starting in position 10 (myCharacterPosition) with a length of 1 character (myCharactersToReplace) with the string “+” (myReplacementString) within the string in cell A11 of the worksheet named “Excel VBA Replace” (myCell).
Sub replaceCharacterByPosition() 'Source: https://powerspreadsheets.com/ 'For further information: https://powerspreadsheets.com/excel-vba-replace-substitute/ 'declare object variable to hold reference to cell you work with Dim myCell As Range 'declare variables to hold parameters for string replacement (starting position of string to replace, number of characters to replace, and replacement string) Dim myCharacterPosition As Double Dim myCharactersToReplace As Double Dim myReplacementString As String 'identify the cell you work with Set myCell = ThisWorkbook.Worksheets("Excel VBA Replace").Range("A11") 'specify parameters for string replacement (starting position of string to replace, number of characters to replace, and replacement string) myCharacterPosition = 10 myCharactersToReplace = 1 myReplacementString = "+" 'replace string in cell you work with, and assign resulting string to Range.Value property of cell you work with myCell.Value = WorksheetFunction.Replace(myCell.Value, myCharacterPosition, myCharactersToReplace, myReplacementString) End Sub
Effects of Executing Macro Example to Replace Character in String by Position
The following GIF illustrates the results of executing this macro example. As expected, the macro replaces the string starting in position 10 with a length of 1 character with the string “+” within the string in cell A11.
References to VBA Constructs Used in this VBA Tutorial
Use the following links to visit the appropriate webpage in the Microsoft Developer Network:
- Identify the workbook and worksheet you work with:
- Identify the cell you work with:
- Obtain or set the string within the cell you work with:
- Assign a new string to the cell you work with or to the variable representing the string you work with:
- Replace characters or strings:
- Complete and concatenate truncated strings:
- Create an array containing characters and loop through its elements:
- Work with variables and data types:
- Dim statement.
- Set statement.
- Data types:
- Dim statement.