Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wert aus UserForm in Zelle schreiben

Wert aus UserForm in Zelle schreiben
22.02.2018 14:11:33
Axel
Hallo zusammen,
in der unten verlinkten Datei werden nacheinander drei voneinander abhängige Abfragen per UserForm gemacht (Name, Region, Postleitzahl). Je nach Auswahl der ersten beiden Userforms befüllen sich die relevanten PLZ im dritten Userform.
Diese PLZ soll in das richtige Tabellenblatt geschrieben werden, also wenn Name: Müller, Region: Mitte, PLZ: 50100, dann soll im Tabellenblatt "Müller" in H4 die 50100 geschrieben werden. Die PLZ gibt es aber auch bei den anderen Namen, also müssen alle getroffenen Auswahlkombinationen für den Eintrag in das richtige Tabellenblatt H4 berücksichtigt werden.
Es gibt ein ausgeblendetes Tabellenblatt "Dropdown_UserForm", wo alle möglichen Kombinationen drin stehen.
Ich habe gelesen, dass man Werte mit z.B. Müller.Range ("H4") = Me.ListBox1.Value übernommen werden, aber wie berücksichtigt man die Abhängigkeiten der drei UserForms?
Vielen Dank schon mal für die Unterstützung.
https://www.herber.de/bbs/user/119999.xlsm
Gruß
Axel
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Freut mich...
22.02.2018 15:12:03
Werner
Hallo Axel,
...dass du zu deinem anderen "Problem" einen neuen Beitrag aufgemacht hast und so meine Antwort an dich ins Leere gelaufen ist.
Nur zu deiner Information: Wenn dir eine Antwort zu lange dauert, dann kann man einen Beitrag auf offen stellen und muss nicht gleich wieder einen neuen Beitrag zum gleichen Problem auf machen. Das hat dann auch den Vorteil, dass weitere Helfer nachlesen können, was da alles schon in Sachen Problemlösung gelaufen ist.
Gruß Werner
Anzeige
AW: Freut mich...
23.02.2018 06:45:21
Axel
Hallo Werner,
tut mir leid, ich hatte meine Beiträge gecheckt und muss was übersehen haben. War bestimmt nicht böse gemeint, das ist nicht meine Art.
Den Übertrag aus den UserForms in eine bestimmte Zelle eines Tabellenblattes hatte ich noch nicht gepostet. Hast Du denn eine Idee?
Entschuldige nochmals.
Axel
Anzeige
AW: Freut mich...
23.02.2018 06:50:36
Axel
Hallo Werner,
sorry, jetzt habe ich gesehen, was Du meinst. Wegen WorkBook.BeforeClose. Ja entschuldige Bitte, ich hatte Deine Antwort nicht gesehen. War wirklich nicht böse gemeint!
Ich achte künftig besser darauf. Hast ja recht.
Axel
AW: Wert aus UserForm in Zelle schreiben
23.02.2018 08:37:42
Axel
Im letzten UserForm (3) steht folgender Code:
Private Sub CommandButton1_Click()
intPLZ = Me.ComboBox1.Value 'Die Auswahl der PLZ wird in die Public Variable gespeichert
'Alle gewählten Angaben werden ausgegeben:
MsgBox "Es wurde folgende Auswahl getroffen:" & vbCr & _
"Name: " & strName & vbCr & _
"Region: " & strRegion & vbCr & _
"PLZ: " & intPLZ
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim intLastRow, i As Long
intLastRow = Tabelle21.Cells(Rows.Count, 1).End(xlUp).Row 'ermittelt die letzte Zeile in  _
der Tabelle Dropdown_UserForm
For i = 2 To intLastRow 'Geht jede Zeile der Tabelle "Dropdown_UserForm" durch und prüft...
If Tabelle21.Cells(i, "A") = strName And Tabelle21.Cells(i, "B") = strRegion Then '... _
ob der ausgewählte Name und die Region übereinstimmen
Me.ComboBox1.AddItem (Tabelle21.Cells(i, "C").Value) 'Wenn beide Angaben ü _
bereinstimmen, dann wird die entsprechende PLZ in die ComboBox geschrieben
End If
Next
End Sub
Kann folgendes nicht mit dem CommandButton verknüpft werden?:
Der Übertrag der Information aus UserForm3 muss in Abhängigkeit der Kombination aus UserForm1 und UserForm3 erfolgen. Es müsste so lauten (Klartext):
Wenn UserForm1 Name = Müller und UserForm3 PLZ_50100, dann schreib die 50100 in Tabellenblatt "Müller" in Zelle H6 rein
Wenn UserForm1 = Meier und UserForm3 = 50100, dann schreib die 50100 ins Tabellenblatt "Meier" in Zelle H6 rein.
Ich denke, ich werde UserForm2 dann gar nicht mehr benötigen...
Danke nochmals für Unterstützung vorab.
Gruß
Axel
Anzeige
AW: Wert aus UserForm in Zelle schreiben
23.02.2018 09:19:55
Werner
Hallo Axel,
dann will ich mal nicht so sein.
Code für den CommandButton deiner Userform3:
Private Sub CommandButton1_Click()
intPLZ = Me.ComboBox1.Value 'Die Auswahl der PLZ wird in die Public Variable gespeichert
'Alle gewählten Angaben werden ausgegeben:
If MsgBox("Es wurde folgende Auswahl getroffen:" & vbCr & _
"Name: " & strName & vbCr & _
"Region: " & strRegion & vbCr & _
"PLZ: " & intPLZ & vbLf & vbLf _
& "Sollen die Daten übertragen werden?", vbYesNo, "Information") = vbYes Then
Worksheets(strName).Range("H4") = intPLZ
Unload Me
Else
Worksheets(strName).Visible = False
Unload Me
UserForm1.Show
End If
End Sub
Gruß Werner
Anzeige
AW: Wert aus UserForm in Zelle schreiben
23.02.2018 10:19:34
Axel
Hallo Werner,
danke für Deine Nachsicht, war wirklich nicht böse gemeint...
Der Code läuft in einen Fehler, ich weiß auch warum.
Die Tabellenblätter haben andere Bezeichnungen als die Auswahlbutton im UserForm1. Kann man da nicht auf die VBA-Bezeichnungen der Tabellenblätter referieren?
Also die Schaltfläche "Müller" wäre Tabelle1, Meier Tabelle2 usw... Es sind ja nur 4 Schaltflächen.
Von alle dem abgesehen, ich brauche eigentlich die MsgBox oder eine Sicherheitsabfrage gar nicht.
Eigentlich wäre es schneller, wenn die Anwender nach Auswahl der PLZ auf eine Schaltfläche OK klicken und dann findet der Übertrag statt.
Ich schreibs mal wie ich kann:
Private Sub CommandButton1_Click()
intNL = Me.ComboBox1.Value 'Die Auswahl der NL wird in die Public Variable gespeichert
If vbYes (heißt: wenn der OK-Button geklickt wird) Then
Tabelle1.Range("H6") = intNL (wenn Müller)
Tabelle2.Range("H6")= intNL (wenn Meier)
usw.
Else (also wenn der OK-Button nicht geklickt wird)
...mach gar nichts, denn die Anwender werden OK klicken
End If
End Sub
Sorry, wenn ich das so komisch schreibe. Ich hoffe, Du weißt, was ich meine.
Danke nochmals und Gruß
Axel
Anzeige
AW: Wert aus UserForm in Zelle schreiben
23.02.2018 18:38:25
Werner
Hallo Axel,
ich verstehe zwar den Sinn nicht, denn deine Beispielmappe sieht anders aus. Da haben die entsprechenden Tabellenblätter auch die Namen die auf deinen Button sind, zudem ist Müller nicht Tabelle1.
Aber was solls:
Private Sub CommandButton1_Click()
intPLZ = Me.ComboBox1.Value 'Die Auswahl der PLZ wird in die Public Variable gespeichert
Select Case strName
Case "Müller"
Tabelle1.Range("H4") = intPLZ
Case "Meier"
Tabelle2.Range("H4") = intPLZ
Case "Schulze"
Tabelle13.Range("H4") = intPLZ
Case "Schmidt"
Tabelle4.Range("H4") = intPLZ
Case Else
End Select
Unload Me
End Sub
Gruß Werner
Anzeige
AW: Wert aus UserForm in Zelle schreiben
26.02.2018 13:59:54
Axel
Hi Werner,
sorry für die späte Rückmeldung. Ich bin jetzt erst wieder zu dem Thema gekommen.
Die Beispielmappe war etwas anders als das Original nach ein paar Tagen. Während der Lösungsfindung hat sich die Datei auch entwickelt. Deshalb brauche ich z.B. auch das zweite UserForm nicht mehr.
Ich hab jetzt alles eingefügt wie Du beschrieben hast und es funktioniert einwandfrei. Wenn man die Lösung sieht, sieht es so einfach aus. Ich hoffe, ich kann mich künftig mehr mit dem Thema beschäftigen, denn mit VBA kann man echt viel machen.
Mir ist noch was aufgefallen: Obwohl immer am Schluss "Unload Me" steht, bleibt das UserForm1 nach Show des UserForm3 im Hintergrund sichtbar. Dasselbe macht das UserForm3, wenn das nächste Kontextfenster sich öffnet. Das verstehe ich nicht. Ist aber nicht wirklich schlimm.
Danke noch vielmals, Werner!
Gruß
Axel
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
26.02.2018 20:00:52
Werner

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wert aus UserForm in Zelle schreiben


