J'essaie de sélectionner des éléments par programmation à partir d'une liste. Sur VBA je ferai:XLwings sélectionnant l'élément sur ListBox
Sheet1.MyListBox.Selected(0) = True
Ou pour désélectionner
Sheet1.MyListBox.Selected(0) = False
Avec XLwings Je suis en mesure de vérifier facilement si un élément est sélectionné en faisant:
>> wb.Sheets(1).api.MyListBox.Selected(0)
True
Mais si je essayer d'attribuer une valeur Je reçois une erreur:
wb.Sheets(1).api.MyListBox.Selected(0) = True
File "<ipython-input-156-9ef416a5660f>", line 1
wb.Sheets(1).api.MyListBox.Selected(0) = True
^
SyntaxError: can't assign to function call
Espérons que quelqu'un puisse vous aider. PS: J'ai trouvé que si vous êtes en mode Design (sélectionné dans la barre d'outils Excel), même la première ligne ne fonctionnera pas sur Python pour une raison quelconque!
Merci beaucoup! Cela a fait l'affaire. Et si pour une raison quelconque la méthode n'était pas implémentée? Je devrais alors utiliser 'ListBox.Selected (0) = True' et trouver qu'il est impossible avec xlwings ... – Yona
On peut faire 'wb.Sheets (1) .api.MyListBox.Selected (0)' et obtenir ' Vrai ou Faux selon le statut de cet élément. Mais alors que sur VBA vous pouvez assigner une valeur en faisant 'MyListBox.Selected (0) = True', ce n'est pas possible en utilisant xlwings. Vous avez résolu le problème en utilisant une autre méthode (SetSelected) et c'est génial car je ne savais pas qu'il existait! Mon dernier commentaire était une question sur ce qu'il fallait faire si vous vous trouvez obligé d'utiliser 'wb.Sheets (1) .api.MyListBox.Selected (0) = True' (parce que SetSelected n'existe pas par exemple). – Yona
@Yona: Pourquoi devriez-vous être _ ** forcé ** _? Le fait que '.Selected (0)' ** only ** existe dans VBA pourrait être _historical_ ou _future_, seule la MS sait pourquoi. – stovfl