EXCEL的各种“空”的区别:blank,““ , 0 ,以及 VBA里的各种空值:empty,null,nothing 等

您所在的位置:网站首页 blanks的意思是什么 EXCEL的各种“空”的区别:blank,““ , 0 ,以及 VBA里的各种空值:empty,null,nothing 等

EXCEL的各种“空”的区别:blank,““ , 0 ,以及 VBA里的各种空值:empty,null,nothing 等

2024-01-25 20:04| 来源: 网络整理| 查看: 265

1 EXCEL里的几种空值:blank,“” , 0 1.1 EXCEL里,一般有两种空值:blank,“” 1.1.1 空值blank 空值:blank ,一般指完全没有内容 / 没有用过 /没有初始化过/ 被删除单元格内容后的状态判断函数,isblank() 1.1.2 excel里的特殊假空值 “” (本质是空字符串吧) 假空值:“” , EXCEL里常用的空值,空值判断,常这么用,但是其实不太精确,一般意义上,我觉得可以认为是 “""只是代表 一个空字符串而已”判断函数套用if: if(a1=“”,true,false)即可判断 1.1.3 excel里的函数返回值0,部分情况下 0,我觉得不能被当成空值这个0,可能是用户输入的数字0,但这里说的不是这个0 和空值没啥关系,权且最多被当成一种函数的特殊返回值吧为什么说到EXCEL空值的时候,说到0呢?因为很多EXCEL内置函数的返回值也会返回0,比如 “= 等号” ,当 =引用到一个空单元格时会返回0,函数直接引用或间接引用空单元格的值,返回的是0EXCEL里引用空单元格,如果经过函数的引用了,返回的就不会是空值了,而是0

比如EXCEL的直接引用 = ,会自动返回0 间接引用 =indirect() 引用的空单元格,会自动返回0

1.2 EXCEL里,那些情况会被识别为 blank? blank() 识别为true的情况,比 识别"" 更严格其实EXCEL用户平时很少用到 blank 这种空值!一般都是所见即所得,判断 if=""了!EXCEL的真正空值是 blank只能用=isblank() 来判断

> 只有下面2种情况EXCEL里 isblank() 返回为true

1 单元格确实没内容 ,用isblank()判断为true 2 EXCEL的内置函数一般不能返回空值,但是用函数缺省的办法,可以返回 blank 比如 isblank(if(1=1,)) ,用isblank()判断为true

1.3 EXCEL里,那些情况会被识别为 “” ? 我认为 “” 就是EXCEL 里使用比较频繁的一种空值, 大家叫习惯了使用EXCEL时,大多数情况下只需要判断 if(A1=“”,true,false) 即够用了实际就是空 字符串"" ,并不是真的空值,是一种假的空,是有东西的(东西就是空字符串"")只是EXCEL 默认单元格里的 “” 显示上看不见,即EXCEL用户理所当然的认为是 空的

单元格没有内容,EXCEL用户一般用 if=“” 来判断, 一般来说可以被识别是blank的都可以识别为"",反之则不行

1.4 EXCEL内置函数对空值的处理能力 函数无法返回真正的blank函数可以写成返回值是""函数直接引用或间接引用空单元格的值,返回的是0 1.5 EXCEL里测试 blank , “” 和 0

2 VBA的 “空值” 2.1 VBA里几种不同的空值

VBA里所谓的 “空值” 是指 变量为空,而这和变量类型密切相关

数据类型 1 数值型的变量 默认 0 2 字符串 string 默认"" 就是空。 3 Variant类型变量 默认用 null 但其他类型变量不能这样用。 4 object 类 默认 nothing,对象类型记得用set XXX= 这样赋值,而不是let 或者省略!比如 image1.picture = nothing

2.2 判断各种空值的VBA函数

VBA函数

IsEmpty(expression) 测试变量是否已经被初始化 如果一个变量没有被初始化,dim a ,那么判断一般是isempty(a)=true 但是如果设置了a=null,而判断isempty(a)=false

IsNull(expression) Null 值指出变量不包含有效数据。 指明 expression 是否包含任何有效数据(Null)。 测试可发现 变量=“” 是len=0的空字符串,也不是null

if len() =0 也可以判断,内容长度为0 类 空 “” 等很多都可以这样判断 这种并不是真的空,只是一种快捷的判断

测试代码1

Sub ttff1() Dim a Debug.Print "Dim a" Debug.Print "IsEmpty(a)=" & IsEmpty(a) Debug.Print "IsNull(a)=" & IsNull(a) 'Debug.Print Isblank(a) 'isblank()是EXCEL的函数,VBA里没有 Debug.Print "" a = Null Debug.Print "a=null" Debug.Print "IsEmpty(a)=" & IsEmpty(a) Debug.Print "IsNull(a)=" & IsNull(a) Debug.Print "" a = "" Debug.Print "a=""""" Debug.Print "IsEmpty(a)=" & IsEmpty(a) Debug.Print "IsNull(a)=" & IsNull(a) Debug.Print "" a = 1 Debug.Print "a=1" Debug.Print "IsEmpty(a)=" & IsEmpty(a) Debug.Print "IsNull(a)=" & IsNull(a) Debug.Print "" End Sub

在这里插入图片描述

测试代码2

Sub t1t1() Dim a As Integer Dim strb As String Dim wb As Object Dim x As Variant '或 dim x 默认就是variant类型的变量 a = 100 b = "abc" Set wb = ThisWorkbook x = Array(1, 2, 3) Debug.Print a Debug.Print b Debug.Print wb.Name Debug.Print x(0) Debug.Print Debug.Print "-------按变量类型给置空后--------" a = 0 b = "" Set wb = Nothing x = Null Debug.Print a Debug.Print b 'Debug.Print wb '对象置空后好像不能这样debug.print Debug.Print x 'a = Null '非variant变量,不能置为null 'Debug.Print a End Sub

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3