2013-03-23 27 views

Odpowiedz

269

Użyj Instr funkcję

Dim pos As Integer 

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

powróci 15 w poz

Jeśli nie okazało się, że powróci 0

Jeśli trzeba znaleźć przecinek z formuły programu Excel można użyć Funkcja =FIND(",";A1).

Uwaga, jeśli chcesz używać Instr znaleźć pozycję ciąg wielkości liter użytku trzeci parametr Instr i nadać mu const vbTextCompare (lub tylko 1 do ciśnieniowego Hards).

Dim posOf_A As Integer 

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

daje wartość 14.

Zauważ, że musisz określić pozycję startową w tym przypadku, jak określono w specyfikacji I połączone: Początek argumentem jest wymagane, jeśli porównanie jest określona.

+2

Ale co, jeśli znaleziony ciąg znaków znajduje się w pozycji 0? Jak odróżnić "znalezione na indeksie 0" i "nie znalezione (0)"? – gEdringer

+6

@gEdringer. Gdy znaleziony ciąg znaków jest na początku, zwraca 1. – rene

18

Istnieje również funkcja InStrRev, która robi to samo, ale rozpoczyna wyszukiwanie od końca tekstu do początku.

za odpowiedź @ Rene ...

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

... będzie jeszcze powrócić do poz 15, ale jeśli ciąg ma więcej niż jeden ciąg wyszukiwania, jak słowo „ten”, a następnie:

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

... wróci do poz 20, zamiast 6.

15

Opierając się na odpowiedź Rene, można również napisać funkcję, która zwrocone TRUE jeśli podciąg był obecny, lub FAŁSZ, jeśli to nie było t:

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

Jakiego rodzaju błędu bazy danych oczekujemy w tej funkcji? Błąd pułapkowania i komunikat o błędzie wydają się zupełnie bezużyteczne. –

+7

@RoobieNuby To jest po prostu moja domyślna obsługa błędów. Wrzucam to do wszystkich moich funkcji, ponieważ jeśli coś pójdzie nie tak, chcę, żeby personel zadzwonił do mnie, a nie sam to naprawił. – BFWebAdmin

38

Można również użyć specjalnego słowo like:

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

Link do formatu wzoru https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx?f=255&MSPPError=-2147217396 –

Powiązane problemy