2011-10-12 80 views
8

我正在維護使用VBA編寫的Microsoft Access應用程序。在VBA中連接字符串

我瞥了一眼我的代碼,並且剛剛注意到我已經下意識地將字符串連接在一起,加號(+)符號而不是&符號。距離VB6編碼已經有幾年了。這會導致任何問題嗎?

一切似乎都很好,只需要幾分鐘就能解決,我只是好奇我是否在技術上做錯了什麼。

回答

12

和符號是明確的字符串操作,而加上超載:

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 

當數用加號將增加。

+4

它會變得更加禎,當你加上一個null。 – Fionnuala

+0

好點,用&符號將字符串附加到空值安全地導致一個值就是那個字符串 – tcarvin

0

這可能會導致問題。

如果使用加號或符號來連接字符串值結果相同

如果使用加來連接與非字符串值的字符串。如果您使用的是它會引發錯誤

&符號vba將嘗試在連接之前「串化」值。

所以string_value + int_value + date_value會報錯和string_value & int_value & date_value工作正常

+1

你的例子是(部分)正確的,但是它上面的句子是向後的。如果使用&符號連接非字符串值的字符串,則將非字符串值轉換爲字符串並連接。如果使用plus,則會出現錯誤,除非字符串值是數字,在這種情況下,它將轉換爲數字,並且會添加值。另外,如果使用加號並且其中一個操作數爲空,則結果爲空;這對於amepersand不會發生。 – phoog

+0

謝謝我修復了交換的句子以消除任何混淆。 – Eddy

4

一些例子,從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