Vba excel правый символ

Извлечение (вырезание) части строки с помощью кода VBA Excel из значения ячейки или переменной. Функции Left, Mid и Right, их синтаксис и аргументы. Пример.

Эта функция извлекает левую часть строки с заданным количеством символов.

Синтаксис функции Left:

Left(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается левая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Функция Mid

Эта функция извлекает часть строки с заданным количеством символов, начиная с указанного символа (по номеру).

Синтаксис функции Mid:

Mid(строка, начало, [длина])

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается часть строки;
  • начало — обязательный аргумент: числовое выражение, указывающее положение символа в строке, с которого начинается извлекаемая часть;
  • длина — необязательный аргумент: числовое выражение, указывающее количество вырезаемых символов.

Если аргумент «начало» больше, чем количество символов в строке, функция Mid возвращает пустую строку. Если аргумент «длина» опущен или его значение превышает количество символов в строке, начиная с начального, возвращаются все символы от начальной позиции до конца строки.

Функция Right

Эта функция извлекает правую часть строки с заданным количеством символов.

Синтаксис функции Right:

Right(строка, длина)

  • строка — обязательный аргумент: строковое выражение, из значения которого вырезается правая часть;
  • длина — обязательный аргумент: числовое выражение, указывающее количество извлекаемых символов.

Если аргумент «длина» равен нулю, возвращается пустая строка. Если аргумент «длина» равен или больше длины строки, возвращается строка полностью.

Пример

В этом примере будем использовать все три представленные выше функции для извлечения из ФИО его составных частей. Для этого запишем в ячейку «A1» строку «Иванов Сидор Петрович», из которой вырежем отдельные компоненты и запишем их в ячейки «A2:A4».

Sub Primer()

Dim n1 As Long, n2 As Long

Range(«A1») = «Иванов Сидор Петрович»

‘Определяем позицию первого пробела

n1 = InStr(1, Range(«A1»), » «)

‘Определяем позицию второго пробела

n2 = InStr(n1 + 1, Range(«A1»), » «)

‘Извлекаем фамилию

Range(«A2») = Left(Range(«A1»), n1 1)

‘Извлекаем имя

Range(«A3») = Mid(Range(«A1»), n1 + 1, n2 n1 1)

‘Извлекаем отчество

Range(«A4») = Right(Range(«A1»), Len(Range(«A1»)) n2)

End Sub

На практике часто встречаются строки с лишними пробелами, которые необходимо удалить перед извлечением отдельных слов.

Right Function in VBA Excel

The Right function is the same as in the Worksheet function and VBA. The use of this function is that it gives us the substring from a given string, but one can search from right to left of the string. This type of string function in VBA one may use with application.worksheet function method.

The RIGHT function in Excel VBA extracts characters from the right side of the supplied text values. In Excel, we have many text functions to deal with text-based data. Some useful functions are LEN, LEFT, RIGHT, and MID functions to extract characters from the text values. A common example of using these functions is extracting the first and last names separately from the full names.

The RIGHT formula is also there in the worksheet. In VBA, we need to rely on the worksheet function class to access the VBA RIGHT function. Therefore, we also have the built-in RIGHT function in VBA.

Table of contents
  • Right Function in VBA Excel
    • Examples of Excel VBA Right Function
      • Example #1
      • Example #2
    • Dynamic Right Function in Excel VBA
    • Loops with Right Function in Excel VBA
    • Recommended Articles

Now, look at the syntax below of the VBA RIGHT formula.

VBA Right Formula

  • String: It is our value. We are trying to extract the characters from the right side of the string from this value.
  • Length: From the supplied String, how many characters do we need? If we need four characters from the right side, we can supply the argument as 4.

For example, if the string is “Mobile Phone.” We want to extract only the word “Phone,” so we can supply the argument like the one below.

RIGHT (“Mobile Phone,” 5)

We mentioned 5 because the word “Phone” has 5 letters. In the article’s next section, we will see how we can use it in VBA.

VBA Right Function

You are free to use this image on your website, templates, etc, Please provide us with an attribution linkArticle Link to be Hyperlinked
For eg:
Source: VBA Right Function (wallstreetmojo.com)

Examples of Excel VBA Right Function

The following are examples of Right function VBA Excel.

You can download this VBA Right Function Excel Template here – VBA Right Function Excel Template

Example #1

We will show you a simple example to start the proceedings. Assume you have the string “New York,” and if you want to extract 3 characters from the right, follow the below steps to write the code.

Step 1: Declare the variable as VBA StringString functions in VBA do not replace the string; instead, this function creates a new string. There are numerous string functions in VBA, all of which are classified as string or text functions.read more.

Code:

Sub Right_Example1()

  Dim k As String

End Sub

Example 1

Step 2: Now, we will assign the value by applying the RIGHT function for this variable.

Code:

Sub Right_Example1()

  Dim k As String

  k = Right(

End Sub

Example 1-1

Step 3: The first argument is String, and our string for this example is “New York.”

Code:

Sub Right_Example1()

  Dim k As String

  k = Right("New York",

End Sub

Example 1-2

Step 4: Next is how many characters we need from the supplied string. In this example, we need 3 characters.

Code:

Sub Right_Example1()

  Dim k As String

  k = Right("New York", 3)

End Sub

Example 1-3

Step 5: We have 2 arguments to deal with, so we are done. Now, assign the value of this variable in the message box in VBAVBA MsgBox function is an output function which displays the generalized message provided by the developer. This statement has no arguments and the personalized messages in this function are written under the double quotes while for the values the variable reference is provided.read more.

Code:

Sub Right_Example1()

  Dim k As String
  
  k = Right("New York", 3)

  MsgBox k

End Sub

Example 1-4

Run the code using the F5 key or manually and see the result in a message box.

Example 1-5

In the word “New York” from the right side 3 characters are “ork.”

We will change the length from 3 to 4 to get the full value.

Code:

Sub Right_Example1()

  Dim k As String

  k = Right("New York", 4)

  MsgBox k

End Sub

Example 1-6

Run this code manually or using the F5 key. Then, we will get “York.”

VBA Right Example 1-7

Example #2

Now, look at one more example. This time, consider the string value as “Michael Clarke.”

If you supply the length as 6, we will get “Clarke.”

Code:

Sub Right_Example1()

    Dim k As String

    k = Right("Michael Clarke", 6)

    MsgBox k
End Sub

VBA Right Example 2

Run this code using the F5 key or manually to see the result.

VBA Right Example 2-1

Dynamic Right Function in Excel VBA

We have supplied the length argument numbers manually if you observe our previous two examples. But this is not the right process to do the job.

In each of the strings, right-side characters are different in each case. Therefore, we cannot refer to the length of the characters manually for each value differently. It is where the other string function, “Instr,” plays a vital role.

The Instr function returns the supplied character position in the supplied string value. For example, Instr (1,” Bangalore,” a”) returns the position of the letter “a” in the string “Bangalore” from the first (1) character.

In this case, the result is 2 because the first character position of the letter “a” is 2nd.

If we change the starting position from 1 to 3, it will return 5.

Instr (3,” Bangalore,” a”).

It returns 5 because we mentioned the starting position to look for the letter “a” only from the 3rd letter. So the position of the second appeared “a” is 5.

So, to find the space character of each string, we can use this. Once we find the space character position, we need to minus that from the total length of the string by using LEN.

For example, in the string “New York,” the total number of characters is 8, including space, and the position of the space character is 4th. So 8-4 = 4 right will extract 4 characters from the right.

Now, look at the below code for your reference.

Code:

Sub Right_Example3()

    Dim k As String
    Dim L As String
    Dim S As String

    L = Len("Michael Clarke")
    S = InStr(1, "Michael Clarke", " ")

    k = Right("Michael Clarke", L - S)

    MsgBox k
End Sub

VBA Right Example 3

In the above code variable, “L” will return 14, and the variable “S” will return 8.

In the VBA right formula, we have applied L – S, i.e., 14-8 = 6. So, from the right side, 6 characters, i.e., “Clarke.”

VBA Right Example 3-1

Loops with Right Function in Excel VBA

When we apply the VBA RIGHT function with many cells, we need to include this inside the loops. For example, look at the below image.

VBA Right Example 4

We cannot apply many lines of code to extract a string from the right side. So, we need to include loops. The below code will do it for the above data.

Code:

Sub Right_Example4()

    Dim k  As String
    Dim L As String
    Dim S As String
    Dim a As Integer

    For a = 2 To 5
        L = Len(Cells(a, 1).Value)
        S = InStr(1, Cells(a, 1).Value, " ")

       Cells(a, 2).Value = Right(Cells(a, 1), L - S)
    Next a

End Sub

VBA Right Example 4-1

The result of this code is as follows.

VBA Right Example 4-2

Recommended Articles

This article has been a guide to VBA Right Function. Here, we learn how to use the Right function in Excel VBA to extract characters from the right side of text values, along with some simple to advanced examples and a downloadable Excel template. Below are some useful Excel articles related to VBA: –

  • VBA WorkBook
  • VBA Split
  • VBA End
  • Call Sub in VBA
  • VBA Double

Home / VBA / Top VBA Functions / VBA RIGHT Function (Syntax + Example)

The VBA RIGHT function is listed under the text category of VBA functions. When you use it in a VBA code, it returns a sub-string from a string from the ending position. In simple words, you can extract a number of characters from a string from it is ending, which is the right side. It simply works like the RIGHT function in the worksheet.

Right(Str, Length)

Arguments

  • Str: The string from which you want to extract a sub-string.
  • Length: The integer to specify the length of the sub-string.

Example

To practically understand how to use the VBA RIGHT function, you need to go through the below example where we have written a vba code by using it:

Sub example_RIGHT()
Range("B1").Value = Right(Range("A1"), 6)    
End Sub

In the above code, we have used RIGHT to get the 6 characters from the right side of cell A1 (Excel Champs) and get it in cell B1. It has returned the value (Champs) in the result as these are the first 6 characters, we have in cell A1.

In this Article

  • Right Function
    • VBA Right function Last n Characters
    • VBA Right Function Last n Characters in a Variable
    • VBA Right Function Last n Characters from a Cell
    • VBA Right Function Trim off First Letter
    • VBA Right to Extract Text after Space
    • VBA Right to Extract Last Word

This tutorial will demonstrate how to use the Right VBA function to extract text from the right.

Right Function

VBA Right function Last n Characters

The VBA Right function returns the last n characters from a string:

Sub RightExample_1()
MsgBox Right("ABCDEFGHI", 4)         'Result is: "FGHI"
MsgBox Right("ABCDEFGHI", 2)         'Result is: "HI"
MsgBox Right("ABCDEFGHI", 1)         'Result is: "I"
MsgBox Right("ABCDEFGHI", 100)       'Result is: "ABCDEFGHI"
End Sub

VBA Right Function Last n Characters in a Variable

As shown above, you can define a string simply by entering text surrounded by quotation marks. But the RIGHT Function will also work with string variables. These examples will extract the last n characters from a string variable.

Sub RightExample_2()
Dim StrEx As String 'Define a string variable
StrEx = "ABCDEFGHI"

MsgBox Right(StrEx, 4)                'Result is: "FGHI"
MsgBox Right(StrEx, 2)                'Result is: "HI"
MsgBox Right(StrEx, 1)                'Result is: "I"
MsgBox Right(StrEx, 100)              'Result is: "ABCDEFGHI"
End Sub

VBA Right Function Last n Characters from a Cell

Strings can be defined in VBA code but also you can use values from cells. Read the value of a cell, keep it in a string variable, and extract last n characters from that Worksheet Cell value.

right cell value vba

Sub RightExample_3()
Dim StrEx As String 'Define a string variable
'Read the value of cell A1 in worksheet Sheet1
StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value

'For this example the value of cell A1 is "ABCDEFG hI"

MsgBox Right(StrEx, 4)   'Result is: "G hI"
MsgBox Right(StrEx, 2)   'Result is: "hI"
MsgBox Right(StrEx, 1)   'Result is: "I"
MsgBox Right(StrEx, 100) 'Result is: "ABCDEFG hI"
End Sub

VBA Right Function Trim off First Letter

To remove letters from the beginning of a string, use the RIGHT Function along with the LEN Function.

The VBA LEN function counts the number of characters in a string:

Len(StrEx)

By combining the functions, we can remove a certain number of characters from the start of the string:

Sub RightExample_4()
Dim StrEx As String 'Define a string variable
StrEx = "ABCDEF"

MsgBox Right(StrEx, Len(StrEx))     'Result is: "ABCDEF"
MsgBox Right(StrEx, Len(StrEx) - 1) 'Result is: "BCDEF"
MsgBox Right(StrEx, Len(StrEx) - 2) 'Result is: "CDEF"
End Sub

To extract the last name from a string with a full name, use the Right Function along with Len and Instr Function.

The VBA LEN function counts the number of characters in a string:

Len(StrEx)

The VBA InStr function searches for a substring inside a string and returns the position number of the substring.

InStr(StrEx, " ")

By combining the functions, we can extract the part after the first space from a phrase:

Sub RightExample_5()
Dim StrEx As String 'Define a string variable
StrEx = "Luke Skywalker"

MsgBox Right(StrEx, Len(StrEx) - InStr(StrEx, " "))
'Result is: "Skywalker"

StrEx = "Leonardo da Vinci"
MsgBox Right(StrEx, Len(StrEx) - InStr(StrEx, " "))
'Result is: "da Vinci"

StrEx = "May the Force be with you"
MsgBox Right(StrEx, Len(StrEx) - InStr(StrEx, " "))
'Result is: "the Force be with you "
End Sub

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

automacro

Learn More

To extract the last word from a string with a phrase, use the Right Function along with Len and InstrRev Function.

As we have seen above, VBA LEN function counts the number of characters in a string:

Len(StrEx)

The VBA InStrRev Function searches for a substring inside a string and returns the position number of the substring. It starts the search from the end of the phrase (right to left) but returns the position from the start of the string (left to right).

InStrRev(StrEx, " ")

By combining the functions, we can extract the part after the last space from a phrase:

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

StrEx = "Luke Skywalker"
MsgBox Right(StrEx, Len(StrEx) - InStrRev(StrEx, " "))
'Result is: "Skywalker"

StrEx = "Leonardo da Vinci"
MsgBox Right(StrEx, Len(StrEx) - InStrRev(StrEx, " "))
'Result is: "da Vinci"

StrEx = "May the Force be with you"
MsgBox Right(StrEx, Len(StrEx) - InStrRev(StrEx, " "))
'Result is: "you"
End Sub

Welcome to this article on the VBA Left, Right and Mid string functions. In this post, I will show you when to use these functions and equally importantly when to avoid using them. If you use them for the wrong type of tasks(i.e. extracting from variable strings), you can waste a considerable amount of time.

I will also cover a little-known feature of the Mid function where you can update the original string using Mid.

Syntax of Left, Right and Mid functions

These three functions all have a very similar purpose and that is to extract text from a text string. You can see the syntax of these functions in this table:

Function Parameters Description Example
Left string, length Return chars from left side Left(«John Smith»,4)
Right string, length Return chars from right side Right(«John Smith»,5)
Mid string, start, length Return chars from middle Mid(«John Smith»,3,2)

Introduction

First of all, what is a string? A string is a piece of text. You can see examples below:

text = "Mary had a little lamb"
text = "John Smith"
text = "Customer 234-AA=56"

We call the variable type String in VBA and it is equivalent to text in a cell on a spreadsheet.

So let’s get started by setting up a simple piece of code so that we can use to show the results of these string functions. First of all, we create the text variable, and then we assign some text to it:

Dim text As string
text = "Mary had a little lamb"

Then we create a variable and this variable will store the result of the Left, Right or Mid function. We start by assigning the text string to the variable without making any changes:

Sub UseLeft()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
    ' set result to have the same text
    result = text
    
    ' View result in the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

Let’s run this code by clicking in the sub and pressing F5(this is the same as selecting Run->Run Sub/UserForm from the menu.)

You can see that both strings were shown in the Immediate window:

(Note: If the Immediate window is not visible then select View->Immediate Window from the menu or Ctrl + G)

So now that we have our basic code in place. Let’s go ahead and use it to show how these functions work.

Left Function

The Left function is possibly the simplest function in VBA. It returns a given number of characters from the left of a string. All you have to do it to tell it the number of characters that you want to get.
Syntax
Left(String, Length)

Example
Left(“abcdef”, 3)

Result
“abc”

The key thing to remember is that the original string is not changed. We get the result of the Left function and we store it in a different string. The original string remains the same.

In the following example, we’re going to return the first four characters of the string, which are Mary:

Sub UseLeft()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
    ' store the result of the Left function in the result variable
    result = Left(text, 4)
    
    ' Print the result to the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

VBA Left

If we change 4 to 8, you will see that the function now returns the first eight characters of the string:

Sub UseLeft()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
    ' store the result of the Left function in the result variable
    result = Left(text, 8)
    
    ' View result in the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

VBA Left

If we use a value greater than the length of the string, then the entire string is returned. For example, in the next example, we use 100 with the Left function and you can see that the entire string has been returned:

Sub UseLeft()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
    ' store the result of the Left function in the result variable
    result = Left(text, 100)
    
    ' View result in the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

VBA Left

That is the Left function and you can see that it is pretty straightforward to use.

Right Function

The Right function is also very straightforward and it is very similar to the Left function. The difference is that it extracts characters from the right side of the string rather than from the left side. Right takes the same parameters as Left. It takes the string to extract from and the number of characters that you wish to extract:

Syntax
Right(String, Length)

Example
Right(“abcdef”, 3)

Result
“def”

Let’s change the code that we were using with Left. We replace the Left function with the Right function and set the length to 4:

Sub UseRight()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
    ' store the result of the Right function in the result variable
    result = Right(text, 4)
    
    ' View result in the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

When we run this code and you can see that it has returned the last four characters of the string:
VBA Right

Let’s try another example, this time we’re changing the length to 11:

Sub UseRight()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
     ' store the result of the Right function in the result variable
    result = Right(text, 11)
    
    ' View result in the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

Let’s run this code, now you can see that it returns the characters little lamb which are the last 11 characters:

VBA Right

Let’s try one more thing. This time we’re changing the length to 100 which is a number greater than the length of the entire string:

Sub UseRight()

    Dim text As String, result As String
    text = "Mary had a little lamb"
    
     ' store the result of the Right function in the result variable
    result = Right(text, 100)
    
    ' View result in the Intermediate Window(Ctrl + G)
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

Let’s run this code, now you can see that it returns the entire string:

That means that anytime we supply a length that is greater than the length of the string, it will return the entire string.

That is how we use the Right function. As you can see it is very similar to the Left function and quite simple to use.

Mid Function

Now we are going to take a look at the Mid function. The Mid function extracts text from the middle of the string, just as the name implies:

Syntax
Mid(String, Start, Length)

Example
Mid(“abcdef”, 2, 3)

Result
“bcd”

The Mid function is very similar to the Left function. The main difference between Mid and Left is that Mid has one extra parameter – Start. The Start parameter is used to specify where the starting position is in the string:

Syntax
Mid(String, Start, Length)

If we set the Start position to 1, then Mid works exactly the same as Left. If we want to extract text from the string, then we set the Start parameter to the position from where we want to start extracting characters.

Let’s look at some examples so that we can understand it better. In the first example, we use 1 as the start position and 4 as the length. This will produce the same result as using the Left function with 4 as the length:

Let’s try some code with Start as 1 and Length as 4:

Sub UseMid()

    Dim text As string
    text = "Mary had a little lamb"
    
    Dim result As string
    result = Mid(text, 1, 4)
    
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

You can see the result is the same as using Left with 3 as the length:

VBA Mid

To extract the word “had”, we set the start position to 6 and the length to 3.

Sub UseMid()

    Dim text As string
    text = "Mary had a little lamb"
    
    Dim result As string
    result = Mid(text, 6, 3)
    
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

When we run the code, you can see what the result is.

VBA Mid

Now we’re going to extract “little” from this string. We set the start position to 12 and the length to 6:

Sub UseMid()

    Dim text As string
    text = "Mary had a little lamb"
    
    Dim result As string
    result = Mid(text, 12, 6)
    
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

When we run the code, you can see the result:

vba mid

Just like in the other two functions, if we use a length value greater than the length of the text remaining, then the entire string is returned after the start position.

In the next example, we use 5 of the start position and we’re going to use 100 as the length which is obviously longer than the length of the string:

Sub UseMid()

    Dim text As String
    text = "Mary had a little lamb"
    
    Dim result As String
    result = Mid(text, 12, 100)
    
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

When you run the code you will see that you got back all the text from the start position:

VBA Mid

One difference with Mid and the other two functions is that we don’t actually need to specify the length. This parameter is actually optional. If we don’t include the length parameter, it will return the rest of the string from the starting position that we provided. If we remove length from the previous example, so instead of having 100, we just don’t have the parameter, you will see that it also returns the rest of the string from the starting position:

Sub UseMid()

    Dim text As String
    text = "Mary had a little lamb"
    
    Dim result As String
    result = Mid(text, 12)
    
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

Updating the Original String with Mid

At the beginning of this article, I mentioned that Mid has a little-known feature and here I’m going to show you what this feature is. We can update the string using Mid. With the LeftRight functions, we just get back what we’ve extracted from the string. We cannot update the original string with these functions.

The following shows an example of what I mean:

The original string is NOT changed

New string = Left(Original String, Length)
New string = Right(Original String, Length)
New string = Mid(Original String, Start, Length)

The original string is changed
Mid(String, Start, Length) = text

Let’s have a look at some examples to explain how this works. Let’s look at a simple example of Mid first. The following code will return “Mary”:

Sub UseMid()

    Dim text As String
    text = "Mary had a little lamb"
    
    Dim result As String
    result = Mid(text, 1, 4)
    
    Debug.Print "Original: " & text
    Debug.Print "Result: " & result

End Sub

vba mid

Now we will take Mid and put it on the left-hand side of the equals sign. Then we assign it to the string “Jack”. When we run the code, “Jack” will replace “Mary” in the original string:

Sub UpdateUsingMid()

    Dim text As String
    text = "Mary had a little lamb"
    
     Mid(text, 1, 4) = "Jack"
    
    Debug.Print "Original: " & text

End Sub

One thing to keep in mind is how the length works. If we use a length the only the number of characters are replaced. So if we use 4 in the following example then only only 4 characters are replaced:

Mid(text, 1, 4) = "Andrew"

The result is: Andr had a little lamb

But if we don’t use any length then all the letters in the string on the right are used as we can see in this example:

Mid(text, 1) = "Andrew"

The result is: Andrewad a little lamb

If you just want to replace “Mary” with “Andrew” then the easiest thing to do is to use the Replace function:

text = Replace(text, "Mary", "Andrew")

The result is: Andrew had a little lamb

Reading through each character in a string

One useful feature of the Mid function is that it allows us to read through each individual character in a string. We can do it like this:

Sub MidLoop()

    Dim text As String
    text = "abcdef"
    
    Dim i As Long, character As String
    For i = 1 To Len(text)
        character = Mid(text, i, 1)
        Debug.Print i & ":  " & character
    Next i
    
End Sub

When we run this code we get the following result:
1: a
2: b
3: c
4: d
5: e
6: f

Reading through each character in reverse

If we want to read the text in the reverse direction we can do it like this:

Sub MidLoopReverse()

    Dim text As String
    text = "abcdef"
    
    Dim i As Long, character As String
    For i = Len(text) To 1 Step -1
        character = Mid(text, i, 1)
        Debug.Print i & ":  " & character
    Next i
    
End Sub

You will get the following when you run the code:
6: f
5: e
4: d
3: c
2: b
1: a

When to Use/Not Use These Functions

We have seen how to use these functions. The next question is when should we use these functions and when should we avoid using them. These functions work best with fixed strings, but they don’t work so well with variable strings.

Fixed Strings

Fixed strings are where each field in a string is always the same size and in the same position.

For example, you might have records where the first characters are the customer id, the next 4 characters are the year, the next two the transaction type and so on e.g.

1234AB2019XX
4567AB2019YY
1245AB2018ZY

When dealing with strings like this Left, Right and Mid are very useful. But for Variable size strings(i.e. typically a CSV style file), they are not suitable.

Variable sized (delimited) Strings

Variable size strings are ones where the fields may be of different sizes. The end of a field is marked by a delimiter like a comma. These types of strings are very common and you will see them in CSV files.

For example, imagine we have a file with a person’s name and their company name:
Jack Smith, United Block Company,36 High Street
Jenny Cathy Walton, Good Plumbers, Paradise Plaza
Helen McDonald, High-quality Software Providers, 16 Main Avenue

You can see that each field can be a different size. We use the delimiter (the comma in this case) to show us where the field ends.

Many people make the mistake of using our 3 functions with the Instr function to extract the data. For example:

Sub ReadVariableStrings()

    ' Create the test string
    Dim text As String
    text = "Jack Smith,United Block Company,36 High Street"
    
    ' Declare the variables
    Dim person As String, company As String
    Dim startPostion As Long, endPosition As Long
    
    ' Get the persons name
    endPosition = InStr(text, ",")
    person = Left(text, endPosition - 1)
    
    ' Get the company name
    startPostion = endPosition + 1
    endPosition = InStr(startPostion, text, ",") - 1
    company = Mid(text, startPostion, endPosition - startPostion + 1)
    
    ' Print the results
    Debug.Print person
    Debug.Print company

End Sub

You can see that the above code is very longwinded. We actually do this much easier using the Split function which I cover in this article. It has plenty of examples of using split with variable strings.

Here is the code above, rewritten to use the Split function:

Sub ReadVariableStringsSplit()

    ' Create the test string
    Dim text As String
    text = "Jack Smith,United Block Company,36 High Street"
    
    ' Declare the array
    Dim arr As Variant
    
    ' Split the string to an array
    arr = Split(text, ",")
   
    ' Print the results
    Debug.Print arr(0) ' Person
    Debug.Print arr(1) ' Company

End Sub

You can see that this code is much simpler.

Conclusion

In this post, we covered using the Left; Right and Mid functions. These are very useful for extracting text from a fixed-size string. We saw that the Mid function has the added feature which allows us to replace text in a string. We also saw that the Mid function can be used to read through the individual characters in a string.

Related Reading

Excel VBA Split Function – A Complete Guide
The Ultimate Guide to VBA String Functions
The Complete Guide to Using Arrays in Excel VBA

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