Val函数返回作为参数传递的字符串中的前导数字,它在无法识别为数字部分的第一个字符处停止读取字符串,但它不会在空格处停止。
Val函数的语法为:
Val(String)
示例
代码:
Val("1234Excel")
返回:1234
代码:
Val("1234.5Excel")
返回:1234.5
代码:
Val("1234.56Excel")
返回:1234.56
代码:
Val("1234 23 34")
返回:12342334
代码:
Val("12323 .5 6")
返回:12323.56
Val函数经常被用于提取文本字符串开头的数字,但要注意下面几点:
1.Val函数不会将逗号识别为分隔符,例如下面的语句:
Val("1,234.56")
返回1,而不是1234.56。
当然,如果你认为文本字符串中可能有逗号,只需在应用Val函数之前使用Replace函数移除它们:
Val(Replace("1,234.56", ",",""))
2.Val函数将点识别为小数点,因此如果语言环境使用逗号作为小数点,则在应用Val函数之前,必须用点替换逗号。
3.Val函数将E、e、D和d识别为“10的幂”分隔符,这意味着,如果文本字符串以一个数字和其中一个字母开头,然后是更多的数字,则这些“更多的数字”将被假定为10的幂。以下所有语句将返回12000,而不是12。
Val("12E3abc")
Val("12e3abc")
Val("12D3abc")
Val("12d3abc")
4.如果前导字符本身是一个符号&,或者是符号&后跟o、O、h或H,那么Val函数可能不会返回0,而是具体取决于后面的内容。一个符号&本身,&o或&O,VBA查看后面的数字是否小于8。在0到7之间的一系列数字之前的每一个数字告诉VBA将组合视为八进制数。因此,下面的每一个都返回83,因为这是与“八进制123”等值的十进制数。
Val("&123")
Val("&o123")
Val("&O123")
同样,在数字0到9之前的&h或&h,字母a到f或字母A到F将被解释为十六进制数,Val将为它们生成等价的十进制数。例如,下面的代码返回291,因为它是“十六进制 123”等值的十进制数。
Val("&H123")
下面的代码:
Val("&Head")
返回:3757
与普通数字和非数字一样,Val函数将读取八进制和十六进制数字(这取决于符号和前缀),直到到达第一个非八进制和非十六进制数字(同样,取决于符号和前缀)。因此,以下代码返回的可能不是预期的结果。
Val("&123823432543534434534")
Val("&o123823432543534434534")
Val("&O123823432543534434534")
返回:83
Val("&HeadMan")
Val("&headman")
返回:3757