请教VBA判断变量对象是否存在

Set 变量 = [A1]
If Not 变量 Is Nothing Then
MsgBox "存在"
End If
请问我这么写不对吗?要怎么样才能判断变量对象是否存在

第1个回答  2014-07-31
对象变量在使用Set语句赋值钱属于未初始化的变量,此时虽然也已经分配内存空间,但它还属于Nothing,表示没有内容
你的写法光看现在的代码是正确的。追问

但是如果直接这样判断会出错,我刚刚在判断之前加了Set 变量 = Nothing先释放对象后再判断这样才不会出错,你觉得这样子如何

追答

你的“变量"是Nothing吗?
用TypeName函数先测试下
变量为没有赋值之前属于Nothing

追问

对了,其实我没有说清楚。
我的程序是没有先Set 变量 = [A1],因为我需要做判断才决定是否给这个变量赋值
而是直接判断,这样子才会出错,就是变量没有赋值的情况下判断变量是否存在
If Not 变量 Is Nothing Then
MsgBox "存在"
End If
至于TypeName函数这个我还没用过,不清楚什么意思

追答

建议上传个模拟表,说明要求

追问

其实总的来说就是只声明变量,而不赋值,这样的情况是否能判断变量

追答

对象变量在使用Set语句赋值钱属于未初始化的变量,此时虽然也已经分配内存空间,但它还属于Nothing,表示没有内容

'可测试下面的语句
Sub test()
Dim rng As Range
MsgBox TypeName(rng)
Set rng = [A1]
MsgBox TypeName(rng)
End Sub

追问

不错就是这个如果不声明直TypeName(rng)的话获得empty,也就是指没有变量吧,要的就是这效果,谢谢你了。

本回答被提问者采纳
第2个回答  2014-07-31
Set 变量 = [A1]
    If   变量.value <> "" Then
        MsgBox "存在"
    End If

追问

其实[A1]这个对象的值一直是空的,[A1]我是用来做偏移用的

追答

看来您得把全部的模块过程发过来,否则不知道您要干什么。对象肯定是存在的,因为[a1]作为单元格肯定是有行坐标和列坐标。所以肯定不会是nothing。你要判断的应该是[A1]单元格内有无值。

追问

不好意思,是我错了。
我的程序是没有先Set 变量 = [A1],因为我需要做判断才决定是否给这个变量赋值
而是直接判断,这样子才会出错,也就是变量没有赋值的情况下判断变量是否才在,这样理解才对
If Not 变量 Is Nothing Then
MsgBox "存在"
End If

追答

好吧,虽然不理解你要干什么。

追问

那变量没有赋值的情况下能不能判断是否存在
现在我是在判断前先set 变量=Nothing,然后再进行判断,可以解决出错问题,但是我还是想知道如果没有赋值的情况也没有set 变量=Nothing的情况下,可以直接判断变量是否存在吗

追答

亲,变量都没有赋值那这个变量会有值么?变量肯定是存在的,因为你定义了变量那就肯定有啦。

追问

那就是只能这样子解决了吗

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网