Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8038|回复: 8

[已解决]vba.isnumeric()

[复制链接]
发表于 2013-1-6 09:54 | 显示全部楼层 |阅读模式
   Sub s2()
    Debug.Print VBA.IsNumeric(Range("a1"))
    Debug.Print Application.WorksheetFunction.IsNumber(Range("A1"))
   End Sub

a1是空的什么都没放,但是第一句的结果为true 这是为什么?
最佳答案
2013-1-7 09:55
但这里,如果你的A1里是字符串的时候,肯定就会FALSE了。如果用VAL来的话,还是会返回0.
有个VARTYPE函数也不错的,能判断数据的类型。



发表于 2013-1-6 09:57 | 显示全部楼层
回复

使用道具 举报

发表于 2013-1-6 09:59 | 显示全部楼层
返回 Boolean 值,指出表达式的运算结果是否为数。

语法

IsNumeric(expression)

必要的 expression 参数是一个 Variant,包含数值表达式或字符串表达式。

说明

如果整个 expression 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False。

回复

使用道具 举报

 楼主| 发表于 2013-1-6 21:48 | 显示全部楼层
hwc2ycy 发表于 2013-1-6 09:59
返回 Boolean 值,指出表达式的运算结果是否为数。

语法

但是在空值的情况下,为什么这两句的结果不一样呢?都是判断是否为数字类型。第一句为true;第二句为false
Debug.Print VBA.IsNumeric(Range("a1"))
Debug.Print Application.WorksheetFunction.IsNumber(Range("A1"))
请老师指点
回复

使用道具 举报

发表于 2013-1-6 23:08 | 显示全部楼层
adan_bai 发表于 2013-1-6 21:48
但是在空值的情况下,为什么这两句的结果不一样呢?都是判断是否为数字类型。第一句为true;第二句为fal ...

后面的是工作表函数。
假设A1是空白,你在B1里输入公式=A1,显示的是0吧。
回复

使用道具 举报

 楼主| 发表于 2013-1-7 09:29 | 显示全部楼层
hwc2ycy 发表于 2013-1-6 23:08
后面的是工作表函数。
假设A1是空白,你在B1里输入公式=A1,显示的是0吧。

按照您的说法,工作表函数application.的结果才应该是true啊 对吧?结果不是这样的啊
回复

使用道具 举报

发表于 2013-1-7 09:45 | 显示全部楼层
adan_bai 发表于 2013-1-7 09:29
按照您的说法,工作表函数application.的结果才应该是true啊 对吧?结果不是这样的啊

搞糊了,也搞错了。
直接引用空单元格的话,工作表函数ISNUMBER返回是FALSE,
如果间接引用空单元格的话,工作表函数ISNUMBER返回的是TRUE,就像我上面所说的。

在VBA里,你可以这样测
dim a
a=range("A1")
stop
运行后,你会发现a是empty

然后再用debug.print vba.isnumeric(a)会发现结果为TRUE
我想这里应该是内部在判断时做了转化,就像定义变量时定义了类型一样,初始化后为0。
用val(a)后,值也是0,所以再进行判断时,就返回TRUE。
回复

使用道具 举报

发表于 2013-1-7 09:55 | 显示全部楼层    本楼为最佳答案   
但这里,如果你的A1里是字符串的时候,肯定就会FALSE了。如果用VAL来的话,还是会返回0.
有个VARTYPE函数也不错的,能判断数据的类型。



回复

使用道具 举报

 楼主| 发表于 2013-1-7 14:23 | 显示全部楼层
hwc2ycy 发表于 2013-1-7 09:55
但这里,如果你的A1里是字符串的时候,肯定就会FALSE了。如果用VAL来的话,还是会返回0.
有个VARTYPE函数也 ...

嗯 虽然我这个疑问还是没有解决,但是还是由衷感谢老师的细心解答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 17:51 , Processed in 0.307433 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表