VBA,如果一个string包含某个字母

我通常不用VBA工作,我无法弄清楚这一点。 我正在尝试确定某个字母是否包含在我的spreadhseet的一个string中。

 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语句,无效限定符中遇到问题。 无论单元格中的string是否包含字母A,我将如何能够使我的IF语句输出?

非常感谢你

尝试使用InStr函数,该函数返回find该字符的string中的索引。 如果InStr返回0,则找不到该string。

 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