Vba excel как заменить символ в строке

Замена части строкового выражения в VBA Excel по указанному шаблону поиска и замены и возврат преобразованной строки с помощью функции Replace.

Replace – это функция, которая возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз.

Если замену подстроки необходимо осуществить в диапазоне ячеек, функцию Replace следует применить к значению каждой ячейки заданного диапазона. Проще замену в диапазоне ячеек произвести с помощью метода Range.Replace.

Синтаксис и параметры

Replace(expression, find, replace, [start], [count], [compare])

  • expression – исходное строковое выражение, содержащее подстроку, которую необходимо заменить;
  • find – искомая подстрока, подлежащая замене;
  • replace – подстрока, заменяющая искомую подстроку;
  • start – порядковый номер символа исходной строки, с которого необходимо начать поиск, часть строки до этого номера обрезается, по умолчанию равен 1 (необязательный параметр);
  • count – количество замен подстроки, по умолчанию выполняется замена всех обнаруженных вхождений (необязательный параметр);
  • compare – числовое значение, указывающее вид сравнения (необязательный параметр).

Сокращенный синтаксис функции Replace с необязательными параметрами по умолчанию:

Replace(expression, find, replace)

Параметр compare

Константа Значение Описание
vbUseCompareOption -1 используется параметр, заданный оператором Option Compare
vbBinaryCompare 0 выполняется двоичное сравнение
vbTextCompare 1 применяется текстовое сравнение

По умолчанию используется двоичное (бинарное) сравнение. При таком сравнении буквенные символы в нижнем и верхнем регистрах различаются. Если необходимо провести замену подстроки независимо от регистра букв, используйте значение параметра compare – vbTextCompare (1).

Примеры кода VBA Excel

Пример 1

Замена единственного вхождения искомой подстроки в строковое выражение:

Sub Primer1()

Dim a

a = «Сливочное масло»

a = Replace(a, «Сливочное», «Рыжиковое»)

MsgBox a

‘Результат: «Рыжиковое масло»

End Sub

Пример 2

Замена нескольких вхождений искомой подстроки в строковое выражение:

Sub Primer2()

Dim a

a = «Идёт медведь, идёт лиса, идёт грач»

‘с параметром compare по умолчанию

a = Replace(a, «идёт», «бежит»)

MsgBox a

‘Результат:

‘Идёт медведь, бежит лиса, бежит грач

a = «Идёт медведь, идёт лиса, идёт грач»

‘с параметром compare=1(vbTextCompare)

a = Replace(a, «идёт», «бежит», , , 1)

MsgBox a

‘Результат:

‘бежит медведь, бежит лиса, бежит грач

End Sub

Пример 3

Замена одного вхождения искомой подстроки в строковое выражение из нескольких с обрезанием исходной строки до 15 символа:

Sub Primer3()

Dim a

a = «Идёт медведь, идёт лиса, идёт грач»

a = Replace(a, «идёт», «бежит», 15, 1)

MsgBox a

‘Результат:

‘бежит лиса, идёт грач

End Sub

In this Article

  • Replace Function
    • Starting Position
    • Replace a Few Occurrences Only
    • Case Sensitivity
    • Double Quotes
    • Replace Break Line in Cell

This tutorial will demonstrate how to use the VBA Replace Function to replace strings of text.

Replace Function

The VBA Replace function replaces a substring of text with another substring.

Sub ReplaceExample_1()
MsgBox Replace("ABCABCABC", "A", "!")       
'Result is: "!BC!BC!BC"
MsgBox Replace("I like pink, red and black", "pink", "purple")
'Result is: "I like purple, red and black"
MsgBox Replace("A, B, C, A, B, C, A, B, C", ", ", ",")
'Result is: "ABCABCABC"

MsgBox Replace("ABCABCABC", "ABC", "!")
'Result is: "!!!"
MsgBox Replace("ABCABCABC", "ABc", "!")
'Result is: "ABCABCABC"
MsgBox Replace("ABCABCABC", "ZBC", "!")
'Result is: "ABCABCABC"

End Sub

Starting Position

By assigning a start position, you can indicate what character position to start with (default = 1).

