2016-11-07 136 views
0

如何從輸入框中刪除所有字符,只留下數字?刪除輸入框中的所有文本?

我有一個宏沿着刪除空格的列向下運行,縮短到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