web-dev-qa-db-fra.com

Comment exprimer "si la valeur n'est pas vide" dans le langage VBA?

Comment exprimer la condition "si la valeur n'est pas vide" dans le langage VBA? Est-ce quelque chose comme ça?

"if value is not empty then..."
Edit/Delete Message
55
excel34

Utilisez Not IsEmpty().

Par exemple:

Sub DoStuffIfNotEmpty()
    If Not IsEmpty(ActiveCell.Value) Then
        MsgBox "I'm not empty!"
    End If
End Sub
76
Jon Crowell

Cela dépend de ce que vous voulez tester:

  • pour une chaîne, vous pouvez utiliser If strName = vbNullString ou IF strName = "" ou Len(strName) = 0 (le dernier étant censé être plus rapide)
  • pour un objet, vous pouvez utiliser If myObject is Nothing
  • pour un champ de jeu d'enregistrements, vous pouvez utiliser If isnull(rs!myField)
  • pour une cellule Excel, vous pouvez utiliser If range("B3") = "" ou IsEmpty(myRange)

Etc ... Discussion approfondie disponible ici (pour Access, mais la plupart fonctionne également pour Excel).

28
Patrick Honorez

Essaye ça:

If Len(vValue & vbNullString) > 0 Then
  ' we have a non-Null and non-empty String value
  doSomething()
Else
  ' We have a Null or empty string value
  doSomethingElse()
End If
6
alexphi

Pourquoi ne pas simplement utiliser la fonction intégrée Format ()?

Dim vTest As Variant
vTest = Empty ' or vTest = null or vTest = ""

If Format(vTest) = vbNullString Then
    doSomethingWhenEmpty() 
Else
   doSomethingElse() 
End If

Format () attirera les variantes vides et nulles et les transformera en chaînes. Je l'utilise pour des choses comme les validations nulles/vides et pour vérifier si un élément a été sélectionné dans une liste déroulante.

5
Marcand

Je ne sais pas si c'est ce que vous cherchez

if var<>"" then
           dosomething

ou

if isempty(thisworkbook.sheets("sheet1").range("a1").value)= false then

la fonction ISEMPTY peut également être utilisée

3
Anthony

La suggestion d'Alexphi est bonne. Vous pouvez également coder ceci en créant d'abord une variable sous la forme Variant, puis en l'attribuant à Empty. Ensuite, faites un if/then avec pour éventuellement le remplir. S'il est rempli, ce n'est pas vide, sinon, il reste vide. Vous vérifiez cela alors avec IsEmpty.

Sub TestforEmpty()

    Dim dt As Variant
    dt = Empty

    Dim today As Date
    today = Date
    If today = Date Then
        dt = today
    End If

    If IsEmpty(dt) Then
        MsgBox "It not is today"
    Else
        MsgBox "It is today"
    End If

End Sub
0
Todd Main