2017-08-24 1 views
0

Je tente d'initialiser une variable statique à 1 lorsque la fonction est appelée pour la première fois. Comment le faire correctement? C'est une erreur d'incompatibilité de type.VBA Comment vérifier la variable si elle est définie?

Static clip_success As Integer 
If clip_success Is Nothing Then 
    clip_success = 1 
End If 
+4

Dès que vous définissez 'clip_success' aura une valeur de '0'. – YowE3K

+3

'Si clip_success = 0 Then' –

+0

OK, merci de répondre. – user1141649

Répondre

4

Tout type de valeur primitive sera initialisé avec sa valeur par défaut. Pour les types numériques, cette valeur est 0; pour les chaînes, c'est "" (une chaîne vide); pour les dates, c'est 1899-12-30. Un Boolean est initialisé à False.

Votre variable statique ressemble beaucoup à un drapeau - devrait probablement être un Boolean.

Un Variant est initialisé avec la valeur spéciale Empty.

Toute référence d'objet est initialisée avec Nothing/une référence null.


Alors:

Static clip_success As Long 
If clip_success = 0 Then 
    clip_success = 1 
End If 

Ou

Static clip_success As Date 
If clip_success = CDate(0) Then 
    clip_success = DateTime.Now 
End If 

Ou

Static clip_success As String 
If clip_success = vbNullString Then 
    clip_success = "success!" 
End If 

Ou

Static clip_success As Variant 
If IsEmpty(clip_success) Then 
    clip_success = 1 
End If 

Ou

Static clip_success As Object 
If clip_success Is Nothing Then 
    Set clip_success = New [some class] 
End If