Sub ReplaceExample_2()
MsgBox Replace("ABCABCABC", "A", "123")        'Result is: "123BC123BC123BC"
MsgBox Replace("ABCABCABC", "A", "123", 2)     'Result is: "BC123BC123BC"
MsgBox Replace("ABCABCABC", "A", "123", 7)     'Result is: "123BC"
MsgBox Replace("ABCABCABC", "A", "123", 8)     'Result is: "BC"

MsgBox Replace("ABCABCABC", "ABC", "!@")        'Result is: "!@!@!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 2)     'Result is: "BC!@!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 6)     'Result is: "C!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 7)     'Result is: "!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 8)     'Result is: "BC"

End Sub

Replace a Few Occurrences Only

You can also indicate how many instances of the substring to replace (default All)

Sub ReplaceExample_3()
MsgBox Replace("ABCABCABC", "A", "12")      'Result is: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", , 1)     'Result is: "12BCABCABC"
MsgBox Replace("ABCABCABC", "A", "12", , 2)    'Result is: "12BC12BCABC"
MsgBox Replace("ABCABCABC", "A", "12", , 3)    'Result is: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", , 5)    'Result is: "12BC12BC12BC"

MsgBox Replace("ABCABCABC", "A", "12", 3, 1)
'Result is: "C12BCABC"
'We replaced A with 12, 1 time starting from position 3 of the original string.

End Sub

Case Sensitivity

The Replace Function is case sensitive by default. You can switch to case insensitive by adding the optional parameter (vbTextCompare). Here, you must also define the starting position of the search.

Sub ReplaceExample_4()
MsgBox Replace("ABcABCABc", "ABc", "12")
'Result is: "12ABC12"
MsgBox Replace("ABcABCABc", "ABc", "12", , , vbTextCompare)
'Result is: "121212"
'When we use vbTextCompare we need to add the 2 other optional arguments:
'start and count

MsgBox Replace("ABcABCABcABc", "ABc", "12", 3, 1)
'Result is: "cABC12ABc"
'Started from position3 and replaced ABC only 1 time.

End Sub

You can also perform a case-insensitive Replace, by adding Option Compare Text to the top of your module:

Option Compare Text

Double Quotes

The Replace Function can replace the double quotes character used to delimit the start and end of a string.

VBA Chr function can return a character from its number in the character set.

MsgBox Chr(34) 'Result is: "

Or

MsgBox Chr(64) 'Result is: @

Double quotes can be used inside the Replace Function using “””” or VBA Function Chr(34).

Sub ReplaceExample_5()
Dim StrEx As String

StrEx = "AB""AB"""
MsgBox StrEx 'Result is: AB"AB"

MsgBox Replace(StrEx, Chr(34), "12")
'Result is: AB12AB12

