728x90

첫문자열 공백제거


네이버지식인에 나온 질문을 테스트해보려고 복사해서 붙여넣기를 했더니



이렇게 앞부분이 공백으로 나오는 경우가 있습니다.

trim 함수 이용하여 지워도 절대 지워지지 않더군요. trim 함수는 문자열의 앞뒤의 스페이스바 공백 (아스키값 32)만 지우는 겁니다.


Sub asc_value()
    Dim rngC As Range
    Dim rngAll As Range
    Dim temp As Variant
    ActiveCell.Select
    Set rngAll = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
    For Each rngC In rngAll
        temp = Asc(Left(rngC, 1))
        MsgBox temp
    Next rngC
End Sub


아스키 값을 알아냈다니 63 이라고 나오네요..


그래서

Sub 문자열변경()
    Dim rngAll As Range   
    Set rngAll = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
    rngAll.Replace What:=Chr(63), replacement:=""
End Sub


로 했더니....

이렇게 다 지워져 버리네요.. 알고보니 아스키값 63 은 ? 이더군요..

엑셀에서 ? 된 것은 모두를 뜻하여 전부 지워버린 거네요..


그래서 좀 불편하더라도

Sub 첫문자열공백제거()
    Dim rngAll As Range
    Dim rngC As Range
    Dim sName  As String
  
    ActiveCell.Select     '// 현재 커서가 있을 셀 선택
    Set rngAll = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
  
    For Each rngC In rngAll
        sName = Left(rngC, 1)     '// 첫번째 문자열 추출
        If Asc(sName) = 63 Or Asc(sName) = 32 Then    '//스페이스바의 아스키 값은 32
            rngC = Mid(rngC, 2, Len(rngC))       
        End If
    Next rngC  
End Sub


코드를 사용해서 첫문자열 공백을 제거했습니다.



아스키 코드값을 알아내도 잘못 사용하면 데이터가 원하지 않는 결과를 얻을 수도 있다는 걸 알았습니다.



728x90
블로그 이미지

Link2Me

,