VBA专题:Val函数

2022-11-16 14:06:32 浏览数 (1)

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

0 人点赞