2016-06-01 2 views
0

Existe-t-il un moyen de transmettre une valeur de case à cocher à partir d'un formulaire utilisateur? Je l'ai vu quand la case à cocher est sur la feuille de travail, mais je n'ai pas réussi à la faire fonctionner quand elle vient de mon userform.Référence case à cocher nom/valeur dans un sous-programme

J'ai plusieurs instructions if répétitives et la seule différence entre elles est le nom de la case à cocher. Je suis sûr qu'il y a une solution simple que je n'ai pas encore trouvée. Toute aide est appréciée.

Edit: inclus Code

If LockboxCheckBox.Value = True Then 
    If IsEmpty(wsInput.Cells(emptyRow, productCol)) Then 
     wsInput.Cells(emptyRow, productCol).Value = LockboxCheckBox.Caption 
    Else: wsInput.Cells(emptyRow, productCol).Value = wsInput.Cells(emptyRow, productCol).Value & ", " & LockboxCheckBox.Caption 
    End If 
End If 

Je veux faire un petit sous-programme et le besoin de passer checkbox.value ainsi que le checkbox.caption à quand je l'appelle.

+0

Range (« A1 »). Valeur = vérifier box.value si je reçois ce que vous avez besoin :-) –

+0

@newguy C'est si la case était sur la feuille de calcul. Je comprends que vous pouvez le faire. Je n'ai pas été en mesure de trouver un moyen lorsque la valeur de la case à cocher provient d'un formulaire utilisateur. J'ai plusieurs cases à cocher sur un userform et je voudrais passer cette valeur à un sous-programme. –

+0

@ChasEsau alors je pense que Nathan a déjà répondu à cette question. Comme ceci 'var = checkbox1.value' – newguy

Répondre

0

L'exemple de code suivant montre comment passer un contrôle Checkbox sur un objet UserForm à une autre procédure, obtenir la valeur et la légende de la case à cocher et faire quelque chose avec eux.

Notez que je choisis de passer la case, plutôt que la valeur et la légende, comme deux paramètres, car cela réduira la quantité de code que vous devez taper.

Private Sub btnOK_Click() 
    Dim chk As MSForms.CheckBox 
    Set chk = Me.CheckBox1 
    ProcessCheckBox chk 
    ProcessCheckBox Me.CheckBox2 
End Sub 

Sub ProcessCheckBox(chk As MSForms.CheckBox) 
    Dim chkVal As Boolean 
    Dim chkCap As String 

    chkVal = chk.value 
    chkCap = chk.Caption 
    If chkVal = True Then 
     Debug.Print chkCap & " is true" 
    Else 
     Debug.Print chkCap & " is false" 
    End If 
End Sub 
+0

Merci, exactement ce que je cherchais. –