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

Forumthread: Daten aus aktiver Zeile in UserForm

Daten aus aktiver Zeile in UserForm
12.10.2022 12:30:18
Dieter
Hallo Zusammen!
Ich habe eine Datenbank in der ich verschieden Werte, genauer gesagt sind es Adressdaten und Telefonnummern welche ich mittels Userform eintrage. Das funktioniert so weit.
Mein Problem ist nun, dass ich diese Daten bearbeiten möchte. Dazu ist es notwendig die Daten wieder in eine UserForm zu laden, zu ändern und zu speichern (In die Tabelle zu übertragen). Kann mir bitte jemand von euch dabei helfen? Ich bin noch ein sehr blutiger Anfänger was VBA anbelangt. Das Ganze ist für eine Gute Sache und soll unserer Feuerwehr zu Gute kommen.
Danke im Voraus,
Dieter
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 13:13:05
Oberschlumpf
Hi Dieter,
du müsstest uns schon per Upload eine Bsp-Datei zeigen, in der genügend Bsp-Daten in den richtigen Zellen enthalten sind.
Und auch dein Userform + Code muss enthalten sein.
Denn wenn nur eines davon fehlt, wie sollen wir helfen?
Da wir nicht wissen, wie deine Datei aufgebaut ist (welche Zeilen/Spalten werden genutzt), wie ist dein Userform aufgebaut (werden Combo- und Listboxen oder gar nix von dem verwendet), weiß zumindest ich nicht, wie ich helfen könnte.
Ciao
Thorsten
Anzeige
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 13:47:42
Daniel
Hi
erster wichtiger Tipp:
das hier: https://online-excel.de/excel/singsel_vba.php?f=4
lesen, verstehen, anwenden.
damit solltest du das Makro, das du schon hast, zum laufen bringen.
Gruß Daniel
Anzeige
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 14:05:58
Dieter
Der Fehler ist mir bekannt. In der UserForm selbst ist noch ein VBA versuch von mit hinterlegt. Deswegen öffnet die Form nicht!
Ich lade alles nochmals hoch:)
https://www.herber.de/bbs/user/155627.xlsm
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 14:56:38
Nepumuk
Hallo Dieter,
würden die TextBoxen in derselben Reihenfolge stehen wie die Spalten, dann wäre es ein Dreizeiler.

Option Explicit
Private Sub CmBSpeichern_Click()
Cells(Selection.Row, 2).Value = TextBox1.Text
Cells(Selection.Row, 3).Value = TextBox4.Text
Cells(Selection.Row, 4).Value = TextBox3.Text
Cells(Selection.Row, 5).Value = TextBox2.Text
Cells(Selection.Row, 6).Value = TextBox11.Text
Cells(Selection.Row, 7).Value = TextBox6.Text
Cells(Selection.Row, 8).Value = TextBox7.Text
Cells(Selection.Row, 9).Value = TextBox10.Text
Cells(Selection.Row, 10).Value = TextBox8.Text
Cells(Selection.Row, 11).Value = TextBox9.Text
Cells(Selection.Row, 11).Value = Date
End Sub
Private Sub UserForm_Initialize()
TextBox1.Text = Cells(Selection.Row, 2).Text
TextBox4.Text = Cells(Selection.Row, 3).Text
TextBox3.Text = Cells(Selection.Row, 4).Text
TextBox2.Text = Cells(Selection.Row, 5).Text
TextBox11.Text = Cells(Selection.Row, 6).Text
TextBox6.Text = Cells(Selection.Row, 7).Text
TextBox7.Text = Cells(Selection.Row, 8).Text
TextBox10.Text = Cells(Selection.Row, 9).Text
TextBox8.Text = Cells(Selection.Row, 10).Text
TextBox9.Text = Cells(Selection.Row, 11).Text
End Sub
Gruß
Nepumuk
Anzeige
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 15:04:51
Dieter
DANKE !!!!! DU BIST EINFACH DER BESTE!!!!
DANKE VIELMALS!!!!
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 13:15:37
Daniel
HI
kommt darauf an.
wenn die Bearbeitung direkt erfolgen soll, kannst du einfach die Textbox mit der entsprechenden Zelle verknüpfen.
das geht beispielsweise so, hier wird Textbox1 mit der Zelle in der Spalte A der aktiven Zeile verknüpft:
dh der Wert wird sofort angezeigt und jede Textänderung sofort zurückgeschrieben, wenn du die Textbox verlässt, dh du brauchst keinen weiteren Code.

Textbox1.ControlSource = "A" & ActiveCell.Row
sollte das Rückschreiben erst auf Anforderung (Buttonklick) erfolgen, musst du erst einlesen:

Textbox1.Text = Cells(ActiveCell.Row, 1)
und dann wieder zurückschreiben