Schritt-für-Schritt-Anleitung

Um einen Wert aus einer UserForm in eine bestimmte Zelle in Excel zu schreiben, kannst Du folgenden VBA-Code verwenden. Dieser Code zeigt, wie Du den Wert aus einer ComboBox in die Zelle eines bestimmten Tabellenblattes überträgst.

  1. Öffne den VBA-Editor (ALT + F11).
  2. Erstelle eine UserForm mit einer ComboBox (z.B. ComboBox1) und einem CommandButton (z.B. CommandButton1).
  3. Füge den folgenden Code in das Code-Fenster der UserForm ein:
Private Sub CommandButton1_Click()
    Dim intPLZ As String
    Dim strName As String
    Dim strRegion As String

    ' Die Auswahl der PLZ wird in die Variable gespeichert
    intPLZ = Me.ComboBox1.Value
    ' Hier definierst Du den Namen und die Region, je nach Auswahl
    strName = "Müller" ' Dies sollte dynamisch gesetzt werden
    strRegion = "Mitte" ' Dies sollte dynamisch gesetzt werden

    ' Übertrag der PLZ in die entsprechende Zelle
    Select Case strName
        Case "Müller"
            Worksheets("Müller").Range("H4") = intPLZ
        Case "Meier"
            Worksheets("Meier").Range("H4") = intPLZ
        ' Füge weitere Fälle hinzu, wenn nötig
    End Select

    ' Schließe die UserForm
    Unload Me
