Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhalt eines editBox-Elements im Ribbon

Forumthread: Inhalt eines editBox-Elements im Ribbon

Inhalt eines editBox-Elements im Ribbon
02.11.2020 13:46:07
Sven
Hallo,
ich habe ein editBox-Element im Ribbon, in das ein Wert eingegeben wird. Diesen Wert nutzt die Prozedur, welche durch eine Schaltfläche auf dem Ribbon aufgerufen wird. Das editBox-Element wird durch getText mit einem Wert vorbelegt. Ändert der Nutzer den Text, wird dieser durch onChange in eine Zelle auf dem Arbeitsblatt.
Das funktioniert auch super, aber wenn der User den Wert im Textfeld ändert und gleich auf die Schaltfläche zum Starten des Makros klickt, ist der onChange noch nicht ausgeführt. :o(
Gibt es eine andere Möglichikeit, auf den Wert im Ribbon zuzugreifen?
Sub setStandMM(control As IRibbonControl, ByRef text)
If Month(Now) = 1 Then
text = "12"
Else
text = Format(Month(Now) - 2, "00")
End If
End Sub
Sub getStandMM(control As IRibbonControl, ByRef text)
ThisWorkbook.Worksheets("Parameter").Range("C11") = Format(text, "00")
End Sub
Danke und Grüße
Sven
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt eines editBox-Elements im Ribbon
02.11.2020 14:45:42
volti
Hallo Sven,
auf den Wert in der Textbox kannst Du Du m.E. nur über einen Callback zugreifen.
Hierzu musst Du das betreffende Control invalidieren. Hierdurch wird dann wieder der Changeprozess ausgelöst.
myRibbon.InvalidateControl ID
Alternativ kannst Du auch den ganzen Ribbon invalidieren, dann werden alle Werte nach und nach wieder wie beim Start abgefragt.
myRibbon.Invalidate
Als ID ist der Name der ID des Controls (Textbox) einzugeben. MyRibbon ist die Referenz zum Ribbon, die Du Dir über den Ribbon-Code beim Start des Tools geholt hast.
Allerdings stellt sich zunächst die Frage, ob Du Dir den Ribbon selbst erstellt hast oder ob es ein anderweitiges Menü ist. Denn dann fehlen Dir die Kenntnisse über ID und Ribbon-Referenz darüber...
Ggf. mal die betroffene Mappe hier einstellen.
viele Grüße
Karl-Heinz
Anzeige
AW: Inhalt eines editBox-Elements im Ribbon
02.11.2020 14:53:12
Sven
Hallo Karl-Heinz,
ja, soweit habe ich auch schon recherchiert.
Ich werde dann einfach zur Sicherheit den eingegebenen und weiterverwendeten Wert nochmal in einem nachgelagerten Userform zum Ändern zur Verfügung stellen. Damit wäre das Problem auf pragmatischere Weise gelöst. Aber danke!
Grüße
Sven
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf Inhalte von editBox-Elementen im Ribbon


Schritt-für-Schritt-Anleitung

  1. Erstelle ein Ribbon mit einer editBox: Du kannst ein Ribbon in Excel über das Visual Basic for Applications (VBA) erstellen. Achte darauf, dass Du eine editBox hinzufügst, um Benutzereingaben zu ermöglichen.

  2. Verwende getText für das editBox: Um einen Wert in das editBox-Element einzufügen, kannst Du die getText-Funktion nutzen. Damit wird der Standardwert gesetzt, der beim Öffnen des Ribbons angezeigt wird.

    Sub setStandMM(control As IRibbonControl, ByRef text)
       If Month(Now) = 1 Then
           text = "12"
       Else
           text = Format(Month(Now) - 2, "00")
       End If
    End Sub
  3. Implementiere onChange: Nutze das onChange-Ereignis, um den eingegebenen Wert in eine Zelle zu übertragen. Dies geschieht, wenn der Benutzer den Text ändert.

    Sub getStandMM(control As IRibbonControl, ByRef text)
       ThisWorkbook.Worksheets("Parameter").Range("C11") = Format(text, "00")
    End Sub
  4. Nutze ein Callback für den Zugriff: Wenn der Benutzer schnell hintereinander auf die Schaltfläche klickt, bevor onChange ausgeführt wird, kann der Wert nicht korrekt übernommen werden. In diesem Fall kannst Du den Callback-Mechanismus verwenden, um den Wert abzurufen.

  5. Invalidiere das Control: Um sicherzustellen, dass der neue Wert abgerufen wird, kannst Du das Control invalidieren:

    myRibbon.InvalidateControl "DeineControlID"

Häufige Fehler und Lösungen

  • Fehler: Wert wird nicht aktualisiert
    Wenn der Wert im editBox nicht aktualisiert wird, könnte es daran liegen, dass onChange nicht rechtzeitig ausgeführt wird. Stelle sicher, dass Du das Control invalidierst, bevor Du die Schaltfläche klickst.

  • Lösung: Callback verwenden
    Nutze den Callback-Mechanismus, um sicherzustellen, dass Du immer den aktuellen Wert erhältst.


Alternative Methoden

  • Verwendung eines UserForms: Eine Alternative zur direkten Eingabe im Ribbon ist die Verwendung eines UserForms. Du kannst den eingegebenen Wert in einem UserForm sammeln und dann verarbeiten. Dies hat den Vorteil, dass Du mehr Kontrolle über die Eingabe hast.

  • Event-Handler für das Ribbon: Du kannst Event-Handler für die Steuerelemente im Ribbon definieren, um die Benutzerinteraktionen besser zu verwalten.


Praktische Beispiele

Hier ist ein Beispiel für den Zugriff auf den Wert einer ribbon textbox:

Sub onButtonClick(control As IRibbonControl)
    Dim userInput As String
    userInput = myRibbon.GetControl("DeineControlID").Text
    ThisWorkbook.Worksheets("Parameter").Range("C11").Value = userInput
End Sub

Tipps für Profis

  • Verwende Invalidate für das gesamte Ribbon: Wenn Du mehrere editBox-Elemente hast, die aktualisiert werden müssen, kannst Du das gesamte Ribbon invalidieren, um sicherzustellen, dass alle Werte korrekt aktualisiert werden.

  • Debugging: Nutze Debugging-Tools in VBA, um sicherzustellen, dass die Werte wie gewünscht übertragen werden. Überprüfe, ob onChange tatsächlich aufgerufen wird.


FAQ: Häufige Fragen

1. Wie kann ich den Wert einer ribbon textbox abrufen?
Du kannst den Wert abrufen, indem Du die ID des Controls verwendest und die GetControl-Methode nutzt.

2. Was ist der Unterschied zwischen onChange und onClick?
onChange wird ausgelöst, wenn der Benutzer den Text ändert, während onClick ausgelöst wird, wenn der Benutzer auf eine Schaltfläche klickt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige