教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Instr関数で文字列を検索するにはどうすればいいの?使い方を教えて!

f:id:m_kbou:20200420121525p:plain

Instr関数はある文字列の中から指定の文字位置を特定する場合に使用します。VBAでは使用する頻度が高いため重要な関数になります。Instr関数の使い方について紹介します。

 

 

構文

記述方法は以下の通りとなります。

InStr(”[ 対象となる文字列]”, ”[検索する文字列]”)

[説明]:

[対象となる文字列]には検索対象文字列を記述します。また、[検索する文字列]には検索する文字列を記述します。各々の文字列は「”」(ダブルクォーテーション)で囲みます。内容を纏めると、「[対象となる文字列]の中を[検索する文字列]で左から検索し、見つかった場合にはその位置を教えて下さい。」との意味になります。見つかった場合にはその位置を数字で返します。(例:左から2番目にあった場合には「2」を、見つからなかった場合には「0」を返します)

[記述例]:

InStr("ABCDEF", "B")

 

使い方

使い方について具体的に説明します。

検索する文字列が対象文字列に存在する場合

検索する文字列が存在する場合について説明します。

[プログラミング例]:

Sub サンプル()
  MsgBox InStr("ABCDEF", "B")
End Sub

内容は、「対象となる文字列:ABCDEFの中を検索する文字列:Bで検索し、存在した場合にはその位置をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210222120724p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210412121140p:plain

②結果は以下の様に表示されます。”B”が文字列の左から2番目に存在するため、MsgBoxで「2」が表示されます。

f:id:m_kbou:20210412121152p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

検索する文字列が対象文字列に存在する場合についての説明は以上です。

 

検索する文字列が対象文字列に存在しない場合

検索する文字列が存在しない場合について説明します。 

[プログラミング例①]:

Sub サンプル()
  MsgBox InStr("ABCDEF", "Z")
End Sub

内容は、「対象となる文字列:ABCDEFの中を検索する文字列:Zで検索し、存在した場合にはその位置をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210222121131p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例①]:

①<実行>ボタンには上記のプログラミング例①のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210412121310p:plain

②結果は以下の様に表示されます。”Z”は文字列の中に存在しないため、MsgBoxで「0」が表示されます。

f:id:m_kbou:20210412121322p:plain

[サンプル①]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

[プログラミング例②]:

Sub サンプル()
  MsgBox InStr("ABCDEF", "c")
End Sub

内容は、「対象となる文字列:ABCDEFの中を検索する文字列:c(小文字)で検索し、存在した場合にはその位置をMsgBoxで表示して下さい。」との意味になります。

f:id:m_kbou:20210222121424p:plain

※上記の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。 

[実行例②]:

①<実行>ボタンには上記のプログラミング例②のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210412121409p:plain

②結果は以下の様に表示されます。小文字の”c”は文字列の中に存在しないため、MsgBoxで「0」が表示されます。(※Instr関数は大文字・小文字の判別も行うため、文字列中の大文字”C”とは別物として判断されます。)

f:id:m_kbou:20210412121421p:plain

[サンプル②]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

検索する文字列が対象文字列に存在しない場合の説明は以上です。

 

プログラミング(サンプル)

プログラミング事例を紹介します。

www.osiete-excelvba.work

 

おわりに

InStr関数を使用すると対象となる文字列の中に含まれる検索文字の位置を調べる事ができます。また、検索結果を元に他の関数と組み合わせると、更に複雑な処理を実行する事も可能です。是非InStr関数を取り入れて、プログラムコードの簡素化に役立てて下さい。また、類似の関数にはLeft関数Right関数Mid関数もありますので、合わせて覚えて下さい。