2016-10-14 3 views
0

J'ai lu toute l'aide indiquée et je ne parviens pas à résoudre mon problème.Erreur d'exécution '91' - Variable d'objet ou variable de bloc non définie lors de la référence d'une case à cocher

Je crée un formulaire dans Outlook 2013, et j'aimerais que certains de ces champs soient visibles lorsque certaines conditions sont remplies - j'ai essayé d'écrire du code VBA pour cela ... mais j'obtiens l'erreur.

Ceci est mon code;

Sub AltSMSNumber() 

Dim CheckBox2 As CheckBox 
Dim TextBox2 As TextBox 
Dim Label2 As Label 

Set CheckBox2 = CheckBox2 
Set TextBox2 = TextBox2 
Set Label2 = Label2 

If CheckBox2.Value = False Then 

    Set TextBox2.Visible = True 
    Set Label2.Visible = True 

Else 

    Set TextBox2.Visible = False 
    Set Label2.Visible = False 


End If 

End Sub 

J'ai décochez la case sur le formulaire pour être vrai par défaut, et ne veulent TextBox2 et Label2 être visible lorsque la case est décochée (false).

J'ai examiné tous les noms - et ils sont tous clairement nommés comme je l'ai noté dans le code.

Il se brise à; Si CheckBox2.Value = False Puis Me dire que l'objet n'est pas défini. Est-ce que quelqu'un peut signaler mon erreur??

Merci

Répondre

0

Le problème est ici:

Set CheckBox2 = CheckBox2 

Vous ne pouvez pas déclarer une variable puis réglez-le sur lui-même. Aviez-vous l'intention d'attribuer une autre case à cocher existante?

Notez que vous avez le même problème avec les autres variables que vous utilisez. Peut-être que vous devriez regarder par-dessus un tutoriel VBA. Il y a beaucoup en ligne.

+0

Je suppose que le demandeur a essayé de définir une référence à l'élément CheckBox2 de la forme (dans ce cas, il serait préférable d'utiliser 'Set CB2 = formName .CheckBox2' et changez le nom utilisé pour le référencer. N'utilisez pas 'Set' dans la zone de texte et étiquetez les propriétés' Visible' en cours de modification ... – Dave

0

Si vous ne l'avez pas renommé votre zone de texte ou une étiquette alors cela devrait fonctionner ..

Sub AltSMSNumber() 
If CheckBox2.Value = False Then 
    Set TextBox2.Visible = True 
    Set Label2.Visible = True 
Else 
    Set TextBox2.Visible = False 
    Set Label2.Visible = False 
End If 
End Sub 
0

vitre intérieure code formUtilisateur avec le mot-clé Me vous faites référence à l'userform

utiliser et obtenir à ses membres (comme ses contrôles sont) en tapant simplement un point (.), puis le nom de membre

Sub AltSMSNumber() 
    With Me '<-- reference the userform 
     .TextBox2.Visible = Not .CheckBox2 
     .Label2.Visible = Not .CheckBox2 
    End With 
End Sub 

mais si vous voulez que behavi ou « automatique », utilisez le gestionnaire d'événements CheckBox2Click

Private Sub CheckBox2_Click() 
    With Me '<-- reference the userform 
     .TextBox2.Visible = Not .CheckBox2 
     .Label2.Visible = Not .CheckBox2 
    End With 
End Sub 
+0

@ Lilliputian_83, avez-vous passé au travers? – user3598756