VBA 文字列と文字列関数

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 3月 16, 2022

VBAには多くの文字列関数があり、コードの中でテキストや文字列を操作したり作業したりすることができます。このチュートリアルでは、文字列から一部を抽出する関数、文字列からスペースを取り除く関数、テキストや文字列の大文字と小文字の変換、文字列の比較、その他の便利な文字列関数について説明します。

文字列の一部を抽出

VBA Left 関数

VBAのLeft 関数を使うと、テキストや文字列の左側からその一部を抽出することができます。VBAのLeft 文字列関数の構文は以下のとおりです。

Left(文字列, 文字数)

  • 文字列 – 元となる文字列。
  • 文字数 元となる文字列の先頭から何文字抽出するかを指定する整数値。

次のコードは、Left 関数を使って、与えられた文字列の最初の4文字を抽出する方法です。

Sub UsingTheLeftStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "AutomateExcel"
valueTwo = Left(valueOne, 4)

MsgBox valueTwo

End Sub

結果は次のようになります。

How to Use the Left String Function in VBA

Left 関数は、AutomateExcelの最初の4文字であるAutoを抽出しました。

VBA Right 関数

VBAのRight 関数を使うと、テキストや文字列の右側からその一部を抽出することができます。VBAのRight 関数の構文は次のとおりです。

Right(文字列, 文字数)

  • 文字列 – 元となる文字列。
  • 文字数 元となる文字列の末尾から何文字抽出するかを指定する整数値。

次のコードは、Right 関数を使って、文字列の最後の4文字を抽出する方法です。

Sub UsingTheRightStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "AutomateExcel"
valueTwo = Right(valueOne, 4)

MsgBox valueTwo

End Sub

結果は次のようになります。

Using the Right String Function in VBA

Right 関数はAutomateExcelの最後の4文字であるxcelを抽出しました。

VBA Mid関数

VBAのMid関数を使うと、テキストや文字列の指定した位置から、任意の長さの文字列を抽出することができます。VBAのMid 関数の構文は次のとおりです。

Mid(文字列, 開始位置, [文字数])

  • 文字列 – 元となる文字列。
  • 開始位置 – この関数が抽出を開始する、元となる文字列内の位置。
  • 文字数 (オプション)元となる文字列の開始位置から何文字抽出するかを指定する整数。省略した場合、Mid関数は開始位置から末尾までの文字を返します。

次のコードは、Mid 関数を使って、文字列の2番目の位置から4文字を抽出する方法を示しています。

Sub UsingTheMidStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "AutomateExcel"
valueTwo = Mid(valueOne, 2, 4)

MsgBox valueTwo

End Sub

結果は以下のようになります。

Using the Mid String Function in VBA

Mid 関数は、AutomateExcelの2文字目からの4文字をutomとして抽出しました。

文字列が含まれる位置を見つける

VBA Instr関数

VBAのInstr関数は、対象となる文字列に含まれる特定の文字列の開始位置を返します。この関数では、通常、大文字と小文字が区別されます。VBA Instr 関数の構文は次のとおりです。

Instr([開始位置], 文字列, 検索文字列, [比較モード])

  • 開始位置 (オプション) – 検索する開始位置を指定します。省略された場合、デフォルトの値である1が使用されます。
  • 文字列 – 検索文字列が含まれる文字列。
  • 検索文字列 – 位置を特定したい文字列。
  • 比較モード (オプション) – 比較の種類を指定します。省略された場合、バイナリ比較が使用されます。

– vbBinaryCompare – バイナリ比較(大文字と小文字を異なるものとして扱います)
– vbTextCompare – テキスト比較(大文字と小文字を同じものとして扱います)
– vbDatabaseCompare – データベース比較(このオプションはMicrosoft Accessでのみ使用され、データベースに基づく比較となります)

次のコードは、Instr 関数を使って、検索の対象となる文字列の中で検索文字列 “Th” が最初に現れる現れる位置を示します。

Sub UsingTheInstrStringFunction()

Dim valueOne As String
Dim positionofSubstring As Integer

valueOne = "This is The Text "
positionofSubstring = InStr(1, valueOne, "Th")

