VBA入門
VBA関数(文字列操作,Replace,InStr,StrConv)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-09-10

第47回.VBA関数(文字列操作,Replace,InStr,StrConv)


文字列操作は、マクロVBAでプログラミングする上で必須です、
データ整形、データクレンジング、データクリーニング、
これらを行うVBAにおいて不可欠なものが、文字列操作関数です。


ここでは、文字列操作に関するVBA関数の一覧
Replace関数、InStr関数、StrConv関数について解説します。
これら以外の他の関数は、一覧のリンクより個別のページを参照して下さい。

全てのVBA関数一覧は、VBA関数一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……


文字列操作に関するVBA関数の一覧

下表のリンクはVBA関数一覧の説明ページが開かれます。
太字は、このページの下でも解説しています。

関数 説明 対応ワークシート関数
Asc,AscB,AscW 指定した文字列内にある先頭の文字の文字コードを返す変換関数です ワークシート関数のCODE,UNICODEと同様ですが、文字コードが違います。
Chr,ChrB,ChrW 指定した文字コードに対応する文字を示す文字列型 (String) の値を返します ワークシート関数のCHAR,UNICHARと同様ですが、文字コードが違います。
LCase アルファベットの大文字を小文字に変換します ワークシート関数のLOWERと同じ
UCase アルファベットの小文字を大文字に変換します ワークシート関数のUPPERと同じ
Len,LenB 指定した文字列の文字数を表す値を返します
LenBはバイト数です
ワークシート関数と同じ
Left,LeftB 文字列の左端から指定した文字数分の文字列を返します
LeftBはバイト数です
ワークシート関数と同じ
Mid,MidB 文字列から指定した文字数分の文字列を返します
MidBはバイト数です
ワークシート関数と同じ、文字数は省略可能
Right,RightB 文字列の右端から指定した文字数分の文字列を返します
RightBはバイト数です
ワークシート関数と同じ
Replace 指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します ワークシート関数のSUBSTITUTEと同じ機能
InStr ある文字列の中から指定した文字列を検索し、最初に見つかった文字位置を返す ワークシート関数のFINDと同じ機能
ただし大文字小文字の区別はcompareで指定可能。
InStrRev ある文字列の中から指定された文字列を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です  
Space 指定した数のスペースからなる文字列を返す文字列処理関数です  
String 指定した文字コードの示す文字、または文字列の先頭文字を、指定した文字数だけ並べた文字列を返す文字列処理関数です ワークシート関数のREPTと似ているが、REPTが文字列(複数文字)を繰り返すのに対し、Stringは先頭1文字のみ繰り返します。また引数の順序が違います。
Str 数式の値を文字列で表した値 (数字) で返す文字列処理関数です
StrConv 指定した変換方式で変換した文字列をバリアント型 (内部処理形式 String の Variant) で返します  
StrReverse 指定された文字列の文字の並びを逆にした文字列を返します  
Trim 指定した文字列から先頭と末尾の両方のスペースを削除した文字列を表す値を返します ワークシート関数とほぼ同じだが、中間スペースは削除されない
LTrim 指定した文字列から先頭のスペースを削除した文字列を表す値を返します  
RTrim 指定した文字列から末尾のスペース (RTrim)を削除した文字列を表す値を返します  
Val 指定した文字列に含まれる数値を適切なデータ型に変換して返します ワークシート関数のVALUEに近いが、先頭の数値部分のみ取り出す

対応するワークシート関数が解らない場合は、まずは、そちらを覚えて頂きたい。
ワークシート関数と同じと記していても、全く同一と言う訳ではありません。
引数や戻り値において、若干の違いがあるものもありますので注意願います。
マクロにおいて、良く使うものの中から、少々説明が必要と思われるものを以下に説明します。
上表では太字にしてあります。


Replace関数

指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。

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

expression 必ず指定します。
置換する文字列を含む文字列式 を指定します。
find 必ず指定します。
検索する文字列を指定します。
replace 必ず指定します。
置換する文字列を指定します。
start 省略可能です。
引数 expression 内の内部文字列の検索開始位置を指定します。
この引数を省略すると、1 が使用されます。.
count 省略可能です。
置換する文字列数を指定します。この引数を省略すると、既定値の -1 が使用され、すべての候補が置換されます。
compare 省略可能です。
文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。

