2016-11-07 130 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