我通常不与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
语句,无效限定符中遇到问题。无论单元格中的字符串是否包含字母A,我如何能够输出IF
语句?
非常感谢
答案 0 :(得分:15)
尝试使用InStr函数,该函数返回找到字符的字符串中的索引。如果InStr返回0,则找不到该字符串。
If InStr(myString, "A") > 0 Then
对于分配给newStr的行的错误,也将oldStr.IndexOf转换为该InStr函数。
Left(oldStr, InStr(oldStr, "A"))
答案 1 :(得分:1)
不确定这是否是你所追求的,但是它会遍历你给它的范围,如果它找到“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
答案 2 :(得分:0)
尝试:
If myString like "*A*" Then
答案 3 :(得分:0)
如果要循环遍历大量单元格,请使用二进制函数,它要快得多。 使用“<> 0”代替“> 0”也可以加快速度:
If InStrB(1, myString, "a", vbBinaryCompare) <> 0