Replace関数の使用例
Replace("123aAbBcC","A","Z") → "123aZbBcC"

実戦VBAコードの参考
文字列置換の基本と応用(Replace)
マクロVBAの処理において文字列置換は頻出の処理ですが、これに苦労している初心者の方が多いようです、そこで文字列置換の基本と応用について解説します。・文字列内の空白(半角・全角)を取り除く VBA関数のTrimは前後の空白が削除されるだけです、そこで、Replace関数を使います。

以下のVBA関数一覧のページも参考にしてください。
Replace関数|VBA関数一覧
Replace関数は、指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します。引数compareの指定りより、全角半角、大文字小文字の扱いが変わります。Replace関数 Replace(expression,find,replace[,start[,count[,compare]]]) …


InStr関数

文字列の中から指定した文字列を検索し、最初に見つかった文字位置を返す文字列処理関数です。

InStr([start, ]string1, string2[, compare])

start 省略可能です。
検索の開始位置を表す数式を指定します。
省略すると、先頭の文字から検索されます。引数 start に Null 値が含まれている場合、エラーが発生します。
引数 compare を指定した場合は、start も指定する必要があります。
string1 必ず指定します。
検索対象となる文字列式を指定します。
string2 必ず指定します。
引数 string1 内で検索する文字列式を指定します。
compare 省略可能です。文字列比較の比較モードを指定する番号を設定します。
引数 compare が Null 値の場合は、エラーが発生します。
引数 compare を指定した場合は、引数 start も指定する必要があります。
引数 compare を省略すると、Option Compare ステートメントの設定に応じて、比較モードが決まります。
ローカル固有の比較ルールを使用するには、有効なLCID (LocaleID) を指定します。

※注意
この関数では、名前付き引数は使用できません。
指定するとコンパイルエラーになります。

InStr関数の使用例
InStr("123aAbBcC","A") → 5

以下のVBA関数一覧のページも参考にしてください。
InStr関数|VBA関数一覧
・InStr関数 ・InStrB関数 ・InStr関数の使用例 ・InStr関数の応用例1 ・InStr関数の応用例2 ・InStr関数の応用例3 ・InStr関数の練習問題 ・ ・


StrConv関数

指定された変換方式で変換した文字列を返します。

StrConv(string, conversion, LCID)

string 必ず指定します。
変換する文字列式を指定します。
conversion

必ず指定します。整数型 (Integer) の値を指定します。
実行する変換の種類の値の合計を指定します。

定数 内容
vbUpperCase 文字列を大文字に変換します。
vbLowerCase 文字列を小文字に変換します。
vbProperCase 文字列の各単語の先頭の文字を大文字に変換します。
vbWide 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。
vbNarrow 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
vbKatakana 文字列内のひらがなをカタカナに変換します。
vbHiragana 文字列内のカタカナをひらがなに変換します。
vbUnicode システムの既定のコード ページを使って文字列を Unicode に変換します。
Macintosh. では使用できません)
vbFromUnicode 文字列を Unicode からシステムの既定のコード ページに変換します。
Macintosh. では使用できません)
LCID 省略可能です。システムとは異なる国別情報識別子 (LCID) を指定できます。
既定値はシステムが使用する LCID です。

StrConv関数の使用例
StrConv("123aAbBcC",vbUpperCase) → "123AABBCC"
StrConv("123aAbBcC",vbLowerCase) → "123aabbcc"
StrConv("123aAbBcC",vbWide) → "123aAbBcC"
StrConv(StrConv("アイウエオ",vbWide),vbHiragana) → "あいうえお"

以下のVBA関数一覧のページも参考にしてください。
StrConv関数|VBA関数一覧
・StrConv関数 ・StrConv関数の注意点 ・StrConv関数の使用例


最後に

ここでVBA関数一覧とは別に解説した以下の関数、
Replace関数、InStr関数、StrConv関数
これらの関数はマクロVBAで頻繁に使うもので、重要かつ習得必須な関数になります。




同じテーマ「マクロVBA入門」の記事

第44回.VBA関数について
第45回.VBA関数(Format)
第46回.VBA関数(日付,DateAdd)
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
第49回.Like演算子とワイルドカード
第50回.総合練習問題6
第87回.WorksheetFunction(ワークシート関数を使う)
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
第53回.Workbookオブジェクト


新着記事NEW ・・・新着記事一覧を見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