Concatenating strings in VBA

前端 未结 3 697
心在旅途
心在旅途 2021-01-17 18:29

I\'m maintaining an application written in Microsoft Access with VBA.

I\'m glancing over my code and have just noticed I have subconsciously been concatenating strin

相关标签:
3条回答
  • 2021-01-17 19:00

    This can cause issues.

    If you use the plus or ampersand to concatenate string values the results are identical

    If you use a plus to concatenate a string with a non string value it will throw an error

    If you use an ampersand sign vba will try to 'stringify' the values before concatenating.

    So string_value + int_value + date_value will error and string_value & int_value & date_value works fine

    0 讨论(0)
  • 2021-01-17 19:01

    Some examples, from the VBA immediate window (the difference between the third and fourth is particularly vexing):

    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
    
    0 讨论(0)
  • 2021-01-17 19:02

    The ampersand is explicitly a string operation, while the plus is overloaded:

    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 
    

    When used with numbers the plus sign will add.

    0 讨论(0)
提交回复
热议问题