8
votes

Essayer de résoudre une "utilisation invalide de NULL" dans VBA

Snippet rapide Premier:

Dim GUID As String
Dim givenNames, familyName, preferredName, gender, comments, carer, medicareNumber, patientNumber As String
Dim dob As Variant
Dim deceased, resolved, consultNotes As Boolean
Dim age As Variant

givenNames = Null
familyName = Null
preferredName = Null
gender = Null
dob = Null
comments = Null
deceased = False
resolved = False
carer = Null
age = Null
consultNotes = False
patientNumber = Null ' This is where I get the error


1 commentaires

PatationNumber est la seule variable que vous avez définie comme une chaîne. Vous devez spécifier le type de chaque variable : Vous ne pouvez pas définir une liste de variables séparées par des virgules comme si vous avez dans votre code.


4 Réponses :


16
votes

dans VBA / VB6, les chaînes ne peuvent pas être réglées sur NULL; Seules les variantes peuvent être réglées sur NULL. En outre, lorsque vous déclarez des variables en ligne, séparées par des virgules comme dans la question, seul le dernier sera saisi en tant que chaîne; Tous les autres sont typés comme des variantes. Pour les déclarer sur une ligne sous forme de type, vous devez inclure le type

Dim a As String, Dim b As String ...


0 commentaires

8
votes

La raison pour laquelle il réussit à Names , etc. est que vous les avez involontalement définis comme type variant. Il échoue à une patient , car vous avez défini avec succès qu'en tant que chaîne et les chaînes n'acceptent pas les valeurs null.

dans un DIM instruction, la clause comme est applicable à chaque variable individuelle de la liste, alors en le mettant uniquement à la fin de la liste, vous appliqué le type explicite uniquement à la variable répertoriée. Le type implicite de variante est appliqué aux autres.


1 commentaires

@Horuskol - NP - Heureux que nous puissions aider.



1
votes

Quand j'ai rencontré ce problème sans connaître le type implicite de variante , j'ai pu utiliser le travail autour de la définition d'une variable supplémentaire telle que bogusvariable au fin de la liste d'instructions Dim DIM .


0 commentaires

0
votes

dans VBA Strings utilise VBNullString Valeur pour null


1 commentaires

Cela ne fournit pas de réponse à la question. Une fois que vous avez suffisamment réputation , vous pourrez Commentaire sur n'importe quel message ; à la place, Fournir des réponses Cela n'exige pas de clarification de l'Asker . - de l'avis