Объединение строк в 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
работает отлично