エントリが成績であるエントリの列があるとします。この例では、4 年生とします。数値があればいいだけです。
Function CleanCode(entry) As Integer
If entry Like "[4]" Then entry = 4
End Function
なぜこの関数はそれをしないのですか?
まず、数字で始まる文字列を「クリーン」にするには、「Val(」関数を使用します。CleanCode 関数によって「entry」パラメーターが変更されることも期待していると思いますが、値を明示的に返す必要があります。 .
Function CleanCode(entry) As Integer
entry = Val(entry)
If entry Like "[4]" Then
entry = 4
Else
entry = -1
End If
CleanCode = entry
End Function
この関数を別の関数から呼び出して、その動作を確認できます。
Sub CallCC()
Dim entry As Variant
entry = "9th"
Dim Result As Integer
Result = CleanCode(entry)
MsgBox "Result = " & Result
'Result is -1
entry = "4th grade"
Result = CleanCode(entry)
MsgBox "Result = " & Result
' Result = 4
End Sub
正規表現を使用して、文字列を効率的にクリーンアップします。で文字列を消去するにA1
は、次のB1
ように入力できます。
=CleanString(A1)
Sub Tester()
MsgBox CleanString("3d1fgd4g1dg5d9gdg")
End Sub
Function CleanString(strIn As String) As String
Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.Pattern = "[^\d]+"
CleanString = .Replace(strIn, vbNullString)
End With
End Function