试图解决 VBA 中的“无效使用 Null”
Posted
技术标签:
【中文标题】试图解决 VBA 中的“无效使用 Null”【英文标题】:Trying to resolve an "invalid use of Null" in VBA 【发布时间】:2011-04-12 05:22:12 【问题描述】:先快速sn-p:
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 分配给一堆其他字符串,没有任何错误。
【问题讨论】:
patientNumber 是您定义为字符串的唯一变量。您必须为 each 变量指定类型:您不能像在代码中那样定义逗号分隔的变量列表。 【参考方案1】:在 VBA/VB6 中,字符串不能设置为 Null;只有 Variants 可以设置为 null。此外,当您在问题中声明以逗号分隔的内联变量时,只有最后一个将被键入为字符串;所有其他人都被键入为变体。要在一行中将它们声明为类型,您必须包含类型
Dim a As String, Dim b As String ...
这就是为什么只在一行上声明它们是有意义的。
(顺便说一句,应该注意deceased, resolved
也出于同样的原因被输入为变体。)
【讨论】:
【参考方案2】:givenNames
等成功的原因是你无意中将它们定义为 Variant 类型。 patientNumber
失败,因为您已成功将其定义为 String
,并且字符串不接受 Null 值。
在Dim
语句中,As <type>
子句适用于列表中的每个单独变量,因此通过仅将其放在列表末尾,您将显式类型仅应用于最后列出的变量。 Variant
的隐式类型应用于其他类型。
【讨论】:
@HorusKol - np - 很高兴我们能提供帮助。【参考方案3】:当我在不知道 Variant
的隐式类型的情况下遇到该问题时,我能够使用在 Dim
语句列表末尾定义一个额外变量(例如 BogusVariable
)的变通方法。
【讨论】:
【参考方案4】:在 VBA 字符串中使用 vbNullString
值作为 Null
【讨论】:
以上是关于试图解决 VBA 中的“无效使用 Null”的主要内容,如果未能解决你的问题,请参考以下文章
解决 Excel VBA 文本文件导出中的运行时 91 错误