2017-12-04 3 views
0

Ich habe den folgenden VBA-Code, die "0" für die InStr-Funktion gibt:Instr Funktion nicht zu finden Substring

If InStr("ICD-10 & CPT OPC NHSN", "JCMC ICD-10 & CPT OPC NHSN Sep-17 new.xlsx") > 0 Then 
    'Do something 
End If 

jedoch den folgenden Code, die WorksheetFunction.Find Funktion verwendet, wird findet den Teil bei Position 6:

If Application.WorksheetFunction.Find("ICD-10 & CPT OPC NHSN", "JCMC ICD-10 & CPT OPC NHSN Sep-17 new.xlsx") > 0 Then 
    'Do something 
End If 

Warum gibt die WorksheetFunction 6 zurück, während die InStr-Funktion den Teilstring nicht findet?

Antwort

1

Wenn Sie the documentation for the InStr function betrachten, sehen Sie, dass der erste der beiden obligatorischen Parameter die zu durchsuchende Zeichenfolge und der zweite Parameter die gesuchte Zeichenfolge ist.

string1 Erforderlich. String-Ausdruck wird gesucht.
string2 Erforderlich. String-Ausdruck gesucht.

So Ihr Code muss

If InStr("JCMC ICD-10 & CPT OPC NHSN Sep-17 new.xlsx", "ICD-10 & CPT OPC NHSN") > 0 Then 
    'Do something 
End If 
+0

ich es jedes Mal, wenn ich es verwenden aussehen müssen, um betragen. Ich bekomme es immer rückwärts. –

+0

@ScottCraner Ich bekomme es 99% der Zeit (weil ich 'InStr' öfter benutze als viele andere Funktionen), aber bei den Gelegenheiten, wenn ich es zurückbekomme, ist mein erster Gedanke:" Habe ich die richtigen Parameter benutzt? " , also dauert es nicht lange, das zu beheben. – YowE3K

+0

Ich hüpfe zwischen FIND() auf dem Arbeitsblatt, INSTR() in VBA und SUBSTRING() auf SqlServer hin und her, dass ich sie nie gerade halten kann. –