Recherche…


Remarques

L'attribution de littéraux de chaîne dans VBA est limitée par les limitations de l'EDI et la page de codes des paramètres de langue de l'utilisateur actuel. Les exemples ci-dessus illustrent les cas particuliers de chaînes d'échappement, de chaînes spéciales non imprimables et de chaînes longues.

Lors de l'attribution de chaînes littérales contenant des caractères spécifiques à une page de codes, vous devrez peut-être prendre en compte les problèmes d'internationalisation en attribuant une chaîne à partir d'un fichier de ressources Unicode distinct.

Fuyant le "personnage"

La syntaxe VBA exige qu'un littéral de chaîne apparaisse dans " marks, donc lorsque votre chaîne doit contenir des guillemets, vous devez échapper / ajouter le caractère " avec un " supplémentaire pour que VBA comprenne que vous souhaitez que le "" soit interprété comme une " chaîne " .

'The following 2 lines produce the same output
Debug.Print "The man said, ""Never use air-quotes"""
Debug.Print "The man said, " & """" & "Never use air-quotes" & """"

'Output:
'The man said, "Never use air-quotes"
'The man said, "Never use air-quotes"

Affectation de littéraux de chaîne longue

L'éditeur VBA n'autorise que 1023 caractères par ligne, mais seuls les 100-150 premiers caractères sont visibles sans défilement. Si vous devez attribuer des chaînes de caractères longues, mais que vous souhaitez garder votre code lisible, vous devrez utiliser des lignes continues et une concaténation pour attribuer votre chaîne.

Debug.Print "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
            "Integer hendrerit maximus arcu, ut elementum odio varius " & _
            "nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
            "um ut tellus."
'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.

VBA vous permettra d'utiliser un nombre limité de lignes continues (le nombre réel varie selon la longueur de chaque ligne dans le bloc continu). Par conséquent, si vous avez de très longues chaînes, vous devrez attribuer et réattribuer avec une concaténation. .

Dim loremIpsum As String

'Assign the first part of the string
loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
              "Integer hendrerit maximus arcu, ut elementum odio varius "
'Re-assign with the previous value AND the next section of the string
loremIpsum = loremIpsum & _
            "nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
            "um ut tellus."

Debug.Print loremIpsum

'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.

Utilisation de constantes de chaîne VBA

VBA définit un nombre de constantes de chaîne pour les caractères spéciaux tels que:

  • vbCr: Carriage-Return 'Identique à "\ r" dans les langages de style C.
  • vbLf: saut de ligne 'Identique à "\ n" dans les langages de style C.
  • vbCrLf: retour chariot et saut de ligne (une nouvelle ligne sous Windows)
  • vbTab: Caractère de tabulation
  • vbNullString: une chaîne vide, comme ""

Vous pouvez utiliser ces constantes avec une concaténation et d'autres fonctions de chaîne pour créer des chaînes de caractères avec des caractères spéciaux.

Debug.Print "Hello " & vbCrLf & "World"
'Output:
'Hello
'World

Debug.Print vbTab & "Hello" & vbTab & "World"
'Output:
'    Hello    World

Dim EmptyString As String
EmptyString = vbNullString
Debug.Print EmptyString = ""
'Output:
'True

Utiliser vbNullString est considéré comme une meilleure pratique que la valeur équivalente de "" raison des différences dans la façon dont le code est compilé. Les chaînes sont accessibles via un pointeur vers une zone de mémoire allouée et le compilateur VBA est suffisamment intelligent pour utiliser un pointeur nul pour représenter vbNullString . Le littéral "" se voit attribuer de la mémoire comme s’il s’agissait d’une variante de type String, rendant l’utilisation de la constante beaucoup plus efficace:

Debug.Print StrPtr(vbNullString)    'Prints 0.
Debug.Print StrPtr("")              'Prints a memory address.


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow