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

Forumthread: "Rückgabewert" beim schließen eines Userforms

"Rückgabewert" beim schließen eines Userforms
28.07.2014 11:46:47
Hendrik
Hallo zusammen,
ich habe in Userform A zehn Textboxen. Klicke ich doppelt auf eine Textbox öffnet sich Userform B, auf dem ich einen Listbox-Eintrag auswählen und auf "übernehmen" drücken kann.
Wie kann ich nun erkennen, auf welche Textbox auf A doppelt geklickt wurde und wo der Wert hin zurückgegeben werden soll? Wie realisiert Ihr so etwas?
Danke und Grüße
Hendrik

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Rückgabewert" beim schließen eines Userforms
28.07.2014 11:53:58
Nepumuk
Hallo,
definiere im Userform eine TextBox-Eigenschaft welcher du die angeklickte TextBox übergibst. Dann kannst du den Wert direkt in die Prozedur deines Commandbuttons an die TextBox übergeben.
Gruß
Nepumuk

AW: "Rückgabewert" beim schließen eines Userforms
28.07.2014 12:02:02
Hendrik
Das verstehe ich nicht.
Hier mal mein bsiheriger Code:
Code von Userform A:
Private Sub txtWerteVergleich_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Call auswahlSpalten(txtServer, txtWerteDB, txtWerteTab)
End Sub
Code eines Moduls:
Sub auswahlSpalten(strServer As String, strDb As String, strTab As String)
glStrServer = strServer
glStrDb = strDb
glStrTab = strTab
ufB.Show
End Sub Code von Userform B:
Private Sub cbEinfuegen_Click()
ufA.txtWerteVergleich.caption = listbox.value
Me.Hide
Unload Me
End Sub

Anzeige
AW: Nimm anstelle der Textboxen Comboboxen
28.07.2014 12:08:22
Daniel
Im Prinzip programmierst du hier das Verhalten einer Combobox nach, also kannst du auch gleich diese verwenden und benötigts keine zweite Userform.
Ansonsten mache ich die Wertübergabe zwischen zwei Userforms so, dass ich für die Daten, die von beiden Userforms verwendet werden sollen, eine Projektweit gültige Variable erstelle.
Hierzu wird die Variable als PUBLIC in einem allgemeinen Modul direkt unter Option Explicit deklariert
sieht in deinm Fall etwa so aus:
1. Allgemeines Modul1
Option Explicit
Dim TB as string

2. im Doppelkllick-Event der Textbox1:
TB = "Textbox1"
3. im Klick-Event des Übernehmenbuttons:
Userform1.Controls(TB) = Listbox1.Text
aber wie gesagt, in diesem Fall ist es einfacher, anstelle der Textboxen Comboboxen zu verwenden.
Dort kannst du auch entweder Freitext eingeben oder einen Wert aus der Liste auswählen.
Gurß Daniel

Anzeige
AW: Nimm anstelle der Textboxen Comboboxen
28.07.2014 12:19:39
Hendrik
Hallo Daniel,
da die Listbox des zweiten Userforms noch andere Sachen macht und aus einer Abfrage gefüllt wird, klappt eine Combobox nicht. Aber die andere Varainte ist prima.
.Controls hatte ich nicht auf dem Schirm. Danke.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Rückgabewert beim Schließen eines Userforms in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Rückgabewert beim Schließen eines Userforms in Excel VBA zu realisieren, kannst Du folgende Schritte befolgen:

  1. Definiere globale Variablen: Erstelle in einem allgemeinen Modul eine öffentliche Variable, um die Auswahl zwischen den Userforms zu speichern.

    Option Explicit
    Dim TB As String
  2. TextBox-Doppelclick-Event: In Userform A, füge den Code hinzu, um beim Doppelclick auf eine TextBox den Namen der TextBox in die globale Variable zu speichern.

    Private Sub txtWerteVergleich_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       TB = "txtWerteVergleich" ' Beispiel für die TextBox
       ufB.Show
    End Sub
  3. Wertübergabe im Userform B: In Userform B, übernehme den Wert aus der Listbox und weise ihn der entsprechenden TextBox in Userform A zu.

    Private Sub cbEinfuegen_Click()
       UserForm1.Controls(TB).Caption = ListBox1.Value
       Me.Hide
       Unload Me
    End Sub
  4. Schließe Userform B: Mit Unload Me wird Userform B geschlossen und der Wert wird an Userform A zurückgegeben.


Häufige Fehler und Lösungen

  • Fehlerhafte Referenzierung: Stelle sicher, dass die Namen der TextBoxen korrekt geschrieben sind. Ein Tippfehler führt zu Laufzeitfehlern.

  • Listbox-Wert nicht übergeben: Überprüfe, ob die Listbox den richtigen Wert hat, bevor Du ihn zuweist. Nutze Debugging, um den Wert zu kontrollieren.

  • Öffnen des Userforms: Falls Userform B nicht erscheint, überprüfe, ob der Code im richtigen Sub steht und keine Fehler aufgetreten sind.


Alternative Methoden

Eine einfachere Methode könnte sein, anstelle von TextBoxen Comboboxen zu verwenden. Dies erlaubt eine einfachere Wertübergabe und kann das Handling der Userforms erleichtern:

Private Sub cboWerteVergleich_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    TB = "cboWerteVergleich"
    ufB.Show
End Sub

Diese Technik reduziert den Codeaufwand, da Comboboxen die Auswahl direkt aus einer Liste ermöglichen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die oben genannten Methoden anwendet:

  1. Userform A: Enthält mehrere TextBoxen.
  2. Userform B: Hat eine Listbox mit Werten.

Wenn Du auf eine TextBox in Userform A doppelklickst, öffnet sich Userform B, wo Du einen Wert auswählen kannst. Durch Drücken des „Übernehmen“-Buttons wird der ausgewählte Wert der TextBox in Userform A zugewiesen.


Tipps für Profis

  • Verwende Debug.Print: Nutze Debug.Print in Deinem Code, um Werte während der Ausführung zu überprüfen. Dies kann bei der Fehlersuche sehr hilfreich sein.

  • Benutze Error Handling: Implementiere Fehlerbehandlung, um Laufzeitfehler zu vermeiden und den Code robuster zu machen.

On Error Resume Next
' Dein Code hier
On Error GoTo 0
  • Wähle aussagekräftige Namen: Benenne Deine TextBoxen und Variablen so, dass sie deren Funktion klar widerspiegeln. Das erhöht die Lesbarkeit Deines Codes.

FAQ: Häufige Fragen

1. Wie kann ich mehrere TextBoxen gleichzeitig bedienen?
Du kannst mehrere globale Variablen erstellen oder eine Struktur verwenden, um alle benötigten Werte zu speichern.

2. Was mache ich, wenn ich keine globale Variable verwenden möchte?
Du kannst alternativ ein öffentliches Modul erstellen, das alle notwendigen Informationen für die Userforms speichert, ohne globale Variablen zu verwenden.

3. Ist dies in allen Excel-Versionen anwendbar?
Ja, die beschriebenen Methoden sind in Excel VBA ab Version 2007 anwendbar.

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