|
把其中“数字提取 =' Val(sz)”改为“数字提取 = sz ”就行。
Public Function 数字提取(cTxt As String)
Dim sz$, x$ '声明变量
For i = 1 To Len(cTxt) '循环文本中每一个字符
x = Mid(cTxt, i, 1) '取出当前位置的字符
If (x = "%" Or x = "%") And IsNumeric(sz) Then '如果当前字符为%,并且变量sz是数字
sz = sz / 100 '将数字除以100
Exit For '然后跳出循环
ElseIf x = "-" Then '如果当前位置上的字符为“-”
sz = "-" '给变量赋值“-”
ElseIf x = "." Or IsNumeric(x) Then '如果当前字符是“.”或一个数字
sz = sz & x '将这个字符(“.”或数字)连接在变量 sz 的后面
If sz <> "-" And Not IsNumeric(sz) Then sz = "" '如果保存结果不是数字,将其清除
Else '如果当前字符为其它字符
If IsNumeric(sz) Then Exit For '如果变量 sz 是一个数字,则结束循环
sz = "" '如果还没提取出数字,将sz清空,继续循环
End If
Next
'循环结束后
If IsNumeric(sz) Then '如果变量 sz 是一个数字
If Left(sz, 1) = "." Then sz = 0 & sz '如果第一位是小数点,在前面加个0
数字提取 = sz '将结果赋给函数名,输出到单元格中
Else '否则(变量 sz 不是一个数字)
数字提取 = "" '输出一个空文本
End If
End Function |
|