Excel VBA Status Befehl "Objekte markieren" auslesen?

Excelmania

Lieutenant
Registriert
Apr. 2010
Beiträge
802
Guten Morgen zusammen,

ich habe in einer Useform den Button hinterlegt der den Befehl "Objekte markieren" aus dem Schnellzugriff aktiviert.

Code:
Application.CommandBars.ExecuteMso "ObjectsSelecet"

Beim Verlassen des Tabellenblattes wird die Useform geschlossen und ich möchte, dass der Modus "Objekte markieren" beendet wird, wen aktiv.

Kann irgendwie der Status durch VBA abgefragt werden?
 
Du könntest z.B. mit dem Ribbon-Objekt eine Schaltfläche der Multifunktionsleiste auswählen.
 
Auch wenn du nie antwortest, ob eine Lösung funktioniert hat, oder nicht, versuche ich es nochmal.

Ich gehe mal davon aus, dass es sich bei den Objekten um deine Shapes handelt...richtig? Um es einfach zu machen, könntest du dir die Referenz zu dem Markierten Shapes in deinem Benutzer Formular (User Form) merken und beim Schließen wieder abwählen.

Zu mehr reicht dein Anfangspost nicht aus. Wir wissen weder welche Objekte gemeint sind, noch wie es in deinem UserForm aussieht.
 
Hallo.

ja, es handelt sich um shapes (Formen im Menü).

Was meinst Du mit Referenzen? Die Shapes werden doch alle gleich eingefügt.
 
OK, dann muss ich nochmal nachfragen. Was macht der Modus Objekte markieren? Ist das eine Funktion von dir, oder irgendwas von Excel?
 
Guten Abend.

Das ist ein Programmbefehl von Excel. Dieser kann in den Schnellzugriff aufgenommen werden.

Der Befehl ermöglicht es shapes wie in PowerPoint oder Visio oder Publisher durch ziehen zu markieren alternativ einfacher mit Strg mehrere zu selektieren.

ist m. E. eine sehr hilfreiche Funktion. 3inige kolleg*innen kommen jedoch mit der Zerstückelungen der Befehle nicht zurecht, daher würde ich es gerne in die useform integrieren.

wenn der Befehl im schnellzugriff ist, dann kann man auch das umschalten über die useform sehen. Leider kann der Befehl durch Doppelklick ins koordinatensystem ausgehobelt werden und dann Stimmt der Status in der useform nicht mehr.
 
Rein aus Anwendersicht ist die Userform fehl am Platz. Du willst alles markieren, dann ist das ein Button im Ribbon der das macht. Die Userform flattert mir nur unnötig vor dem Tabellenblatt im Weg rum.
Zusätzlich würdest du wenigstens den Worksheet_Activate (oder so) benutzen um die Auswahl zu deaktivieren. Alternativ darf gerne auch noch ein Button ins Ribbon der diesen Auswahlmodus wieder deaktiviert auch ohne das man das Blatt wechselt.
 
Jetzt wirds ein wenig klarer. Versuch mal das Folgende. Keine Ahnung ob die ID's überall die selben sind, sonst ginge es auch über die Caption.

Code:
Sub ShowState()
   
    Dim c As CommandBarButton
    Set c = Application.CommandBars.FindControl(, 182)
   
    MsgBox c.State

End Sub
 
Guten Morgen.

Ich habe Deinen Code gerade auf dem Tabellenblatt eingeführt, auf dem Useform beim öffnen eingeblendet wird.

Es passiert nichts leider nichts.

Wenn ich das Makro mit einem CommandButton verknüpfe, liefert die MSGBOX nur 0.

@morcego Ist es den möglich, dass egal welchem Kollegen ich die Excel-Tabelle schicke, dass das spezifische Menü wie eine Useform beim Aufruf erscheint? Oder muss das an jedem Endgerät manuell eingerichtet werden?
 
Ja es liefer eine 0 wenn der Knopf gedrückt (aktiviert) ist und -1 wenn nicht. Das ist doch das was du wolltest, oder? Musst es halt nur richtig verarbeiten jetzt.

Und natürlich kannst du einem Excelfile einen eigenen Ribbonabschnitt mitgeben, sodass dieser überall verfügbar ist, wo die Datei geöffnet wird.

Wenn dein UserForm für sowas verwendet wird, muss ich morcego Recht geben.
 
Zuletzt bearbeitet:
Nein. Das Problem ist, wenn jemand einen Doppelklick macht (nicht auf ein Shape), dann wird es deaktiviert.

Ich bräuchte somit ein Endlosmakro, das beim Aufruf des Tabellenblattes gestartet wird. Geht so etwas?
 
Eine Excel Datei mit Code, also xlsm, sollte tunlichst niemals rumgeschickt werden. Im Idealfall existiert die nicht mal. ;)
Was wollt ihr eigentlich bewerkstelligen? Wie sieht das drumherum aus?
Grundsätzlich bleibe ich bei meiner üblichen Aussage.
  • es gibt ein Excel AddIn XLAM
  • es gibt einen Speicherort wo dieses AddIn liegt
  • Excel verwendet seinen alternativen StartUp Path um das AddIn zu laden ( = vertrauenswürdiger Speicherort)
  • alle anderen VBA-Sachen werden deaktiviert.
 
Zurück
Oben