MsgBox Replace(StrEx, """", "DQ")
'Result is: "ABDQABDQ"

End Sub

Replace Break Line in Cell

The Replace Function can find the break line special character in a cell and remove it or replace it with a space character. The break line special character can be entered in a cell using the keyboard shortcut Alt+Enter and can be used in VBA code with its Character set number using VBA function Chr(10).

replace line break

Sub ReplaceExample_6()
Dim StrEx As String 'Define a string variable

'Read the value of cell A2 in worksheet Sheet1
StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A2").Value

'The break line character entered with Alt+Enter is Chr(10) and is invisible.
'This code line replaces that character with space
StrEx = Replace(StrEx, Chr(10), " ")

'Write the replaced value in cell B2 in worksheet Sheet1
ThisWorkbook.Worksheets("Sheet1").Range("B2").Value = StrEx

End Sub

Excel VBA Tutorial about replacing or substituting strings or characters within strings with macrosIn 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.

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:
    • Learn about commonly-used VBA terms here.
    • Learn about the Excel Object Model here.
    • Learn about working with variables here.
    • Learn about data types here.
    • Learn about working with arrays here.
  • Practical VBA applications and macro examples:
    • Learn about referring to cell ranges here.
    • Learn about working with worksheet functions within VBA here.

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

Work with Range.Value property of Cell > Replace StringToReplace with ReplacementString > Assign string to Range.Value property

VBA Statement Explanation

  1. 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.

  2. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property specifies the value (in this case string) within Cell.
  3. Item: =.
    1. VBA Construct: Assignment operator.
    2. Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
  4. 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).
  5. 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.
  6. 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.

  7. 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.

  8. 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.

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.

Macro replaces string in cell

#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

Work with Range.Value property > Return first characters of string > Replace StringToReplace with ReplacementString > Concatenate > Assign string to Range.Value property

VBA Statement Explanation

  1. 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.

  2. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property specifies the value (in this case string) within Cell.
  3. Item: =.
    • VBA Construct: Assignment operator.
    • Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
  4. 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.

  5. 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.

  6. 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.

  7. Item: &.
    • VBA Construct: Concatenation operator.
    • Description: The & operator concatenates the strings returned by the Left and Replace functions.
  8. 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).
  9. 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.
  10. 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.

  11. 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.

  12. 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.

  13. 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.

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.

Macro replaces string in cell starting search in specified position

#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

Work with Range.Value property of Cell > Replace all occurrences of StringToReplace with ReplacementString > Assign string to Range.Value property

VBA Statement Explanation

  1. 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.

  2. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property specifies the value (in this case string) within Cell.
  3. Item: =.
    1. VBA Construct: Assignment operator.
    2. Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
  4. 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.
  5. 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.
  6. 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.

  7. 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.

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.

Macro replaces all occurrences of string in cell

#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

Work with Range.Value property > Replace all occurrences of CharacterToReplace with ReplacementCharacter > Assign string to Range.Value property

VBA Statement Explanation

  1. 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.

  2. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property specifies the value (in this case string) within Cell.
  3. Item: =.
    1. VBA Construct: Assignment operator.
    2. Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
  4. 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.
  5. 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.
  6. 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.

  7. 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.

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.

Macro replaces character in string

#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

Assign value returned by Range.Value to StringReplace > Loop through all elements of array containing CharactersList > Replace all occurrences of current array element > Assign string to StringReplace variable

VBA Statement Explanation

Line #1: Dim StringReplace As String

  1. 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).

Line #2: StringReplace = Cell.Value

  1. 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).
  2. Item: =.
    • VBA Construct: Assignment operator.
    • Description: The = operator assigns the string returned by the Range.Value property to the StringReplace variable.
  3. 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.

  4. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property returns the value (in this case string) within Cell.

Lines #3 and #5: For Each Character In Array(CharactersList) | Next Character

  1. 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)).
  2. 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.

  3. 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

Line #4: StringReplace = Replace(Expression:=StringReplace, Find:=Character, Replace:=ReplacementCharacter)

  1. 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).
  2. Item: =.
    1. VBA Construct: Assignment operator.
    2. Description: The = operator assigns the string returned by the Replace function to StringReplace.
  3. 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.
  4. 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).
  5. 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.

  6. 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.

Line #6: Cell.Value = StringReplace

  1. 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.

  2. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property specifies the value (in this case string) within Cell.
  3. Item: =.
    • VBA Construct: Assignment operator.
    • Description: The = operator assigns the string represented by the StringReplace variable to the Range.Value property of Cell.
  4. 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).

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.

Macro replaces multiple characters in string

#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

Identify Cell > Replace StringToReplace with ReplacementString and use wildcards when specifying StringToReplace

VBA Statement Explanation

  1. 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.

  2. Item: Replace.
    • VBA Construct: Range.Replace method.
    • Description: The Range.Replace method replaces a specific substring (StringToReplace) by another substring (ReplacementString) within Cell.
  3. 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.

  4. 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.
  5. 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.
  6. 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).
  7. 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).
  8. 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).
  9. 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).

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.

Macro replaces wildcard

#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

Identify substring to replace based on position and number of characters > Replace with ReplacementString > Assign string to Range.Value property

VBA Statement Explanation

  1. 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.

  2. Item: Value.
    • VBA Construct: Range.Value property.
    • Description: The Range.Value property specifies the value (in this case string) within Cell.
  3. Item: =.
    1. VBA Construct: Assignment operator.
    2. Description: The = operator assigns the string returned by the Replace function to the Range.Value property of Cell.
  4. 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).
  5. 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.

  6. 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.

  7. 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.

  8. 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.

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.

Macro replaces character in string by position

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:
    • Workbook object.
    • Application.ThisWorkbook property.
    • Worksheet object.
    • Workbook.Worksheets property.
  • Identify the cell you work with:
    • Range object.
    • Worksheet.Range property.
    • Worksheet.Cells property.
    • Range.Item property.
    • Range.Offset property.
  • Obtain or set the string within the cell you work with:
    • Range.Value property.
  • Assign a new string to the cell you work with or to the variable representing the string you work with:
    • = operator.
  • Replace characters or strings:
    • Replace function.
    • Range.Replace method.
    • WorksheetFunction.Replace method.
  • Complete and concatenate truncated strings:
    • Left function.
    • & operator.
  • Create an array containing characters and loop through its elements:
    • For Each… Next statement.
    • Array function.
  • Work with variables and data types:
    • Dim statement.
    • Set statement.
    • Data types:
      • Double data type.
      • Long data type.
      • String data type.
      • Variant data type.

totn Excel Functions


This Excel tutorial explains how to use the Excel REPLACE function (in VBA) with syntax and examples.

Description

The Microsoft Excel REPLACE function replaces a sequence of characters in a string with another set of characters.

The REPLACE function is a built-in function in Excel that is categorized as a String/Text Function. It can be used as a VBA function (VBA) in Excel. As a VBA function, you can use this function in macro code that is entered through the Microsoft Visual Basic Editor.

Please read our REPLACE function (WS) page if you are looking for the worksheet version of the REPLACE function as it has a very different syntax.

Syntax

The syntax for the REPLACE function in Microsoft Excel is:

Replace ( string1, find, replacement, [start, [count, [compare]]] )

Parameters or Arguments

string1
The string to replace a sequence of characters with another set of characters.
find
The string that will be searched for in string1.
replacement
It will replace find in string1.
start
Optional. This is the position in string1 to begin the search. If this parameter is omitted, the REPLACE function will begin the search at position 1.
count
Optional. This is the number of occurrences to replace. If this parameter is omitted, the REPLACE function will replace all occurrences of find with replacement.
compare

Optional. This can be one of the following values:

Parameter Value Description
vbBinaryCompare Binary comparison
vbTextCompare Textual comparison

Returns

The REPLACE function returns a string value.

Applies To

  • Excel for Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 for Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000

Type of Function

  • VBA function (VBA)

Example (as VBA Function)

The REPLACE function can be used in VBA code in Microsoft Excel.

Let’s look at some Excel REPLACE function examples and explore how to use the REPLACE function in Excel VBA code:

Replace("alphabet", "bet", "hydro")
Result: "alphahydro"

Replace ("alphabet", "a", "e")
Result: "elphebet"

Replace("alphabet", "a", "e", 2)
Result: "lphebet"

Replace("alphabet", "a", "e", 1, 1)
Result: "elphabet"

For example:

Dim LResult As String

LResult = Replace("alphabet", "a", "e")

In this example, the variable called LResult would now contain the value «elphebet».

VBA Replace function in Excel is categorized as a Text/String function in VBA. It is a built-in function in MS Office Excel. It replaces a sub-string with another string in a given string. It has three required parameters and three optional parameters. If expression is Null, then the function returns an error. Expression contains length, then it returns an empty string.

This function use as a VBA function and a Excel Worksheet function(It has different syntax in Excel). The Replace function can be used in either procedure or function in a VBA editor window in Excel. We can use this VBA Replace function any number of times in any number of procedures or functions. In the following section we learn what is the syntax and parameters of the Replace function, where we can use this Replace function and real-time examples in VBA.

Table of Contents:

  • Overview
  • Syntax of VBA Replace Function
  • Parameters or Arguments
  • Where we can apply or use the VBA Replace Function?
  • Ex 1: Replace all occurrences of substring “F1” with “Help”
  • Ex 2: Replace all occurrences of substring “Help” with “F1”
  • Ex 3: Replace all occurrences of substring “F1” with “Help” starting from position 13
  • Ex 4: Replace all occurrences of substring “F1” with “Help” starting from position 13 and keep whole string
  • Ex 5: Replace last occurrence of substring “F1” with “Help”
  • Ex 6: Remove all occurrences of substring ‘F1’
  • Instructions to Run VBA Macro Code
  • Other Useful Resources

The syntax of the VBA Replace function is

Replace(Expression, Find, Replace, [Start], [Count], [Compare])

Note: This Replace function returns a string.

Parameters or Arguments:

This function has three mandatory parameters and three optional parameters for the Replace Function.
Where

Expression: An Expression is a mandatory argument. It represents a string expression you want to replace sub-string in.
Find: Find is a mandatory argument. It represents a sub-string which we want to find or search within an expression.
Replace: Replace is a mandatory argument. It represents a sub-string which we want to replace within an expression.
Start: Start is an optional parameter. Default value is ‘1’. It represents the position in expression to start search.
Count: Count is an optional parameter. It represents the number of occurrences to replace sub-string within an expression. Default value is ‘-1’. If we ignore, it will replace all occurrences of sub-string with another specified sub-string.
Compare: Compare is an optional parameter. It represents a numeric value. It specifies the type of comparison to evaluate the sub-strings. This argument can have anyone of the following value. Default comparison is ‘vbBinaryCompare’.

VBA Constant Value Description
vbUseCompareOption -1 Performs a comparison using the Option Compare statement.
vbBinaryCompare 0 performs a binary comparison
vbTextCompare 1 performs a text comparison
vbDatabaseCompare 2 performs a database comparison. It applies only in MS Access.

Where we can apply or use the VBA Replace Function?

We can use this VBA Replace function in MS Office 365, MS Excel 2016, MS Excel 2013, 2011, Excel 2010, Excel 2007, Excel 2003, Excel 2016 for Mac, Excel 2011 for Mac, Excel Online, Excel for iPhone, Excel for iPad, Excel for Android tablets and Excel for Android Mobiles.

Example 1: Replace all occurrences of sub-string “F1” with “Help”

Here is a simple example of the VBA Replace function. This below example macro returns a string. The output of the below macro is ‘VBAHelp’.

'Replace all occurrences of sub-string "F1" with "Help".
Sub VBA_Replace_Function_Ex1()

    Dim sString As String, sSubString As String
    
    sString = "VBAF1"
    
    sSubString = Replace(sString, "F1", "Help")
    
    MsgBox "Replace F1 with Help :" & sSubString, vbInformation, "VBA Replace Function"
    
End Sub

Output: Here is the screen shot of the first example output.
VBA Replace Function

Example 2: Replace all occurrences of substring “Help” with “F1”

Here is a simple example of the VBA Replace function. This below example macro returns a string. The output of the below macro is ‘VBAF1’.

'Replace all occurrences of sub-string "Help" with "F1".
Sub VBA_Replace_Function_Ex2()

    Dim sString As String, sSubString As String
    
    sString = "VBAF1"
    
    sSubString = Replace(sString, "Help", "F1")
    
    MsgBox "Replace Help with F1 :" & sSubString, vbInformation, "VBA Replace Function"
    
End Sub

Output: Here is the screen shot of the second example output.
VBA Replace Function

Example 3: Replace all occurrences of sub-string “F1” with “Help” starting from position 13

Here is a simple example of the VBA Replace function. This below example macro returns a string. It ignores specified ‘N(start)’ characters, when we specify start position. The output of the below macro is ‘VBAHelp-VBAHelp-VBAHelp’.

'Replace all occurrences of sub-string "F1" with "Help" starting from position 13
Sub VBA_Replace_Function_Ex3()

    Dim sString As String, sSubString As String
    
    sString = "VBAF1-VBAF1-VBAF1-VBAF1-VBAF1"
    
    sSubString = Replace(sString, "F1", "Help", 13)
    
    MsgBox "Replace F1 with Help :" & sSubString, vbInformation, "VBA Replace Function"
    
End Sub

Output: Here is the screen shot of the third example output.
VBA Replace Function

Example 4: Replace all occurrences of sub-string “F1” with “Help” starting from position 13 and keep whole string

Here is a simple example of the VBA Replace function. This below example macro returns a string. It ignores specified ’13(start)’ characters, when we specify start position. In this example we are using left function to extract left most characters from the given string. And adding the output to original output. Here is the final output of the below macro is ‘VBAF1-VBAF1-VBAHelp-VBAHelp-VBAHelp’.

'Replace all occurrences of sub-string "F1" with "Help" starting from position 13 and keep whole string
Sub VBA_Replace_Function_Ex4()

    Dim sString As String, sSubString As String
    
    sString = "VBAF1-VBAF1-VBAF1-VBAF1-VBAF1"
    
    sSubString = Left(sString, 12) & Replace(sString, "F1", "Help", 13)
    
    MsgBox "Replace F1 with Help :" & sSubString, vbInformation, "VBA Replace Function"
    
End Sub

Output: Here is the screen shot of the fourth example output.
VBA Replace Function

Example 5: Replace last occurrence of sub-string “F1” with “Help”

Here is a simple example of the VBA Replace function. This below example macro returns a string. Here is the final output of the below macro is ‘VBAF1-VBAF1-VBAF1-VBAF1-VBAHelp’.

'Replace last occurrence of substring "F1" with "Help"
Sub VBA_Replace_Function_Ex5()

    Dim sString As String, sSubString As String
    
    sString = "VBAF1-VBAF1-VBAF1-VBAF1-VBAF1"
    
    sString = StrReverse(sString)
    
    sString = Replace(sString, StrReverse("F1"), StrReverse("Help"), , 1)
    
    sSubString = StrReverse(sString)
    
    MsgBox "Replace F1 with Help :" & sSubString, vbInformation, "VBA Replace Function"
    
End Sub

Output: Here is the screen shot of the fifth example output.
VBA Replace Function

Example 6: Remove all occurrences of sub-string ‘F1’

Here is a simple example of the VBA Replace function. This below example macro returns a string. It removes all occurrences of sub-string within a string. Here is the final output of the below macro is ‘VBA-VBA-VBA-VBA-VBA’.

'Remove all occurrences of sub-string 'F1'
Sub VBA_Replace_Function_Ex6()

    Dim sString As String, sSubString As String
    
    sString = "VBAF1-VBAF1-VBAF1-VBAF1-VBAF1"
    
    sSubString = Replace(sString, "F1", "")
    
    MsgBox "Remove all occurences of F1 :" & sSubString, vbInformation, "VBA Replace Function"
    
End Sub

Output: Here is the screen shot of the sixth example output.
VBA Replace Function

Instructions to Run VBA Macro Code or Procedure:

You can refer the following link for the step by step instructions.

Instructions to run VBA Macro Code

Other Useful Resources:

Click on the following links of the useful resources. These helps to learn and gain more knowledge.

VBA Tutorial VBA Functions List VBA Arrays in Excel Blog

VBA Editor Keyboard Shortcut Keys List VBA Interview Questions & Answers

Главная » Функции VBA »

28 Апрель 2011              351426 просмотров

  • ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC("D") вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB() — возвращает только первый байт числового кода для символа.
    • AscW() — возвращает код для символа в кодировке Unicode
  • Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — "), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.
        Dim sWord As String
        sWord = Chr(34) & "Слово в кавычках" & Chr(34)

    Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().

  • InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.
        Dim sStr As String
        sStr = "w"
        If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then
            MsgBox "Искомое слово присутствует!"
        Else
            MsgBox "Искомое слово отсутствует!"
        End If

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки

  • Left(), Right(), Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox Mid(sStr, 1, 5)
  • Len() — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
  • LCase() и UCase() — перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.).
  • LSet() и RSet() — возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа). Лишние символы обрезаются, на место недостающих подставляются пробелы.
  • LTrim(), RTrim(), Trim() — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
  • Replace()— возможность заменить в строке одну последовательность символов на другую.
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox Replace(sStr, "Hello", "Bay")
  • Space() — получить строку из указанного вами количества пробелов;
    Еще одна похожая функция — Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
  • StrComp() — возможность сравнить две строки.
  • StrConv() — возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.):
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox StrConv("Hello, World!", vbUpperCase)

    В качестве второго параметра параметра могут применяться константы:

    • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
    • vbLowerCase: Преобразует все текстовые символы в нижний регистр
    • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
    • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
    • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
    • **vbKatakana: Преобразует символы Hiragana в символы Katakana
    • **vbHiragana: Преобразует символы Katakana в символы Hiragana
    • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
    • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию
    • * применимо для локализацией Дальнего востока
      ** применимо только для Японии
      *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
  • String() — позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().

Статья помогла? Сделай твит, поделись ссылкой с друзьями!

VBA Replace is a quite useful string function in Excel VBA. Functions like replace ease your tasks while dealing with strings.

As the name suggests the job of the Replace function is to substitute a set of characters in a string with a new set of characters.

In Excel VBA there are two functions that can be used for performing string replace operations. And today I will highlight and give examples of both these functions:

VBA Replace Function

1. VBA REPLACE Function

As I have foretold the Replace function simply replaces a set of characters from a string with another predefined set of characters.

The basic syntax of a VBA Replace function is as follows:

=Replace( Source_string, Old_string, Replacement_string, [start, [count, [compare]]] )

Here, ‘Source_string’ is the string from which we have to replace the characters.

‘Old_string’ is a set of characters or a string which is to be replaced.

‘Replacement_string’ is a set of characters with which the ‘Old_string’ is to be replaced.

‘start’ represents the numerical position in the ‘Source_string’ from which the search should begin. It is an optional parameter. If we omit this parameter then the search begins at position 1.

‘count’ is the number of occurrences of ‘Old_string’ to be replaced. It is an optional parameter. If its value is omitted then all the occurrences of ‘Old_string’ in the ‘Source_string’ will be replaced.

‘compare’ is also an optional parameter. It signifies the type of comparison algorithm to be used while Replace Function searches for the occurrences of ‘Old_string’ in the ‘Source_string’. In most cases, it is better to omit this value. But for advanced cases, the values of this parameter can be any one of these.

Parameter Value Description
 vbBinaryCompare  Use this in case of a Binary comparison.
 vbTextCompare  Use this in case of a Text to Text comparison
 vbDatabaseCompare  It uses the locale settings of a Database for comparison rather than straight text.

Examples of VBA REPLACE Function

Example 1:

Replace("Excel Tips", "Tips", "Trick")

This statement would return “Excel Trick”.

Example 2:

Replace("Excel VBA", "Tips", "Trick")

This statement would return “Excel VBA” as here we have asked the Replace function to replace “Tips” but as you can see “Tips” text string is not present inside the Source string, hence the output will be Source string as it is.

Example 3:

Replace("alligator", "a", "z", 2 )

This statement will result in “alligztor” as here the Replace statement starts searching for the character ‘a’ after the second position in the source string and then replaces it with ‘z’ character.

Example 4:

Replace("alligator", "a", "z", 1, 1)

This statement would result in “zlligator” as here we have told the VBA Replace Statement to replace only one occurrence of ‘a’ with ‘z’.

Example 5:

Replace("Alligator", "a", "z", 1, , vbTextCompare)

The use of vbTextCompare in this statement tells the Replace Statement to ignore the difference between Upper Case and Lower Case characters hence this statement results in: “zalligztor”.

2. Excel VBA SUBSTITUTE Function:

The Excel VBA SUBSTITUTE function is very similar to the Replace Statement. The syntax of both these functions is almost the same, the results they deliver are the same too.

The point that is very important while using the Substitute function is that: this function is not readily available in the VBA functions but under the VBA WorksheetFunctions. See, the syntax of the Substitute function below:

WorksheetFunction.Substitute("Source_string", "Old_string", "Replacement_string", Instance_num)

Here also the ‘Source_string’ is the string from which we have to replace the characters.

‘Old_string’ is a set of characters which are to be replaced.

‘Replacement_string’ is a set of characters with which the ‘Old_string’ is to be replaced.

‘Instance_num’ is an integer parameter that specifies which occurrence of ‘Old_string’ you want to replace with ‘Replacement_string’. This is an optional argument. If it is omitted then all the occurrences of ‘Old_string’ will be replaced.

Examples of VBA SUBSTITUTE Function:

Example 1:

Substitute ("Excel Tips", "Tips", "Trick")

This statement would return “Excel Trick”.

Example 2:

Substitute ("H:SomeFolderAnotherFolderSomeFile.txt", "", "*", 3)

This statement returns: “H:SomeFolderAnotherFolderSomeFile.txt”. As here only the third instance of “” character is replaced by “”.

Excel Macro Using Above Functions:

I have created an Excel Macro in which I have used both the above functions. The macro is quite simple and self-explanatory.

VBA Replace macro

The macro is as under:

Sub ReplaceFunctions()
var_replace = Replace("Excel Tip", "Tip", "Trick")
var_substitute = WorksheetFunction.Substitute("Excel Trick", "c", "z", 2)
MsgBox "Replace_Result- " & var_replace & vbNewLine & "Substitute_Result- " & var_substitute
End Sub

So, these are some of the VBA string Replace functions that can be used in Excel Macros.

Понравилась статья? Поделить с друзьями:
  • Vba excel как закрыть файл без сохранения
  • Vba excel как закрыть книгу с сохранением
  • Vba excel как закрыть userform
  • Vba excel как перевести число в текст
  • Vba excel как очистить ячейку в excel