2013-03-23 36 views

答えて

269

が見つからない場合は

それが0

戻りますPOSで15を返しますInstr機能

Dim pos As Integer 

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

を使用します=FIND(",";A1)機能。

Instrを使用して、大文字と小文字を区別しない文字列の位置を検索する場合は、Instrの3番目のパラメータを使用し、const vbTextCompare(またはdie-hardsの場合は1)を指定します。比較が指定されている場合、開始引数が必要です

Dim posOf_A As Integer 

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

はあなたが私がリンク仕様で述べたように、この場合の開始位置を指定する必要があります14

注の値が得られます。

+2

しかし、見つかった文字列が位置0にある場合はどうなりますか? 「索引0で見つかった」と「見つからない(0)」を区別するにはどうすればよいですか? – gEdringer

+6

@gEdringer。見つかった文字列が開始時に1を返します。 – rene

18

同じ種類のものを扱いますが、テキストの末尾から始めに検索を開始する機能があります(InStrRev)。文字列が単語「」のように、検索文字列を複数持っている場合、@のルネの答えパー

...

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

は...まだ、その後、POSに15を返しますが、になります。

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

は...代わりに、POSに20を返します6.

15
、あなたもそれがwasn場合、サブストリングが存在した場合に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 
+2

この関数ではどのようなデータベースエラーが予想されますか?エラートラップとエラーメッセージは完全に無意味であるようです。 –

+7

@ RoobieNubyこれは私のデフォルトのエラー処理です。私は何かが間違っていたら、スタッフが私に電話して、自分でそれを試して修正しないようにしたいので、私はすべての機能にそれを入れました。 – BFWebAdmin

38

また、特別な言葉like使用することができます。

Public Sub Search() 
    If "My Big String with, in the middle" Like "*,*" Then 
    Debug.Print ("Found ','") 
    End If 
End Sub 
+2

パターン形式へのリンクhttps://msdn.microsoft.com/en-us/library/swf8kaxw.aspx?f=255&MSPPError=-2147217396 –