文字列から数値のみを取得したいのですが、どうやればいいのかわかりません。
どなたか教えてくださいませんか?お願いします。
自分で作って見ました。
Private Function GetNumValue(ByVal strData As String) As Long
On Error GoTo ErrHandler
Dim i As Integer
Dim strChar As String
Dim strWork As String
For i = 1 To Len(strData)
strChar = Mid$(strData, i, 1)
Select Case strChar
Case 0 To 9
strWork = strWork & strChar
End Select
Next i
GetNumValue = strWork
Exit Function
ErrHandler:
GetNumValue = 0
End Function
1カ所だけ気になったので。
> Case 0 To 9
Case "0" To "9"
の方が良い気がします。文字列は文字列と比較した方が良いでしょうから。
#厳密に言えば文字列型からLongへの変換も明示した方が良いのですが、
#今回は数字列からの整数への変換で意図せぬ動作の余地がありませんから
#実用上問題はないと思います。
そうですね。ありがとうございました。
また、他にはどういったやり方がありますか?
>また、他にはどういったやり方がありますか?
>
Selectの代わりにLikeを使うとか。
If strChar Like "[0-9]" Then
本当はループさせずに出来るとかっこよさそうだけどね。
処理のとこだけ
set Reg = new RegExp
Reg.Pattern = "[^0-9]"
Reg.Global = True
GetNumValue = Reg.replace(strChar,"")
解決しました。
ツイート | ![]() |