我正在維護使用VBA編寫的Microsoft Access應用程序。在VBA中連接字符串
我瞥了一眼我的代碼,並且剛剛注意到我已經下意識地將字符串連接在一起,加號(+)符號而不是&符號。距離VB6編碼已經有幾年了。這會導致任何問題嗎?
一切似乎都很好,只需要幾分鐘就能解決,我只是好奇我是否在技術上做錯了什麼。
我正在維護使用VBA編寫的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將嘗試在連接之前「串化」值。
所以string_value + int_value + date_value
會報錯和string_value & int_value & date_value
工作正常
一些例子,從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
它會變得更加禎,當你加上一個null。 – Fionnuala
好點,用&符號將字符串附加到空值安全地導致一個值就是那個字符串 – tcarvin