253

文字列に「、」(カンマ)が含まれているかどうかを調べたい。char-by-charを読み取る以外に他のオプションはありますか?

4

5 に答える 5

419

Instr関数を使用します (古いバージョンの MSDN doc はこちらにあります) 。

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 になります。

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

于 2013-03-23T09:13:09.573 に答える
1

既存の Instr/InstrRev 関数を考えると、実際にはこれを行う必要はありませんが、EVALUATE を使用して VBA 内の Excel ワークシート関数の結果を返すと便利な場合があります。

Option Explicit

Public Sub test()

    Debug.Print ContainsSubString("bc", "abc,d")

End Sub
Public Function ContainsSubString(ByVal substring As String, ByVal testString As String) As Boolean
    'substring = string to test for; testString = string to search
    ContainsSubString = Evaluate("=ISNUMBER(FIND(" & Chr$(34) & substring & Chr$(34) & ", " & Chr$(34) & testString & Chr$(34) & "))")

End Function
于 2021-01-03T08:46:55.300 に答える