Comment mettre en évidence les gammes de données dans excel en utilisant C #?

Je me request s'il existe un moyen de reproduire la fonctionnalité de dialog de tableau d'insertion en utilisant C #. Ce dont j'ai besoin, c'est d'afficher une window contextuelle, mais surtout de laisser l'user sélectionner des plages de données.

Je souhaite aussi des gammes mises en évidence avec les boîtes colorfull Excel. Voici une image de la façon dont excel met en évidence la valeur lors de l'insertion d'un graphique. J'aimerais pouvoir avoir ces boîtes à partir de mon complément C #.

Mise en surbrillance de la gamme Excel http://img696.imageshack.us/img696/5290/excel.png

Dans VBA, il existe un contrôle RefEdit qui peut vous permettre de le faire, et il existe une procédure détaillée sur comment l'utiliser ici: Comment utiliser le RefEdit Control avec un UserForm .

Il n'y a pas de contrôle embedded qui peut vous permettre de le faire en C #, malheureusement. Vous pouvez soit utiliser VBA comme votre front-end – ce que je doute vraiment que vous voulez faire – ou vous pouvez créer un équivalent de contrôle RefEdit en utilisant C #. Il existe un article sur la façon de procéder, ainsi qu'un exemple de code C # entièrement fonctionnel, ici: Comment coder un contrôle RefEdit par Gabhan Berry.

Mise à jour basée sur le commentaire de zzandy:

"En fait, la question est de savoir comment mettre en surbrillance les gammes sélectionnées, et non sur la sélection de la gamme. La Boîte d'input (csharp-examples.net/inputbox) est disponible à partir de C # et permet de sélectionner des plages."

L'obtention des plages à mettre en surbrillance dans plusieurs colors ne sera pas possible. Ce type de mise en surbrillance ne se produit que dans Excel lors de la création de formules sur la feuille de calcul, et non lorsque l'on choisit des plages à d'autres fins. La seule façon de créer cela nécessiterait une quantité héroïque de sous-classment ou d'accrochage, et je ne le reorderais pas.

Certaines solutions, cependant, vous permettront au less d'avoir une bande de sélection autour de la sélection (aka "fourmis marchantes"). Si vous utilisez VBA comme interface , vous pouvez utiliser le contrôle RefEdit embedded , que j'ai mentionné ci-dessus, qui met la bande de sélection autour de la plage sélectionnée.

L'exemple C # que j'ai donné ci – dessus vous permettrait d'utiliser un contrôle RefEdit-like dans un formulaire C #, mais cela n'inclurait pas la bande de sélection lors de la sélection – il utilisera simplement l'aspect standard lorsqu'une gamme est normalement sélectionnée.

Si vous êtes disposé à utiliser une solution de boîte de saisie simple, au lieu d'un contrôle sur un formulaire, l' exemple C # que vous avez donné fonctionnerait (si vous utilisez FormShow () mais pas Form.ShowDialog ()), mais ce ne serait pas afficher une bande de marquage spéciale ou une autre mise en surbrillance. Pour une boîte de saisie simple qui utilise la sélection de la bande de sélection, vous pouvez utiliser la méthode Excel.Application.InputBox , en passant une valeur de '8' pour le 'Type', ce qui indique que la valeur renvoyée par 'InputBox' la méthode doit être un type de données "Excel.Range":

Excel.Application excelApp = ...; ssortingng prompt = "Please select the range."; ssortingng title = "Input Range"; int returnDataType = 8; Ssortingng DefaultRange = oXL.Selection.Address(); Excel.Range myRange = excelApp.InputBox( prompt, title, DefaultRange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, returnDataType) 

J'espère que cela t'aides…

Mike

Je peux être un peu dépassé ici, mais avez-vous essayé d'save une macro qui fait ce que vous voulez?

Vous pouvez ensuite regarder le code généré et l'adapter au besoin.