2010-11-10 12 views
2

J'ai un comboBox nommé, appelons-le: "comboBox1"Obtenir valeur ComboBox dans une cellule?

Je veux faire référence à la valeur de comboBox1 à partir d'une cellule.

=if(comboBox1.Value=1,1,0) 

L'idée ci-dessus est ce que je cherche. Je sais que je peux attacher un pair à comboBox1, qui remplit une cellule, qui peut être lue par d'autres cellules, mais qui introduit simplement plus de pièces mobiles et de complexité.

Cela doit être possible, non? Toute aide serait géniale, merci!

Répondre

0

Excel autorise un lien de cellule à la fois sur un ActiveX et un formulaire doropdown (combo). Cela écrira la valeur à une cellule sans aucun code.

+0

Est-ce la seule solution de contournement? Je ne suis pas en désaccord avec vous, mais intuitivement, il est logique de pouvoir référencer directement une valeur comboBox. Merci pour la réponse cependant, je vais regarder dans cela. – sooprise

1

Je pense que quelque chose comme ceci est possible.

Pour votre événement de changement combobox, vous devez déclencher un recalcul:

Private Sub ComboBox1_Change() 
    Application.Calculate 
End Sub 

Ensuite, vous devez ajouter une fonction définie par l'utilisateur personnalisé. La pièce importante de cette application. Ligne Volatile. Cela permettra de s'assurer qu'il est recalculé, après tout calcul.

Function GetComboVal(cmbName As String) As String 

    Application.Volatile 'will always recalculate 

     Dim cmb As OLEObject 

     Set cmb = Sheet1.OLEObjects(cmbName) 

     GetComboVal = cmb.Object.Value 
    End Function 

Donc, dans votre cellule, vous aurez besoin d'utiliser un appel comme celui-ci:

=if(GetComboVal("ComboBox1")=1,1,0) 

L'inconvénient de cette technique est que si votre feuille de calcul a de nombreux calculs, il pourrait prendre un certain temps recalcule .

+0

Il s'avère que cela fonctionne lorsque vous accédez à la feuille de calcul en utilisant COM aussi. Merci! – nickvans

1

Bon après-midi,

Il y a un moyen beaucoup plus facile de lier une cellule à une zone de liste déroulante. Avec-dans les propriétés de la zone de liste déroulante, ListFillRange ci-dessus est Linked Cell. Vous devez simplement désigner cette cellule par ce que vous voulez que votre valeur de liste déroulante soit égale.