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