2010-11-18 8 views
10

intégrés dans la feuille sheet1 j'ai une zone de liste déroulante contrôle de formulaire nommé combobox_test et il a choisi la valeur xExcel VBA: Obtenir les valeurs du formulaire Contrôles

en plus de cela, j'ai embbeded un bouton que lorsque je l'appuie je le veux pour prendre la valeur de combobox_test et le placer dans something.Rows(y). Mais je ne peux pas le faire fonctionner et je suis un peu frustré. Peut-être que vous pouvez me diriger dans la bonne direction

Sub ButtonPressed_sample() 
    Dim value As String 

    Set putItRng = Range("theCells")   
    putItRng.Rows(1) = ActiveSheet.Shapes("combobox_test").Value   
End Sub 

Un conseil? Suis un débutant absolu en VBA, alors soyez aussi précis que possible. Merci

+0

quelle erreur que vous obtenez? – Panicos

+0

Erreur d'exécution '438'. Objet ne supporte pas cette propriété ou méthode ... et il montre la ligne 'putItRng.Rows (1) = ActiveSheet.Shapes (" combobox_test "). Value' – Carlos

Répondre

6

Je ne suis pas sûr que ce soit ce que vous voulez, mais il est un début. L'objet Shape n'a pas de propriété Value, qui est la source de l'erreur. Un objet DropDown est obsolète, mais toujours disponible.

Sub ButtonPressed_sample() 

    Set putitrng = Range("theCells") 
    putitrng.Rows(1) = ActiveSheet.DropDowns("combobox_test").value 

End Sub 
+3

Remarque: DropDowns (et ComboBox, boutons, etc.) sont obsolètes car si vous choisissez de regrouper plusieurs formes, les contrôles qui sont dans les groupes n'apparaissent pas dans ces objets de collection. Donc je suppose que ce commentaire est juste une mise en garde de ne pas mettre votre contrôle dans des formes groupées tant que vous utilisez cette méthode (que moi aussi j'utilise) :) – Alain

1
putItRng.Rows(1)= ActiveSheet.combobox_test.value 

Essayez:

activesheet.cells(1,putItRng.column).value=activesheet.combobox_test.value 

S'il ne fonctionne pas alors votre combobox n'est pas nommé « Combobox_test »

+0

il donne toujours la même erreur si – Carlos

+0

Vous devez faire référence par ActiveWorkbook .Activesheet (car plusieurs classeurs ont chacun une feuille active). Les lignes (1) vous donnent la plage entière de toutes les colonnes de la rangée 1 ... Allez pas à pas là-dessus. Essayez de trouver la véritable source du problème en utilisant deux Msgbox, un pour le côté gauche, l'autre pour le côté droit de l'assignation suggérée ci-dessus. Cela permettra de mieux identifier ce qui se passe. Je suppose que votre nom d'objet est faux. – jpinto3912

8
Sub QuickSelect_Change() 
     With ActiveSheet.Shapes("QuickBox") 
      MsgBox "My Selected Value " & .ControlFormat.List(.ControlFormat.ListIndex) 
     End With 
    End Sub 
3
ActiveSheet.Shapes("combobox_test").ControlFormat.ListIndex 
+0

Bien que cela puisse répondre à la question, ce serait mieux pour expliquer pourquoi c'est la bonne solution. –

+0

La réponse la plus écoutée fait référence à la collection DropDowns, mais Alain a mentionné que cela était obsolète car «si vous choisissez de regrouper plusieurs formes, les contrôles qui sont dans les groupes n'apparaissent pas dans ces objets de collection». La collection de formes est un autre moyen de référencer un contrôle de formulaire combobox, mais le post de Carlos n'a pas fonctionné pour moi. – rdg515

+0

J'ai juste essayé 'ActiveSheet.Shapes (" combobox_test "). ControlFormat.Value' et j'ai trouvé le même résultat. Certains scénarios pourraient trouver cela un style de codage plus approprié. –