webentwicklung-frage-antwort-db.com.de

Benutzer mit VBA auffordern, Zellen auszuwählen (möglicherweise auf anderem Arbeitsblatt)

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: Screengrab showing required functionality - the Excel 'Sum' Function Arguments pop-up

und hier:Screengrab showing required functionality - the Excel Function Arguments pop-up

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

  1. Ich möchte die integrierte GUI-Funktionalität von Excel wie oben gezeigt verwenden
  2. Ich muss in der Lage sein, einen Bereich auf einem anderen Blatt als dem aktiven Arbeitsblatt auszuwählen und darauf zu verweisen
12
Jonny

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:

enter image description here

23
ChrisProsser

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.

0
DanK