これはなぜ動作しないのかわかりません。これははるかに大きなサブルーチンの一部ですが、この問題をInStr関数でのワイルドカードの使用に限定しました。InStrまたはワイルドカードで問題が発生していますか?
できるだけ多くの情報をInStrとワイルドカードで検索しようとしましたが、これまでのところはになるはずです。しかし、それはしません。
Dim String1 As String
Dim String2 As String
Dim TestString As String
Dim Location As Integer
String1 = "Hello"
String2 = "Goodbye"
TestString = "Hello and Goodbye"
Location = InStr(1, TestString, (String1 & "*" & String2), vbTextCompare)
If Location >= 1 then
'Do Something
End If
OK、私は人々が示唆されているものに基づいていくつかのことを試してみた、そして今、私はこの時点でのよ...
Dim SourceString As String
Dim TestString As String
Dim TempArray() As String
SourceString = "Hello and Goodbye"
TestString = "hello * goodbye"
TempArray = Split(TestString, "*")
If SourceString Like _
Chr(42) & TempArray(0) & Chr(42) & TempArray(1) & Chr(42) Then
Found = True
End If
私は、ののDebug.Printを行ってきましたTempArrayの各セクションには空白が含まれているので、分けることが分かります。
今は何が欠けていますか? :(
の前と後の両方に発生した場合、あなたの 'Instr'のバージョンが失敗する可能性がある場合、ここで他の答えが間違った結果を与えることがあなたの何かのコード
注意のために必要とされる場合'String2'が' String1'の前または後に発生する場合 –
String1がString1の前に出現すると失敗しますが、これはOPが動作していた 'String1&" *& "String2'パターンに従うように設計されています元々。私は、String2がString1の部分文字列であり、最初の一番左の文字ではないという偽陽性を考えなかった。 +1良いキャッチ!私は訂正で編集します。私はあなた自身の答えに近いものを思いついたようだ。 – Jeeped
String2がString1の後の_and_の前にある場合、それは偽の否定を与えます。最初のコードは最初のコードを検出し、falseを返しますが、2番目のコードはパターンと一致する必要があります。 –