Debug.Print positionofSubstring

End Sub

結果(イミディエイトウィンドウに出力される)は次のようになります。

Using the Instr Function in VBA

Instr関数は、「Th 」という文字列が最初に現れる位置を1として返しました。 この関数は、スペースを含めてカウントすることに注意してください。

VBA InstrRev 関数

VBA InstrRev関数は、対象となる文字列に含まれる特定の文字列の開始位置を返しますが、文字列の末尾からその位置をカウントしはじめます。この関数では通常、大文字と小文字が区別されます。

VBA InstrRev 関数の構文は次のとおりです。

InstrRev(文字列, 検索文字列, [開始位置], [比較モード])

  • 文字列 – 検索文字列が含まれる文字列。
  • 検索文字列 位置を特定したい文字列。
  • 開始位置 (オプション) – 検索する開始位置を指定します。省略された場合、末尾から検索が開始されます。
  • 比較モード (オプション) – これは、比較の種類を指定します。省略された場合、バイナリ比較が使用されます。

– vbBinaryCompare – バイナリ比較(大文字と小文字は異なるものとして扱います)
– vbTextCompare – テキスト比較(大文字と小文字を同じものとして扱います)
– vbDatabaseCompare – データベース比較(このオプションはMicrosoft Accessでのみ使用され、データベースに基づく比較となります。)

次のコードは、Instr 関数を使って、検索の対象となる文字列の中で検索文字列 「Th」が末尾から見て最初に現れる現れる位置を示します。

Sub UsingTheInstrRevStringFunction()

Dim valueOne As String
Dim positionofSubstring As Integer

valueOne = "This is The Text "
positionofSubstring = InStrRev(valueOne, "Th")

Debug.Print positionofSubstring

End Sub

イミディエイトウィンドウに結果が出力されます。

Using The InstrRev Function in VBA

InstrRev関数は、「Th 」という検索文字列が最初に現れる位置を返しますが、末尾からカウントして9を返しました。 この関数では、カウントにスペースが含まれることに注意してください。

文字列からスペースを取り除く

VBAのLTrim関数

VBA LTrim関数は、テキストまたは文字列からすべての先頭のスペースを削除します。VBA LTrim 関数の構文は次のとおりです。

LTrim(文字列)

  • 文字列 – 元となる文字列。

次のコードは、VBAのLTrim関数を使って、与えられた文字列の先頭のスペースを削除する方法を示しています。

Sub UsingTheLTrimStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "         This is the website adddress " _
           & "https://www.automateexcel.com/excel/"
valueTwo = LTrim(valueOne)

MsgBox valueOne
MsgBox valueTwo

End Sub

結果は以下のとおりです。

String With Leading Spaces

Using the LTrim String Function To Remove Leading Spaces

LTrim関数によってvalueTwoの先頭のスペースが削除され、2番目のメッセージボックスに表示されています。

VBAのRTrim関数

VBAのRTrim関数は、テキストまたは文字列からすべての末尾のスペースを削除します。VBA RTrim 関数の構文は次のとおりです。

RTrim(文字列)

  • 文字列 – 元となる文字列。

次のコードは、VBAのRTrim関数を使って、与えられた文字列の末尾のスペースを削除する方法を示しています。

Sub UsingTheRTrimStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "This is the website adddress " _
           & "https://www.automateexcel.com/excel/               "
valueTwo = RTrim(valueOne)

MsgBox valueOne
MsgBox valueTwo

End Sub

結果は次のようになります。

Message box With Trailing Spaces

Using The RTrim String Function

RTrim関数によってvalueTwoの末尾のスペースが削除され、2番目のメッセージボックスに表示されています。

VBAのTrim関数

VBAのTrim関数は、テキストまたは文字列から、先頭および末尾のスペースを削除します。VBA Trim 関数の構文は次のとおりです。

Trim(文字列)

  • 文字列 – 元となる文字列。

次のコードは、VBAのTrim関数を使って、与えられた文字列の先頭と末尾のスペースを削除する方法を示しています。

Sub UsingTheTrimStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "           This is the website adddress " _
           & "https://www.automateexcel.com/excel/             "
valueTwo = Trim(valueOne)

MsgBox valueOne
MsgBox valueTwo

End Sub

結果は以下のとおりです。

Message box With Leading And Trailing Spaces

Using The Trim Function in VBA

Trim 関数によって、valueTwo の先頭と末尾のスペースが削除され、2 番目のメッセージボックスに表示されています。

VBAの大文字小文字変換関数

VBA LCase関数

VBA LCase関数は、テキストや文字列の文字を小文字に変換する関数です。VBA LCase 関数の構文は次のとおりです。

LCase(文字列)

  • 文字列 – 元となる文字列。

次のコードは、LCase 関数を使って、与えられた文字列のすべての文字を小文字に変換する方法を示しています。

Sub UsingTheLCaseStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "THIS IS THE PRODUCT"
valueTwo = LCase(valueOne)

MsgBox valueTwo

End Sub

結果は以下のようになります。

Using The LCase Function in VBA

LCase関数によって、文字列中のすべての文字が小文字に変換されました。

VBA UCase 関数

VBA UCase関数は、テキストまたは文字列内の文字を大文字に変換します。VBA UCase 関数の構文は次のとおりです。

UCase(文字列)

  • 文字列 – 元となる文字列。

次のコードは、UCase 関数を使って、与えられた文字列のすべての文字を大文字に変換する方法を示しています。

Sub UsingTheUCaseStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "this is the product"
valueTwo = UCase(valueOne)

MsgBox valueTwo

End Sub

結果はこのようになります。

Using The UCase Function in VBA

UCase関数によって、文字列内のすべての文字が大文字に変換されました。

VBA StrConv関数

VBAのStrConv関数は、テキストまたは文字列内の文字を、指定した変換タイプに応じて大文字、小文字、固有名詞、ユニコードに変換できます。 VBA StrConv 関数の構文は次のとおりです。

StrConv(文字列, 文字種, [LCID])

  • 文字列 – 元となる文字列。
  • 文字種 – 希望する変換の種類。
  • LCID (オプション) – LocaleIDを指定するオプションのパラメータです。省略された場合、システムのLocaleIDが使用されます。

次のコードは、StrConv 関数を使って文字列を適切な大文字と小文字に変換する方法を示しています。

Sub UsingTheStrConvStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "this is THE product"
valueTwo = StrConv(valueOne, vbProperCase)

MsgBox valueTwo

End Sub

結果は次のようになります。

Using The StrConv Function in VBA

変換の種類は、文字種パラメータで指定します。

  • vbLowerCaseは、すべての文字を小文字に変換します。
  • vbUpperCaseは、すべての文字を大文字に変換します。
  • vbProperCaseは、各単語の最初の文字を大文字に変換し、他の文字はすべて小文字にします。
  • vbWideは、半角文字を全角文字に変換します。
  • vbNarrowは、全角文字を半角文字に変換します。
  • vbKatakanaは、ひらがなをカタカナに変換します。
  • vbHiraganaは、カタカナをひらがなに変換します。
  • vbUnicode は、文字列をユニコードに変換します。
  • vbFromUnicodeは、文字列をunicodeからシステムのデフォルトコードページ(Shift_JIS)に変換します。

文字列の比較

VBA StrComp関数

VBAのStrComp関数を使うと、2つの文字列を比較することができます。この関数は、以下の値を返します。

  • 2つの文字列が一致する場合は 0
  • 文字列1が文字列2より小さい場合は -1
  • 文字列1が文字列2より大きい場合は 1
  • どちらかの文字列がNullの場合、Null

次のコードは、StrComp関数を使用して2つの文字列を比較する方法を示しています。

Sub UsingTheStrCompStringFunction()

Dim valueOne As String
Dim valueTwo As String
Dim resultofComparison As Integer

valueOne = "AutomateExcel"
valueTwo = "AutomateExcel"
resultofComparison = StrComp(valueOne, valueTwo)
Debug.Print resultofComparison

End Sub

結果は次のようになります。

Using The StrComp Function in VBA

StrComp関数は、2つの文字列が完全に一致するため0を返しました。

VBA Like演算子

