2013-03-23 3 views

ответ

269

Используйте Instr функцию

Dim pos As Integer 

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

вернется 15 в пос

Если не найдено, он будет возвращать 0

Если вам нужно найти запятую с формулой первенствовать вы можете использовать =FIND(",";A1) функция.

Обратите внимание, что если вы хотите использовать Instr, чтобы найти позицию строчной без учета регистра, используйте третий параметр Instr и дайте ему const vbTextCompare (или только 1 для штампов).

Dim posOf_A As Integer 

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

даст вам значение 14.

Обратите внимание, что вы должны указать начальную позицию в этом случае, как указано в спецификации я связан: требуется Стартовый аргумент, если сравнивать указан.

+2

Но что, если найденная строка находится в позиции 0? Как вы различаете «найденный по индексу 0» и «не найден (0)»? – gEdringer

+6

@gEdringer. Когда строка, которая будет найдена, находится в начале, она возвращает 1. – rene

18

Существует также функция InStrRev, которая делает то же самое, но начинает поиск с конца текста до начала.

За ответ @ Рене ...

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

... все равно вернусь 15 к позам, но если строка имеет более одной строки поиска, как и слово «в» и затем:

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

... вернется 20 в позы, вместо 6.

15

Опираясь на ответ Рене, вы могли бы также написать функцию, которая возвращала либо TRUE, если подстрока присутствует, или FALSE, если он WASN '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

Какая ошибка базы данных мы ожидаем в этой функции? Улавливание ошибок и сообщение об ошибке кажутся совершенно бессмысленными. –

+7

@RoobieNuby Это просто моя обработка ошибок по умолчанию. Я включил все свои функции, потому что, если что-то пойдет не так, я хочу, чтобы сотрудники позвонили мне, а не пытались исправить это сами. – BFWebAdmin

38

Вы можете также использовать специальное слово like:

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

Ссылка на формат шаблона https://msdn.microsoft.com/en-us/library/swf8kaxw.aspx?f=255&MSPPError=-2147217396 –

Смежные вопросы