prosource

VBA, 문자열에 특정 문자가 포함된 경우

probook 2023. 6. 12. 21:35
반응형

VBA, 문자열에 특정 문자가 포함된 경우

저는 보통 함께 일하지 않습니다.VBA이걸 이해할 수가 없어요스프레드시트의 문자열에 특정 문자가 포함되어 있는지 확인하는 중입니다.

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명령문 출력 셀의 문자열에 문자 A가 포함되어 있는지 여부?

정말 감사합니다.

문자가 발견된 문자열의 인덱스를 반환하는 InStr 함수를 사용해 보십시오.InStr이 0을 반환하는 경우 문자열을 찾을 수 없습니다.

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

InStr MSDN 웹 사이트

newStr에 할당하는 라인에서 오류가 발생하면 oldStr을 변환합니다.또한 해당 InStr 함수에 대한 인덱스입니다.

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

시도:

If myString like "*A*" Then

이것이 당신이 원하는 것인지 확실하지 않지만, 그것은 당신이 그것을 제공한 범위를 순환할 것이고 만약 그것이 "A"를 발견한다면 그것은 그것을 셀에서 제거할 것입니다.오래된 Str이 무슨 용도로 쓰이는지...

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

언급URL : https://stackoverflow.com/questions/24617278/vba-if-a-string-contains-a-certain-letter

반응형