まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

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

       f:id:m_kbou:20190523154701p:plain

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

 

【目次】

 

構文

Inster関数の記述方法は、以下の通りとなります。

=======================================================================

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

=======================================================================

[説明]:

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

[記述例]:

InStr("ABCDEF", "B")

 

使い方

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

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

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

[記述例]:

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

-------------------------------------------------

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

-------------------------------------------------

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

[実行例]:

結果は、左から2番目に存在するため、「2」がMsgBoxに表示されます。

f:id:m_kbou:20190523074531p:plain 

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

 

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

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

-------------------------------------------------------------------------------------------------------------

[記述例①]:

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

-------------------------------------------------

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

-------------------------------------------------

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

[実行例①]:

f:id:m_kbou:20190523074546p:plain

結果は、対象となる文字列に存在しないため、「0」がMsgBoxに表示されます。

-------------------------------------------------------------------------------------------------------------

[記述例②]:

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

-------------------------------------------------

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

-------------------------------------------------

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

[実行例②]:

f:id:m_kbou:20190523074546p:plain

結果は、対象となる文字列に存在しないため、「0」がMsgBoxに表示されます。
※大文字・小文字は判別されます。

-------------------------------------------------------------------------------------------------------------

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

 

おわりに

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