End Sub
  1. Stelle sicher, dass Du die richtigen Namen der Tabellenblätter verwendest, wenn Du den Wert in eine bestimmte Zelle schreiben möchtest.

Häufige Fehler und Lösungen

  1. Fehler: Der Wert wird nicht in die Zelle geschrieben.

    • Stelle sicher, dass die Namen der Tabellenblätter korrekt sind. Ein Schreibfehler kann dazu führen, dass der Wert nicht geschrieben wird.
  2. Fehler: UserForm bleibt im Hintergrund sichtbar.

    • Wenn Du Unload Me am Ende des Codes verwendest, sollte die UserForm geschlossen werden. Wenn das nicht funktioniert, überprüfe, ob du die UserForm an mehreren Stellen zeigst.
  3. Fehler: Variable nicht definiert.

    • Achte darauf, dass Du alle Variablen vorher deklarierst, insbesondere strName und strRegion, um sicherzustellen, dass sie die richtigen Werte haben.

Alternative Methoden

Du kannst den Wert auch direkt in die Zelle schreiben, ohne die Select Case-Anweisung zu verwenden. Ein einfacherer Ansatz könnte wie folgt aussehen:

Worksheets(strName).Range("H4") = Me.ComboBox1.Value

Diese Methode geht davon aus, dass strName den Namen des Blattes enthält, in das Du den Wert schreiben möchtest. Dies vereinfacht den Code, wenn Du nur ein Blatt hast.


Praktische Beispiele

Angenommen, Du hast eine UserForm, in der der Benutzer einen Namen und eine PLZ auswählt. Der folgende Code zeigt, wie Du diese Werte in die entsprechenden Zellen schreiben kannst:

Private Sub CommandButton1_Click()
    Dim intPLZ As String
    intPLZ = Me.ComboBox1.Value

    ' Übertrage PLZ in H4 des entsprechenden Blattes
    Worksheets(Me.ComboBox2.Value).Range("H4") = intPLZ ' ComboBox2 könnte den Namen des Blattes enthalten
    Unload Me
End Sub

Hier wird vorausgesetzt, dass ComboBox2 den Namen des gewünschten Tabellenblattes enthält.


Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Du kannst Application.ScreenUpdating = False setzen, bevor Du Änderungen an der Benutzeroberfläche vornimmst, um die Leistung zu verbessern und Flackern zu vermeiden.
  • Erstelle eine Fehlerbehandlungsroutine, um mögliche Laufzeitfehler abzufangen. Beispiel:
On Error GoTo ErrorHandler
' Dein Code hier
Exit Sub

ErrorHandler:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die UserForm nach dem Schließen vollständig verschwindet? Um sicherzustellen, dass die UserForm vollständig verschwindet, verwende Unload Me am Ende Deines Codes. Wenn die UserForm dennoch sichtbar bleibt, überprüfe, ob sie an anderer Stelle im Code erneut angezeigt wird.

2. Kann ich mehrere Werte in verschiedene Zellen gleichzeitig schreiben? Ja, Du kannst mehrere Range-Objekte ansprechen und die Werte nacheinander zuweisen. Beispiel:

Worksheets(strName).Range("H4") = intPLZ
Worksheets(strName).Range("H5") = "Ein anderer Wert"

3. Wie kann ich den Wert in eine andere Zelle als H4 schreiben? Ändere einfach die Range("H4")-Anweisung in die gewünschte Zelle, wie z.B. Range("H6").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige