【VBA入門】文字列操作総まとめ(置換、結合、分割、変換、比較)

文字列の連結、分割、抽出など、文字列操作って使うことがよくありますよね?

VBAでも様々な関数が用意されています。

この記事では、文字列の操作に関して

  • 長さ
  • 置換
  • 結合
  • 分割
  • 抽出
  • 挿入
  • 変換
  • 比較
  • 削除

それぞれ関数を使い方について解説していきます。今回は文字列を操作する方法について、使い方をわかりやすく解説します!

文字列操作関数一覧

文字列を操作する関数について表にまとめました。

名前説明
CStr指定した値を文字列型(String)に変換
Format値を指定した書式で文字列型(String)に変換
InStr/InStrB文字列を検索し見つかった最初の位置を返す
InStrRev文字列の後ろから指定の文字列を検索し、最初に見つかった位置を返す
Join文字列の配列を区切り文字で結合して返す
Lcase指定した文字列内のアルファベットを大文字から小文字に変換
Left/LeftB文字列の先頭から指定した文字数分の文字列を返す
Len/LenB文字列の文字数を返すまたは構造体など型のサイズを返す
Ltrim文字列の先頭のスペースを取り除いて返す
Mid/MidB文字列の指定した位置から文字数分の文字列を返す
Replace文字列を置換
Right/RightB文字列の最後から指定した文字数分の文字列を返す
Rtrim文字列の最後のスペースを取り除いて返す
Split区切り文字で区切られた文字列を配列にして返す
StrComp文字列を比較
StrConv文字列を大文字や全角、ひらがななどに変換して返す
Trim文字列の先頭と最後の空白を取り除いて返す
Ucase指定した文字列内のアルファベットを小文字から大文字に変換
Val文字列を適切な数値型(Integerなど)に変換して返す

これらの関数について解説していきます!

長さ(Len)

文字数を取得するには、Len関数を使用します。バイト数を取得したい場合には、LenB関数を使います。

VBAでは半角文字でも全角文字でも1文字のバイト数は2バイトで同じです。C言語などとは違い、VBAでは全角半角混在文字列でも文字数の数え方を必要はありません。

Len関数は以下のように記述して使用します。

Len関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Mid関数で文字列の抜き出し(Left、InStr関数も解説)
更新日 : 2019年4月20日

置換(Replace)

Replace関数はある文字列の中から指定の文字列を置き換える場合に使います。Replace関数は以下のように記述します。

引数の中で「[ ]」で囲まれた部分は省略することができます。引数の指定について表にまとめました。

引数定数(値)説明
expression置換する文字列を含む文字列
find検索する文字列
replace置換する文字列
start検索開始位置を指定
count置換する文字列数を指定
省略の場合、すべて置換
comparevbBinaryCompare(0)バイナリモードで比較
大文字と小文字を区別する
vbTextCompare(1)テキストモードで比較
大文字と小文字を区別せず

Replace関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Replace関数とReplaceメソッドで文字列の置換
更新日 : 2019年4月21日

結合(Join)

文字列を高速で結合する方法

文字列を結合する場合は「&」記号を使って結合するのが一般的ですが、文字列の数が多くなると処理に時間がかかります。

そこで高速に処理するために、Join関数を使う方法があります。Join関数では、結合する大量の文字列を配列に格納して、その配列の要素を全て結合することで高速に処理することができます。

Join関数は以下のように記述します。

「[ ]」内の記述は省略することができます。

Join関数は、指定した配列内の要素を全て結合した文字列を返します。引数sourcearrayには、配列を指定します。引数delimiterには、結合する要素を区切るための文字を指定します。

Join関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】文字列の結合を高速にする方法(Mid、Join)
更新日 : 2019年4月18日

分割(Split)

指定文字を区切り文字として、文字列を分割する場合にSplit関数を使用します。Split関数は分割したそれぞれの文字列を一次元配列に格納します。

Split関数は以下のように記述します。

Split関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Split関数で文字列を分割(複数条件や正規表現も解説)
更新日 : 2019年4月28日

抽出・挿入(Left、Mid、Right、InStr)

文字列を抽出したり、挿入する場合はLeft、Mid、Right、InStrなどの関数を組み合わせて使います。

抽出する方法

文字列を抽出する方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Left関数で先頭から指定文字数だけ抜き出す
更新日 : 2019年4月23日
【VBA入門】Mid関数で文字列の抜き出し(Left、InStr関数も解説)
更新日 : 2019年4月20日
【VBA入門】InStrで文字列検索する方法を6つのステップでマスター
更新日 : 2019年4月25日

挿入する方法

文字列を挿入するために、抽出した文字列を「&」記号を使って結合する方法をご紹介します。

実行結果:
String01

このサンプルコードでは、InStr関数で指定した文字列”School”の位置を検索し、Left関数とMid関数で文字列をそれぞれ抽出しています。抽出した文字列と挿入したい文字列を「&」記号を使って結合しています。

変換(CStr、Val、LCase、Format、StrConv)

文字列の変換は何に変換するかによって使用する関数が違ってきます

数値と文字列の変換

数値から文字列に変換する場合はCstr関数を使います。文字列から数値に変換する場合はVal関数を使います。

サンプルコードで確認しましょう。

実行結果:
String02

このサンプルコードでは、CStr関数を使ってInteger型の数値を文字列に変換しています。そして、Val関数を使って文字列を数値型に変換して計算を実行しています。

なお「&」記号を使って文字列と数値を結合する場合、明示的にCStr関数を使わず数値のままでも、暗黙的に文字列に変換されるので結合することが可能です。またVal関数は文字列をDouble型に変換します。

大文字と小文字の変換

大文字に変換する場合はUCase関数を、小文字に変換する場合はLCase関数を使用します。

UCase、LCaseの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Like演算子(ワイルドカード、エスケープ、否定)
更新日 : 2019年4月19日

日付型と文字列の変換

日付型(Date型)を文字列に変換する場合には、Format関数を使用します。表示形式を設定することができて便利です。

Format関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA】Formatで日付・時刻、数値、文字列の表示設定(和暦、曜日)
更新日 : 2019年4月21日

また日付型(Date型)の扱い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】日付を扱う方法(取得、書式変換、比較、計算、チェック)
更新日 : 2019年4月21日

半角文字と全角文字の変換

半角文字と全角文字を変換する場合、StrConv関数を使用します。

StrConv関数は以下のように記述します。

引数stringには、変換する文字列を指定します。引数conversionには、変換の種類を指定します。引数conversionには以下の定数を指定します。

定数説明
vbUpperCase1文字列を大文字に変換
vbLowerCase2文字列を小文字に変換
vbProperCase3文字列の各単語の先頭の文字を大文字に変換
vbWide4文字列内の半角文字を全角文字に変換
vbNarrow8文字列内の全角文字を半角文字に変換
vbKatakana16文字列内のひらがなをカタカナに変換
vbHiragana32文字列内のカタカナをひらがなに変換
vbUnicode64文字列をUnicodeに変換
vbFromUnicode128文字列をUnicodeからシステムの既定のコードページに変換

StrConv関数を使えば、大文字と小文字の変換も可能です。ここでは、半角文字と全角文字の変換についてご紹介します。

実行結果:
String03

ひらがなとカタカナの変換

ひらがなとカタカナを変換する場合もStrConv関数を使います。第2引数の定数を指定することで変換できます。

サンプルコードで確認しましょう。

実行結果:
String04

比較(StrComp)

2つの文字列が同じか、そうでないか比較するにはStrComp関数を使用します。

StrComp関数は以下のように記述します。

引数の「[ ]」内は省略可能です。引数string1には、比較する一方の文字列を指定します。引数string2には、比較するもう一方の文字列を指定します。引数compareには、文字列の比較モードを指定します。

0の場合はバイナリーモードでの比較となり、大文字と小文字を区別します。1の場合はテキストモードでの比較となり、大文字と小文字の区別をしません。

サンプルコードで確認しましょう。

実行結果:
String05

このサンプルコードでは、大文字と小文字の文字列をStrComp関数を使って比較しています。

バイナリーモードで大文字と小文字を区別する場合は-1を返しています。テキストモードで大文字と小文字を区別しない場合は0を返しています。

削除(Replace、Trim、LTrim、RTrim)

削除する関数には大きく分けて2種類の関数があります。文字列を指定して削除する関数と、半角スペースを削除する関数です。

それぞれの関数についてみていきましょう。

Replaceで削除する方法

文字列を指定して削除する場合は、Replace関数を使います。Replace関数で文字列を指定して、その文字列を空文字に置換することで削除します。

Replace関数を使って文字列を削除する方法については、こちらで詳しく解説しています。ぜひ参考にしてください。

【VBA入門】Replace関数とReplaceメソッドで文字列の置換
更新日 : 2019年4月21日

Trim、LTrim、RTrimで削除する方法

半角スペースを削除する場合は、Trim、LTrim、RTrimなどの関数を使います。

Trim、LTrim、RTrim関数の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【VBA入門】Trim関数で文字列前後の空白を削除
更新日 : 2019年5月31日

まとめ

ここでは、文字列を操作する方法について説明しました。ここでご紹介した関数を使うことで、置換、結合、分割、変換、比較などの文字列操作が可能になります。

使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説