Comment savoir si une variable objet a été associée ?

Résolu
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 27 mars 2009 à 11:59
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 27 mars 2009 à 21:18
Coucou,

ça fait assez longtemps que je cherche une solution pour ce problème.
Que j'associe l'objet ou non, les IsNull, IsObject, IsMissing... ne me renseigne pas correctement
sur l'état de l'objet. C'est égale a Empty ou Nothing mais impossible de faire une comparaison !
Genre: Si MonObjetForm est égale à Nothing alors... Sinon...
Voici un bout de code

Dim oForm as Form

  'Je l'associe pas: Set oForm = frmMain
 'Je souhaite récupérer le nothing

        If IsEmpty(oForm) = False Then
            MsgBox "Un parametre obligatoire est absent !", vbCritical + vbOKOnly, "Erreur"
            Exit Sub
        Else
            Msgbox "Objet ok: " & oForm.Hwnd
        End If

5 réponses

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
27 mars 2009 à 20:02
Salut
Peut-être cela:

If Not tzTest.oForm Is Nothing Then
     ici on continue le code
Else
    ici on sort
End If

CNTJC
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 mars 2009 à 16:18
Salut
En effet, ce n'est pas toujours facile.
En fait, il te suffit de regarder dans la collection parent "Forms" :
   Dim bTrouvé As Boolean
   Dim xx As Object
   For Each xx In Forms
      If xx.Name = "frmMain" Then
         bTrouvé = True
         Exit For
      End If
   Next
   If bTrouvé Then MsgBox "Twingo !"

Je n'ai pas trop compris le lien que tu fais entre cette forme et un paramètre ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
27 mars 2009 à 17:24
Je suis pas assez clair... désolé.
Je ne connait pas le nom de la form, j'en ai d'ailleur pas besoin.

Je explique avec un code de la situation:
(je peux pas mettre mon code sa va être confus et trop grand a lire)

'BOUTON
Dim myTest as typTest

    Set myTest = frmConfig
    Call MaFonction(myTest)

-------------------------------------

'MODULE
Public Type typTest
    oForm as Form
End Type

Public Sub MaFonction(ByRef tzTest As typTest)
    If tzTest.oForm = Nothing then
        Msgbox "Erreur Objet !"
        exit sub
    End If

    'On a notre pointeur sur cette feuille inconnue
    'Donc je peux par exemple...
    With tzTest.oForm
        .Background = vbBlack
        .Caption = "Coucou"
        FonctionApi1(.Hwnd)
        FonctionApi2(.Hdc)
    End With
End sub
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
27 mars 2009 à 17:26
Correction:

Set myTest.oForm = frmConfig
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
27 mars 2009 à 21:18
Excellent !!!

Merci CNT.
0
Rejoignez-nous