2012-08-06 119 views
4

问题:我想在Access中声明为类型为Long的VBA函数。我想在某些时候返回一个0到35之间的整数,但我也希望能够返回一个空白或null或类似的东西,大部分时间。有没有办法做到这一点?我所尝试过的(variable =“”或Set variable = Nothing)只是调用一个错误。这将在查询中使用,并将提供一列的值。我希望该列可以输入Long。如果这样的事情是不可能的,我想这就是我所需要知道的,因为我已经有了一个不同的但不太理想的解决方案。谢谢你的帮助。访问VBA - 返回某种空白/ null函数声明为

更新:当然,在提出问题后,我想出了一个很好的解决方案。如果我只是使用Range(“whatever”)。Value = Range(“whatever”).Excel中的值,那么它会将左对齐的20更改为右对齐的20,此时它将被数据透视表识别为数字(虽然当我只是将单元格类型转换为Excel中的数字时,它不会被识别为数据透视表中的数字)。所以,我删除了背景,因为它不是必需的。我仍然有兴趣知道你是否可以返回某种空白或为一个声明为long的函数返回null。谢谢

+0

+1对于一个有趣的问题! – 2012-08-06 16:11:59

+6

返回-1不会对你有帮助吗?它应该在0和35的范围之外。你可以在excel上过滤这些值。 – j0N45 2012-08-06 16:13:27

+0

@ j0N45是的,好点。这是另一种方式。谢谢! – Graphth 2012-08-06 20:48:47

回答

7

Null只能从Variant函数返回。
Nothing只能从Object函数返回。

所有其他人,你只能返回一个定义为函数返回值的类型的变量。
如果不设置的值,则它返回
数字变量被初始化为零
可变长度字符串被初始化为一个零长度的字符串(“”)
一个固定长度字符串是默认值填充ASCII码0.
日期/时间变量初始化为零

+0

谢谢,非常有道理。 – Graphth 2012-08-06 20:48:31

2

由于单位长的值为0,答案是“否”。声明为long的函数不能返回null或空白。如果零不是函数的有效返回值,则可以使用它为“null”等效项,但您已经知道:)