MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
7 janv. 2009 à 22:11
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
8 janv. 2009 à 13:44
Bonjour à tous,
Pour des raisons de rigueur, je voulais utiliser vbEmpty comme retour d'une fonction qui échoue.
Seulement, IsEmpty(vbEmpty) renvoi False, c'est quoi ce charabia ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 7 janv. 2009 à 22:27
vbEmpty est utilisé avec la fonction VarType et plus exactement comme valeur de retour.
vbEmpty est une constante de type Integer, égale à 0. Elle signifie que la variable testée, et en l'occurrence une variable de type Variant, est de type Empty. Cela signifie pour une variable de Variant que la valeur est égale à 0 dans un contexte numérique ou à une chaine de longueur nulle dans un contexte textuel.
IsEmpty(vbEmpty) = False car vbEmpty n'est pas vide, elle est bien définie, de type integer, et égale à 0
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 8 janv. 2009 à 00:56
salut,
voici un exemple de fiasco observable....
Option Explicit
Dim
iTest
As Integer
Dim
sTest
As String
Private Sub
Form_Load()
Dim u As Integer
MsgBox IsEmpty(fYes) '<- NON
MsgBox IsEmpty(fNo) '<- NON
MsgBox IsEmpty(sTest) '<- NON
MsgBox IsEmpty(iTest) '<- NON
MsgBox IsEmpty(u) '<- NON
MsgBox IsNull(fYes) '<- NON
MsgBox IsNull(fNo) '<- NON
MsgBox IsEmpty(sTest) '<- NON
MsgBox IsEmpty(iTest) '<- NON
MsgBox IsNull(u) '<- NON
pourquoi?
une partie est expliqué par casy
d'autres subtilités existent, à l'instant je n'arrive pas à les reproduire, mais je garde (au final) de mauvais souvenirs de ces 2 fonctions soit disant utiles
déclare U en variant, les résultats ne sont pas les mêmes...
à part IS NOTHING( qui ne colle pas ici), mieux vaut rester méfiant
une possibilité (à toi de voir...) serait de passer par une classe, avec sa fonction perso :
Option Explicit
'
Private
mValue
As Variant
Dim
bEmpty
As Boolean
Public Property Get
Value()
As Variant
Value = mValue
End Property
Public Property Let Value(ByVal nValue As Variant)
mValue = nValue
bEmpty = False
End Property
Private Sub Class_Initialize()
bEmpty = True
End Sub
Public Function IsEmpty() As Boolean
IsEmpty = bEmpty
End Function
Option Explicit
'
Private Sub
Form_Load()
Dim x As New Class1
MsgBox x.IsEmpty '<-
OUI
x = 30
MsgBox x.IsEmpty '<-
NON