Dim pos AsInteger
pos = InStr("find the comma, in the string",",")
zwróci 15 w poz
Jeśli nie zostanie znalezione, zwróci 0
Jeśli chcesz znaleźć przecinek z formułą programu Excel, możesz użyć =FIND(",";A1)funkcji.
Zauważ, że jeśli chcesz użyć Instrdo znalezienia pozycji łańcucha bez rozróżniania wielkości liter, użyj trzeciego parametru Instr i nadaj mu const vbTextCompare(lub tylko 1 dla trudnych warunków).
Dim posOf_A AsInteger
posOf_A = InStr(1,"find the comma, in the string","A", vbTextCompare)
da ci wartość 14.
Zauważ, że w tym przypadku musisz określić pozycję początkową, jak podano w specyfikacji, którą połączyłem: Argument początkowy jest wymagany, jeśli podano porównanie.
Opierając się na odpowiedzi Rene, możesz również napisać funkcję, która zwróci PRAWDA, jeśli podciąg był obecny, lub FAŁSZ, jeśli nie był:
PublicFunction Contains(strBaseString AsString, strSearchTerm AsString)AsBoolean'Purpose: Returns TRUE if one string exists within anotherOnErrorGoTo ErrorMessage
Contains = InStr(strBaseString, strSearchTerm)ExitFunction
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '"& Err.Description &"'", vbCritical,"Database Error"EndEndFunction
Jakiego rodzaju błędu bazy danych oczekujemy w tej funkcji? Pułapka na błędy i komunikat o błędzie wydają się całkowicie bezcelowe.
Roobie Nuby,
11
@RoobieNuby To tylko moja domyślna obsługa błędów. Włączam to we wszystkich moich funkcjach, ponieważ jeśli coś pójdzie nie tak, chcę, żeby personel do mnie zadzwonił, a nie sam próbował tego naprawić.
INSTR
działa dla ciebie?Odpowiedzi:
Użyj funkcji Instr
zwróci 15 w poz
Jeśli nie zostanie znalezione, zwróci 0
Jeśli chcesz znaleźć przecinek z formułą programu Excel, możesz użyć
=FIND(",";A1)
funkcji.Zauważ, że jeśli chcesz użyć
Instr
do znalezienia pozycji łańcucha bez rozróżniania wielkości liter, użyj trzeciego parametru Instr i nadaj mu constvbTextCompare
(lub tylko 1 dla trudnych warunków).da ci wartość 14.
Zauważ, że w tym przypadku musisz określić pozycję początkową, jak podano w specyfikacji, którą połączyłem: Argument początkowy jest wymagany, jeśli podano porównanie.
źródło
Możesz także użyć słowa specjalnego
like
:źródło
Istnieje również funkcja InStrRev, która wykonuje te same czynności, ale rozpoczyna wyszukiwanie od końca tekstu do początku.
Odpowiedź Per @ rene ...
... nadal zwróciłby 15 do pozycji pos, ale jeśli ciąg ma więcej niż jeden ciąg wyszukiwania, na przykład słowo „the”, to:
... zwróci 20 do pozycji zamiast 6.
źródło
Opierając się na odpowiedzi Rene, możesz również napisać funkcję, która zwróci PRAWDA, jeśli podciąg był obecny, lub FAŁSZ, jeśli nie był:
źródło