2016-11-07 1 views
0

숫자 만 남기고 입력 상자에서 모든 문자를 제거하려면 어떻게해야합니까?inputbox에서 모든 텍스트를 제거 하시겠습니까?

공백을 제거하고 13 자리로 줄이는 매크로가 있지만 텍스트 문자를 모두 제거해야합니다.

+4

http://stackoverflow.com/questions/7384029/how-do-i-remove-the-characters – Nulled

+0

바보 같이, 나는 실제로 관리 이 작업이 실제로는 잠시 뒤로 돌아 오게하려면, 내가 링크 한 것만 큼 복잡하지는 않습니다 (코드 한 줄로 작성한 것). 그러나 나는 내가 어떻게 그것을했는지를 기억할 수없고 다른 프로젝트를 찾을 수 없다. 그래서 링크에 감사하지만 이것이 대답이 아니므로 질문을 공개적으로 남겨 둘 수 있습니까? –

답변

0

나는 아직도 regexp이 갈 길이라고 생각합니다.

Function removeAlpha(strData As String) As String 

    strData = Replace(strData, " ", "") 

    With CreateObject("vbscript.regexp") 
     .Pattern = "[A-Za-z]" 
     .Global = True 
     removeAlpha = .Replace(strData, "") 
    End With 

End Function 

그리고 시험에

:이 소리

Sub TestClean() 
    Const strTest As String = "qwerty123 456 uiops" 
    MsgBox removeAlpha(strTest) 
End Sub 
+0

감사합니다. 나는 그걸 좀 더 들여다 보겠다. 지금은 그걸 작동시킬 수는 없지만. 다른 주제이기 때문에 나는 또 다른 질문을 할 것이다. –

0

regular expression를 사용하는 또 다른 방법은 다음과 같습니다

Public Sub removeCharacters() 

    For Each RANGE_UNASSIGNED In Worksheets(1).Range("A1:A" & Worksheets(1).Range("A1").End(xlDown).Row) 
    STRING_OUTPUT = "" 
     For INTEGER_STEP = 1 To Len(RANGE_UNASSIGNED.Value) 
      STRING_TEMPORARY = Mid(RANGE_UNASSIGNED.Value, INTEGER_STEP, 1) 
       If STRING_TEMPORARY Like "[a-z.]" Or STRING_TEMPORARY Like "[A-Z.]" Then 
        STRING_xOUTPUT = "" 
       Else 
        STRING_xOUTPUT = STRING_TEMPORARY 
       End If 
       STRING_OUTPUT = STRING_OUTPUT & STRING_xOUTPUT 
     Next INTEGER_STEP 
     RANGE_UNASSIGNED.Value = STRING_OUTPUT 
    Next RANGE_UNASSIGNED 
End Sub 

이것은 당신의 세포 (들)에서 모든 알파 문자를 제거해야합니다. 필요한 경우 추가 문자를 제거 할 수 있습니다.

0

IsNumeric에 기반한 접근 방식.

Sub Keep_If_IsNumeric() 

For j = 1 To Cells(Rows.Count, "A").End(xlUp).Row 

Set c = Cells(j, 1) 

strc = "" 

For i = 1 To Len(c.Value) 

n = Mid(c.Value, i, 1) 

If Not IsNumeric(strc & n & "0") Then 

    Else 

    strc = strc & n 

End If 

Next 
c.Offset(, 1) = strc 
c.Offset(, 2) = Val(Replace(strc, ",", ".")) 

Next 
End Sub 
관련 문제