Excel精英培训网

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

[已解决]请问empty和""有区别吗?

[复制链接]
发表于 2008-12-18 09:17 | 显示全部楼层 |阅读模式

比如,判断A1是否为空。

Sub test1()

If [A1] Is Empty Then MsgBox "A1为空"                '***有错误提示****

End Sub

Sub test2()

If [A1] = "" Then MsgBox "A1为空"

End Sub

问题:

  1. ***有错误提示****。为什么会提示“运行时错误424,要求对象”?
  2. (修改正确后的)test1和test2,如题,empty和""有区别吗?

谢谢!

[此贴子已经被作者于2008-12-18 10:36:32编辑过]
最佳答案
2008-12-18 09:43

Empty 关键字是用作 Variant 子类型。它表示未初始化的变量值。

empty,是变量未初化时的值!所以应该用"="来判断!

Sub test1()
If [a1] = Empty Then MsgBox "A1为空"
End Sub

他们的区别在于:

empty variant 类型,当是整型变量,字符串型变量或是Boolean等时,都成立!

但""就不一样,当用于Integer,Boolean,Object等就会出错,一般用于string,比如下面的程序就出错,显示类型不匹配!

Sub test2()
Dim a As Object
    If a = "" Then MsgBox "A1为空"
End Sub        '出错,对象变量或WITH块变量未设置

Sub test2()
Dim a As Byte
    If a = "" Then MsgBox "A1为空"
End Sub     '出错,类型不匹配

    前面你的例子,系统自动把[A1]的值当作字符串类型处理.

[em04]

发表于 2008-12-18 09:32 | 显示全部楼层

If [A1] Is Empty Then MsgBox "A1为空" 

语法错误,应该是IsEmpty([a1])

这两种方法判断单元格的区别,大部分情况都是一样的,如果A1是用公式返回的空字符,如=IF(B1>0,99,""),

isempty([A1])返回false;而[A1]=""返回true。简单来说只要单元格中有任何内容,isempty都返回false

 

其它注意事项请参考3楼皮皮的讲解

[此贴子已经被作者于2008-12-18 9:58:50编辑过]
回复

使用道具 举报

发表于 2008-12-18 09:43 | 显示全部楼层    本楼为最佳答案   

Empty 关键字是用作 Variant 子类型。它表示未初始化的变量值。

empty,是变量未初化时的值!所以应该用"="来判断!

Sub test1()
If [a1] = Empty Then MsgBox "A1为空"
End Sub

他们的区别在于:

empty variant 类型,当是整型变量,字符串型变量或是Boolean等时,都成立!

但""就不一样,当用于Integer,Boolean,Object等就会出错,一般用于string,比如下面的程序就出错,显示类型不匹配!

Sub test2()
Dim a As Object
    If a = "" Then MsgBox "A1为空"
End Sub        '出错,对象变量或WITH块变量未设置

Sub test2()
Dim a As Byte
    If a = "" Then MsgBox "A1为空"
End Sub     '出错,类型不匹配

    前面你的例子,系统自动把[A1]的值当作字符串类型处理.

[em04]

回复

使用道具 举报

发表于 2008-12-18 10:08 | 显示全部楼层

学习了!
回复

使用道具 举报

 楼主| 发表于 2008-12-18 10:27 | 显示全部楼层

首先,谢谢两位的指点。两位都对,我想给两位都评。可当发现皮皮版主最佳答案目前为empty时,就身不由己....99版主,别见怪哈[em04]

原来,我一直把isempty和is empty混为一团,想起哪个写哪个。现在才知道是两样。 对isempty、empty、is、=和"",这5个单独概念,有了不等的认识了。

  • isempty:VBA函数。

  • empty:看了皮皮的、F1的,还是迷糊。我看到F1里这段话:

    Empty

    指出尚未对 Variant 变量指定初始值。用数值表示时,以 0 表示 Empty 变量,在字符串表示时,则以零长度字符串 ("") 表示它。

    那么,empty到底是啥?很晕........有好办法理解吗?

  • IS:去看F1

  • =:去看F1

  • "":也还迷糊,直接在F1里我没查到帮助

该怎样更好理解呢?

谢谢[em27][em27]

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 12:02 , Processed in 0.636784 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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