文字列に別の文字列が含まれているかどうかを確認する


233

文字列に「、」(カンマ)が含まれているかどうかを確認したい。文字ごとに読む以外に他のオプションはありますか?


14
あなたのINSTRために働きますか?
Stephen Quan 2013年

回答:


386

Instr関数を使用する

Dim pos As Integer

pos = InStr("find the comma, in the string", ",")

posで15を返します

見つからない場合は0を返します

Excelの数式でコンマを検索する必要がある場合は、=FIND(",";A1)関数を使用できます。

Instr大文字と小文字を区別しない文字列の位置を見つけるために使用したい場合は、Instrの3番目のパラメーターを使用し、それにconst vbTextCompare(またはダイハードの場合は1)を指定します。

Dim posOf_A As Integer

posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)

値は14になります。

この場合、私がリンクした仕様に記載されているように、開始位置を指定する必要があることに注意してください。compareが指定されている場合は、start引数が必要です。


4
しかし、見つかった文字列が位置0にある場合はどうなりますか?「インデックス0で見つかりました」と「見つかりません(0)」をどのように区別しますか?
gEdringer 2016

10
@gEdringer。検索される文字列が先頭にある場合、1を返します
rene


23

同じタイプのことを行うInStrRev関数もありますが、テキストの終わりから始まりまで検索を開始します。

@reneの答えごとに...

Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")

...それでも15をposに返しますが、「the」という単語のように、文字列に複数の検索文字列が含まれている場合は、次のようになります。

Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")

... 6ではなく20をposに返します。


17

ルネの答えに基づいて、部分文字列が存在する場合はTRUE、存在しない場合はFALSEを返す関数を作成することもできます。

Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
    Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function

3
この関数では、どのようなデータベースエラーが予想されますか?エラートラップとエラーメッセージはまったく意味がないようです。
Roobie Nuby 14

11
@RoobieNubyそれは私のデフォルトのエラー処理です。私はすべての機能にそれを入れました。何かがうまくいかなかった場合、私はスタッフが私に電話して欲しいのです。
不吉なひげ2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.