2016-11-07 21 views
0

数値だけを残して、inputboxからすべての文字を削除するにはどうすればよいですか?inputboxからすべてのテキストを削除しますか?

空白を削除して、13桁に短縮するマクロがありますが、テキスト文字を削除する必要もあります。

regular expression
+4

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

+0

、私は実際に管理これを実際にはちょっと戻って動作させるには、あなたがリンクしているものほど複雑ではありませんでした(私は1行のコードで行いました)。しかし、私はどのようにそれをやったのかを覚えていないので、他のプロジェクトを見つけることができません。リンクに感謝しますが、これは答えではないので、質問を開いたままにしておくことができます。 –

答えて

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

を使用する別の方法は、次のとおり

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 
関連する問題