Je travaille dans Excel sur un projet VBA et je souhaite qu'une partie de ma macro demande à l'utilisateur de sélectionner une plage de cellules * avec laquelle la macro peut ultérieurement effectuer des tâches.
* Le type d'invite que vous obtenez lors de la création d'un graphique ou de l'utilisation d'une interface graphique pour insérer une fonction
par exemple. ici:
et ici:
Je suis donc à la recherche de quelque chose du genre
Sub MyMacro()
MsgBox "Please select data range"
' allow user to select range (as images above)
CreateFunctionArgumentsPrompt()
'do stuff with user selected range of cells
...
End Sub
Est-il possible d'accéder aux fonctionnalités intégrées d'Excel pour effectuer ce que j'appelle: CreateFunctionArgumentsPrompt()
Remarque: Ceci est similaire à SO question Excel vba obtient la plage de la plage sélectionnée par l'utilisateur à l'aide de la souris mais diffère en ce que
Cela n'utilise pas la structure que vous avez indiquée ci-dessus, mais vous permet de sélectionner une plage de cellules à la suite d'une invite de revenus
Sub RangeSelectionPrompt()
Dim rng As Range
Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
MsgBox "The cells selected were " & rng.Address
End Sub
Ceci est basé sur la réponse donnée dans cette réponse de MrExcel .
Voici à quoi ça ressemble en cours d'utilisation:
Ce que vous recherchez, c'est une boîte de dialogue (également appelée boîte de dialogue commune). Malheureusement, vous ne pouvez pas en ajouter un aux objets intégrés existants (du moins sans utiliser VBA).
Comme mentionné ci-dessus, vous pouvez reproduire cette fonctionnalité à l'aide de InputBox et Forms. Cela dit, j'ai vu des programmes propriétaires basés sur Excel, dans lesquels la société a ajouté le type de fonctionnalité que vous décrivez. Cependant, je crois que vous devez utiliser C++ ou un langage plus profond pour créer des DLL pouvant accomplir cela.
Une chose à noter à propos des boîtes de dialogue: Excel a une bibliothèque intégrée Boîte de dialogue de fichier commune qui vous permet de créer des boîtes de dialogue de serveur de fichiers communes (telles que Ouvrir, Enregistrer et sélectionner) à l'aide des boîtes de dialogue API Windows existantes.