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
для ошибки в строке, назначенной 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
Если вы перебираете много ячеек, используйте двоичную функцию, это намного быстрее. Через " 0" вместо "> 0" также делает его быстрее:
If InStrB(1, myString, "a", vbBinaryCompare) <> 0