VBA, если строка содержит определенную букву

Я обычно не работаю с VBA и я не могу понять это. Я пытаюсь определить, содержится ли определенная буква в строке на моем spreadhseet.

Private Sub CommandButton1_Click()
Dim myString As String
RowCount = WorksheetFunction.CountA(Range("A:A"))
MsgBox RowCount
For i = 2 To RowCount
    myString = Trim(Cells(i, 1).Value)
    If myString.Contains("A") Then
        oldStr = Cells(i, 15).Value
        newStr = Left(oldStr, oldStr.IndexOf("A"))
    End If
Next          
End Sub

этот код должен пройти через список значений, и если он сталкивается с буквой A, чтобы удалить его и все, что приходит после него. Я получаю проблемы на моем IF заявление, неверный квалификатор. Как я смогу сделать свой IF вывод инструкции независимо от того, является ли строка в ячейке содержит букву А?

большое спасибо

4 ответов


попробуйте использовать функцию InStr, которая возвращает индекс в строке, в которой был найден символ. Если InStr возвращает 0, строка не найдена.

If InStr(myString, "A") > 0 Then

веб-сайт InStr MSDN

для ошибки в строке, назначенной newStr, преобразуйте oldStr.IndexOf к этой функции InStr также.

Left(oldStr, InStr(oldStr, "A"))

Не уверен, что это то, что вам нужно, но он будет проходить через диапазон, который вы ему дали, и если он найдет "A", он удалит его из ячейки. Я не уверен, для чего используется oldStr...

Private Sub foo()
Dim myString As String
RowCount = WorksheetFunction.CountA(Range("A:A"))

For i = 2 To RowCount
    myString = Trim(Cells(i, 1).Value)
    If InStr(myString, "A") > 0 Then
        Cells(i, 1).Value = Left(myString, InStr(myString, "A"))
    End If
Next
End Sub

попробуй:

If myString like "*A*" Then

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

If InStrB(1, myString, "a", vbBinaryCompare) <> 0