Ich arbeite in Excel an einem VBA-Projekt und möchte, dass ein Teil meines Makros den Benutzer auffordert, einen Zellbereich * auszuwählen, mit dem das Makro später etwas erledigen kann.
* Die Art der Aufforderung, die Sie erhalten, wenn Sie ein Diagramm erstellen oder eine GUI verwenden, um eine Funktion einzufügen
z.B. Hier:
und hier:
Ich suche deshalb nach etwas in der Richtung von
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
Ist es möglich, auf die integrierte Excel-Funktionalität zuzugreifen, um die folgenden Funktionen auszuführen: CreateFunctionArgumentsPrompt()
Hinweis: Dies ist ähnlich wie bei SO frage Excel vba ruft den vom Benutzer ausgewählten Bereich mit der Maus ab unterscheidet sich jedoch darin
Hierbei wird nicht das integrierte System verwendet, das Sie oben gezeigt haben. Sie können jedoch einen Zellbereich nach einer Eingabeaufforderung auswählen:
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
Dies basiert auf der Antwort in dieser MrExcel-Antwort .
So sieht es im Gebrauch aus:
Was Sie suchen, ist ein Dialogfeld (auch als allgemeines Dialogfeld bezeichnet). Leider können Sie zu den vorhandenen eingebauten Objekten keine hinzufügen (zumindest nicht mit VBA).
Wie oben erwähnt, können Sie diese Funktionalität mit InputBox und Forms nachahmen. Ich habe jedoch proprietäre Programme gesehen, die auf Excel basieren, wobei das Unternehmen die von Ihnen beschriebene Funktionalität hinzufügte. Ich glaube jedoch, dass Sie C++ oder eine tiefere Sprache verwenden müssen, um DLLs zu erstellen, die dies ermöglichen
Über Dialoge ist Folgendes zu beachten: Excel verfügt über eine eingebaute Common File Dialog-Objektbibliothek , mit der Sie allgemeine Dateiserver-Dialogfelder (z. B. Öffnen, Speichern und Auswählen) mithilfe vorhandener Windows-API-Dialogfelder erstellen können.