Cells(ActiveCell.Row, 1) = Textbox1.Text
Gruß Daniel
Anzeige
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 14:35:38
Dieter
Ich möchte in der Tabelle eine Zelle auswählen und daraus soll er mir alle Daten aus dieser Zeile in meine Textboxen in der Userform eintragen damit ich diese ändern und speichern kann.
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 14:39:16
Daniel
Naja, dazu dienen diese Codezeilen.
Was sie machen, habe ich beschrieben.
Jetzt musst du das in deinen Code einbauen.
Gruß Daniel
Anzeige
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 14:41:04
Dieter
Wäre es möglich, dass du mir dazu den ganzen Code schreibst. Ich bin wirklich blutiger Anfänger! Muss ich da ein Inizialise anlegen? Was muss ich dimensionieren?
AW: Daten aus aktiver Zeile in UserForm
12.10.2022 14:52:46
Daniel
Prinzipiell hättest du das doch schon in deiner Beispieldatei.
Da war nur der Tippfehler beim Variablennamen drin.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Daten aus aktiver Zeile in UserForm bearbeiten


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne Excel und gehe in den VBA-Editor (Alt + F11). Füge eine neue UserForm hinzu. Gestalte die UserForm mit TextBoxen für die Daten, die du bearbeiten möchtest.

  2. Code für das Laden der Daten: Nutze den folgenden VBA-Code, um die Daten aus der aktiven Zeile in die TextBoxen der UserForm zu laden:

    Private Sub UserForm_Initialize()
       TextBox1.Text = Cells(Selection.Row, 2).Text
       TextBox4.Text = Cells(Selection.Row, 3).Text
       TextBox3.Text = Cells(Selection.Row, 4).Text
       TextBox2.Text = Cells(Selection.Row, 5).Text
       TextBox11.Text = Cells(Selection.Row, 6).Text
       TextBox6.Text = Cells(Selection.Row, 7).Text
       TextBox7.Text = Cells(Selection.Row, 8).Text
       TextBox10.Text = Cells(Selection.Row, 9).Text
       TextBox8.Text = Cells(Selection.Row, 10).Text
       TextBox9.Text = Cells(Selection.Row, 11).Text
    End Sub
  3. Code zum Speichern der Daten: Füge den folgenden Code hinzu, um die Änderungen zurück in die Tabelle zu speichern:

    Private Sub CmBSpeichern_Click()
       Cells(Selection.Row, 2).Value = TextBox1.Text
       Cells(Selection.Row, 3).Value = TextBox4.Text
       Cells(Selection.Row, 4).Value = TextBox3.Text
       Cells(Selection.Row, 5).Value = TextBox2.Text
       Cells(Selection.Row, 6).Value = TextBox11.Text
       Cells(Selection.Row, 7).Value = TextBox6.Text
       Cells(Selection.Row, 8).Value = TextBox7.Text
       Cells(Selection.Row, 9).Value = TextBox10.Text
       Cells(Selection.Row, 10).Value = TextBox8.Text
       Cells(Selection.Row, 11).Value = TextBox9.Text
       Cells(Selection.Row, 11).Value = Date
    End Sub
  4. Form öffnen: Du kannst die UserForm durch einen Button auf dem Arbeitsblatt öffnen, indem du den folgenden Code verwendest:

    Sub UserFormAnzeigen()
       UserForm1.Show
    End Sub

Häufige Fehler und Lösungen

  • Fehler beim Öffnen der UserForm: Stelle sicher, dass alle benötigten Variablen richtig dimensioniert sind und kein Tippfehler im Code enthalten ist. In der UserForm sollten alle TextBoxen korrekt benannt sein.

  • Daten werden nicht gespeichert: Überprüfe, ob die Referenz auf die aktive Zeile korrekt ist. Verwende Selection.Row, um die aktuelle Zeile sicher zu erfassen.


Alternative Methoden

Eine alternative Methode ist, die TextBoxen direkt mit den Zellen zu verknüpfen. Dies kann durch den folgenden Code erreicht werden:

TextBox1.ControlSource = "A" & ActiveCell.Row

Damit wird der Wert aus der Zelle automatisch in die TextBox geladen und Änderungen werden sofort in die Zelle zurückgeschrieben.


Praktische Beispiele

Wenn du die UserForm für Adressdaten einer Feuerwehr verwendest, könntest du die TextBoxen so anpassen, dass sie spezifische Felder wie „Name“, „Adresse“, „Telefonnummer“ usw. abbilden. Jedes Mal, wenn eine Zeile ausgewählt wird, kannst du die entsprechenden Daten in die TextBoxen laden und bearbeiten.


Tipps für Profis

  • Verwenden von Klassenmodulen: Wenn du häufig UserForms erstellst, erwäge die Nutzung von Klassenmodulen, um deine Formulare besser zu organisieren und wiederverwendbare Funktionen zu erstellen.

  • Automatisierung des Versands: Wenn du ein einzelnes Tabellenblatt per Mail versenden möchtest, kannst du die SendMail-Methode verwenden, um den Versand zu automatisieren. Dies kann besonders nützlich sein, um regelmäßige Berichte zu versenden.


FAQ: Häufige Fragen

1. Wie kann ich die UserForm automatisch öffnen, wenn ich eine Zeile auswähle?
Du kannst das Worksheet_SelectionChange-Ereignis verwenden, um dies zu erreichen. Füge den folgenden Code in das Arbeitsblattmodul ein:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A2:A100")) Is Nothing Then
        UserFormAnzeigen
    End If
End Sub

2. Was mache ich, wenn ich einen Fehler in meinem VBA-Code habe?
Überprüfe deinen Code sorgfältig auf Schreibfehler und unvollständige Anweisungen. Nutze den Debugger im VBA-Editor, um den Fehler zu identifizieren und zu beheben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige