首先是快速代码段:
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分配给了许多其他字符串而没有任何错误。
答案 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)
使用vbNullString
的{{1}}值