VBAのLike演算子を使うと、テキストや文字列をあるパターンと比較して、一致するかどうかを確認することができます。通常、Like演算子はワイルドカードと組み合わせて使用します。次のコードは、Like演算子の使用方法を示しています。

Sub UsingTheLikeOperatorInVBA()

Dim valueOne As String
valueOne = "Let's view the output"

If valueOne Like "*view*" Then
MsgBox "There is a match, this string contains the word view"
Else
MsgBox "No match was found"
End If

End Sub

結果は以下のとおりです。

Using The Like Operator in VBA

パターンマッチのためにLike演算子と一緒に使えるワイルドカードは以下の通りです。

  • 「?」 一文字にマッチするもの
  • 「#」 一桁の数字にマッチするもの
  • 「*」0以上の文字にマッチするもの

次のコードは、Like演算子と?ワイルドカードを使用して、コード内のパターンにマッチさせる方法を示しています。

Sub UsingTheLikeOperatorWithAWildcardInVBA()

Dim valueOne As String
valueOne = "The"

If valueOne Like "??e" Then
MsgBox "There is a match, a matching pattern was found"
Else
MsgBox "No match was found"
End If

End Sub

結果は以下のとおりです。

Using The Like Operator To Match Patterns in VBA

その他の便利なVBA文字列関数

VBA Replace String関数

VBA Replace関数は、文字列内の文字セットを別の文字セットで置き換えます。VBA Replace 関数の構文は次のとおりです。

Replace(文字列, 検索文字列, 置換文字列, [開始位置], [置換回数], [比較モード])

  • 文字列 – 元となる文字列。
  • 検索文字列 – 元の文字列の中で検索する文字列。
  • 置換文字列 – 検索した文字列を置換する文字列。
  • 開始位置 (オプション) – 元の文字列内で検索を開始する位置。省略された場合は1が使用され、先頭から検索が開始されます。
  • 置換回数 (オプション) – マッチした文字列を置換する回数。省略された場合、マッチしたすべての文字列を置き換えます。
  • 比較モード (オプション) – 比較の種類を指定します。省略された場合、バイナリ比較が使用されます。

– vbBinaryCompare – バイナリ比較(大文字と小文字を異なるものとして扱います)
– vbTextCompare – テキスト比較(大文字と小文字を同じものとして扱います)
– vbDatabaseCompare – データベース比較(このオプションはMicrosoft Accessでのみ使用され、データベースに基づく比較です)

次のコードは、文字列置き換え関数の使用方法を示しています。

Sub UsingTheReplaceStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "ProductABC"
valueTwo = Replace(valueOne, "ABC", "XYZ")

MsgBox valueTwo

End Sub

結果は以下のようになります。

Using The Replace String Function in VBA

Replace 関数はProductABC内の文字列ABCを見つけ出し、それを文字列XYZに置き換えています。

VBA StrReverse 関数

VBA StrReverse関数は、与えられたテキストまたは文字列の文字の順序を反転させます。VBA StrReverse 関数の構文は次のとおりです。

StrReverse(文字列)

  • 文字列 – 元の文字列。

次のコードは、VBAのStrReverse関数を使用して、文字列Productの文字を反転させる方法を示しています。

Sub UsingTheStrReverseStringFunction()

Dim valueOne As String
Dim valueTwo As String

valueOne = "Product"
valueTwo = StrReverse(valueOne)

MsgBox valueTwo

End Sub

結果は以下のようになります。

Using The StrReverse Function in VBA

VBA Len 関数

VBA Len 関数は、文字列の文字数を返します。VBA Len 関数の構文は次のとおりです。

Len(String)

  • 文字列 – 元となる文字列。

次のコードは、Len 関数を使って文字列の長さを求める方法を示しています。 AutomateExcel:

Sub UsingTheLenFunction()

Dim valueOne As String
Dim stringLength As Integer

valueOne = "AutomateExcel"
stringLength = Len(valueOne)
Debug.Print stringLength

End Sub

結果は以下のようになります。

Using The Len String Function in VBA

Len 関数は、文字列AutomateExcel のすべての文字をカウントし、13文字となりました。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples