Объединение строк в VBA

Я поддерживаю приложение, написанное в Microsoft Access с VBA.

Я просматриваю свой код и только что заметил, что подсознательно объединяю строки вместе с символом плюс (+) вместо амперсанда. Прошло несколько лет с тех пор, как я кодировал в VB6. Может ли это вызвать какие-либо проблемы?

все кажется прекрасным, и это займет всего несколько минут, чтобы исправить, мне просто интересно, делаю ли я технически что-то неправильно.

3 ответов


амперсанд явно является Строковой операцией, в то время как плюс перегружен:

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 попытается "stringify" значения перед объединением.

Так string_value + int_value + date_value будет ошибка и string_value & int_value & date_value работает отлично