试图在VBA中解决“无效使用Null”

时间:2011-04-12 05:22:12

标签: vba access-vba

首先是快速代码段:

Dim GUID As String
Dim givenNames, familyName, preferredName, gender, comments, carer, medicareNumber, patientNumber As String
Dim dob As Variant
Dim deceased, resolved, consultNotes As Boolean
Dim age As Variant

givenNames = Null
familyName = Null
preferredName = Null
gender = Null
dob = Null
comments = Null
deceased = False
resolved = False
carer = Null
age = Null
consultNotes = False
patientNumber = Null ' This is where I get the error

知道为什么这个最后一个变量会绊倒吗?我已经将Null分配给了许多其他字符串而没有任何错误。

4 个答案:

答案 0 :(得分:12)

在VBA / VB6中,字符串不能设置为Null;只有Variants可以设置为null。另外,当您在问题中声明内联逗号分隔的变量时,只会将最后一个键入为字符串;所有其他人都被打字为变种。要将它们作为一种类型声明在一行上,您必须包含类型

Dim a As String, Dim b As String ...

这就是为什么只在一条线上声明它们是有意义的。

(顺便说一下,应该注意deceased, resolved也因为同样的原因而被输入为变体。)

答案 1 :(得分:7)

givenNames等成功的原因是您无意中将它们定义为Variant类型。 patientNumber失败,因为您已成功将其定义为String,并且字符串不接受空值。

Dim语句中,As <type>子句适用于列表中的每个单独变量,因此只将它放在列表的末尾,您只将显式类型应用于最后一个 - 列出的变量。 Variant的隐式类型适用于其他类型。

答案 2 :(得分:1)

当我在不知道Variant的隐式类型的情况下遇到该问题时,我能够使用在{{1}末尾定义额外变量(例如BogusVariable)的工作。语句列表。

答案 3 :(得分:0)

VBA字符串中的

使用vbNullString的{​​{1}}值