【发布时间】:2022-01-22 02:38:42
【问题描述】:
我正在尝试在 Visual Basic for Excel 2016 中创建 MonthName() 函数的副本(此版本似乎没有它,我无法控制更新它),这是我的代码:
Function GetMonthName(ByVal MonthNum As Integer)
Dim MonthNames(13) As String
MonthNames(0) = Null
MonthNames(1) = "January"
MonthNames(2) = "February"
MonthNames(3) = "March"
MonthNames(4) = "April"
MonthNames(5) = "May"
MonthNames(6) = "June"
MonthNames(7) = "July"
MonthNames(8) = "August"
MonthNames(9) = "September"
MonthNames(10) = "October"
MonthNames(11) = "November"
MonthNames(12) = "December"
GetMonthName = MonthNames(MonthNum)
End Function
我确信有更好的方法可以做到这一点,但我是该语言的新手。无论如何,这是行不通的。尝试将=GetMonthName(11) 作为测试放入功能栏中时出现#VALUE! 错误(它应该返回 11 月)。我想知道我做错了什么。正如我之前所说,我会使用标准库,但我没有那么奢侈。
编辑:将NULL 放在引号中修复了它,但我不明白为什么。我还是把它改成了空字符串,但我还是不明白这与它有什么关系。
【问题讨论】:
-
将
Null更改为""可能也应该在函数定义中使用As String指定返回类型。 -
Null是一个特殊值,表示数据库中的一个空字段。Null与空字符串“”不同。将Null分配给字符串变量会导致类型不匹配运行时错误。如果您在 Excel 工作表中将函数用作 UDF,这将导致#VALUE!