我正在维护一款使用Microsoft Access和VBA编写的应用程序。
我在浏览我的代码时注意到自己下意识地使用加号(+)符号而不是“&”符号将字符串连接在一起。自从我上次编写VB6以来已经过了几年了。这会导致任何问题吗?
一切看起来都很好,只需要花费几分钟进行修复,我只是想知道我是否在技术上犯了什么错误。
我正在维护一款使用Microsoft Access和VBA编写的应用程序。
我在浏览我的代码时注意到自己下意识地使用加号(+)符号而不是“&”符号将字符串连接在一起。自从我上次编写VB6以来已经过了几年了。这会导致任何问题吗?
一切看起来都很好,只需要花费几分钟进行修复,我只是想知道我是否在技术上犯了什么错误。
和号(&)是显式的字符串操作符,而加号(+)是重载的操作符:
Dim num1 As Integer
num1 = RandomNumberBetween(1, 9)
Dim num2 As Integer
num2 = RandomNumberBetween(1, 9)
Dim randomAge As String 'trying to get a random age between 11 and 99
' works
randomDate = "Your age is " & num1 & num2
'broken
randomDate = "Your age is " + num1 + num2
当与数字一起使用时,加号会执行加法操作。
以下是一些与VBA立即窗口有关的示例(第三个和第四个之间的区别尤其令人困扰):
Print "5" & 6
56
Print 5 & 6
56
Print "5" + 6
11
Print "5" + "6"
56
Print "Five" & 6
Five6
Print "Five" + 6 'Type mismatch
Print "5" & Null
5
Print "5" + Null
Null
这可能会导致问题。
如果使用加号或和符号连接字符串值,结果是相同的
如果使用加号将字符串与非字符串值连接起来,它会抛出错误
如果使用和符号,VBA将在连接之前尝试将值“字符串化”。
因此,string_value + int_value + date_value
会出错,而string_value & int_value & date_value
正常工作