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

Forumthread: Zeile finden und überschreiben VBA

Zeile finden und überschreiben VBA
19.08.2020 11:00:04
Anne
Hallo,
ich benötige einmal Ihre Hilfe und ich hoffe, Sie können mir helfen.
Ich ermittle mit Hilfe des Inhaltes einer Combobox eine Zeile in einer Tabelle. Die Daten werden aus der Zeile ausgelesen und in andere Comboboxen und Textboxen übertragen. Die gefüllten Comboboxen und Textboxen können geändert werden. Diese Änderungen sollen nun in die angesteuerte Zeile übertragen werden. allerdings ändert sich nur immer die erste Änderung und nicht alle, die ich mache.
Mit diesem Code fülle ich die Comboboxen:
Private Sub ComboBox_DSA_KFZKZ_Change()
'Userform je nach Kennzeichen füllen
If ComboBox_DSA_KFZKZ.Value = "" Then
ComboBox_DSA_RG.Value = ""
ComboBox_DSA_RT.Value = ""
Else
ComboBox_DSA_RG.Value = ComboBox_DSA_KFZKZ.Column(3)
ComboBox_DSA_RT.Value = ComboBox_DSA_KFZKZ.Column(4)
End If
End Sub
Mit diesem Code suche ich die entsprechende Zeile und versuche diese zu überschreiben:
Private Sub Uebertragung()
'Datensatz in Liste finden und überschreiben
Dim r As Integer
Sheets("Lager").Select
r = Me.ComboBox_AL_KFZKZ.ListIndex + 2
Cells(r, 4).Value = ComboBox_DSA_RG
Cells(r, 5).Value = ComboBox_DSA_RT
End Sub
Ich habe es auch mit einer "Schleife" probiert, allerdings weiß ich nicht, ob ich das richtig gemacht habe.
Private Sub Uebertragung()
'Datensatz in Liste finden und überschreiben
Dim r As Integer
With Worksheets("Lager")
For r = 2 To Me.ComboBox_DSA_KFZKZ.ListIndex + 2
Cells(r, 4).Value = ComboBox_DSA_RG
Cells(r, 5).Value = ComboBox_DSA_RT
Next r
End With
End Sub
Ich hoffe, mir kann jemand helfen.
Mit freundlichen Grüßen
Anne
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeile finden und überschreiben VBA
19.08.2020 17:47:30
onur
Damit man versteht, was du meinst, solltest du mal die (Beispiels-) Datei posten.
AW: Zeile finden und überschreiben VBA
19.08.2020 18:14:36
ralf_b
ich hätte auch gern ne datei aber ganz vorne weg.
wenn du die Zeilennummer schon hast, warum merkst du sie dir nicht in einer Variablen oder in einer deiner Listboxen als unsichtbare Spalte?
und was genau meinst du mit "ändert sich nur immer die erste Änderung und nicht alle, die ich mache."
Anzeige
AW: Zeile finden und überschreiben VBA
20.08.2020 19:40:44
ralf_b
da du deine Combobox mit rowsource füllst, bekommt deine combobox auch ein change ereignis aufgebrummt wenn du die Werte in die Tabelle zurückschreibst. Der Tabellenbereich ist mit der Combobox verknüpft.
ich habe dir eine alternative gebastelt. daran kannst du die interaktion hoffentlich gut erkennen.
es wird kein commandbutton benötigt. wenn du die Tabelle hinter der Userform2 sichtbar läßt dann siehst du die direkte Auswirkung der Eingaben in den Textboxen auf die Tabelle und die Listbox
https://www.herber.de/bbs/user/139737.xlsm
Anzeige
AW: Zeile finden und überschreiben VBA
20.08.2020 20:11:34
Anne
Guten Abend Ralf,
vielen Dank schon einmal für deine Hilfe!!
Ich hätte doch gerne den CommandButton als finale Bestätigung, um etwas in der Liste zu ändern, also im Prinzip die Änderungen erst übernehmen, wenn der Button angeklickt wird. Gibt es da keine Möglichkeit?
Liebe Grüße Anne
Anzeige
AW: Zeile finden und überschreiben VBA
20.08.2020 21:52:37
ralf_b
diese Funktionalität hasst du schon
und zwar habe ich in deine userform1 eine Variable eingebaut. Dim bAnpassenClick As Boolean
diese wirkt als Schalter im Change und click ereignis.
AW: Zeile finden und überschreiben VBA
20.08.2020 21:52:40
ralf_b
diese Funktionalität hasst du schon
und zwar habe ich in deine userform1 eine Variable eingebaut. Dim bAnpassenClick As Boolean
diese wirkt als Schalter im Change und click ereignis.
Anzeige
AW: Zeile finden und überschreiben VBA
20.08.2020 21:52:40
ralf_b
diese Funktionalität hasst du schon
und zwar habe ich in deine userform1 eine Variable eingebaut. Dim bAnpassenClick As Boolean
diese wirkt als Schalter im Change und click ereignis.
AW: Zeile finden und überschreiben VBA
20.08.2020 21:54:23
onur
Wieso drei mal ?
Wieso drei mal ?
Wieso drei mal ?
irgendwie hängt der browser manchmal owt
20.08.2020 21:58:56
ralf_b
is keine Absicht.
Anzeige
AW: irgendwie hängt der browser manchmal owt
21.08.2020 08:31:40
Anne
Hallo,
da war ich blind! Entschuldige, ich schaue mir das heute Abend noch einmal in Ruhe an! Vielen lieben Dank für die schnelle tadellose Hilfe!!
Liebe Grüße!
Anne
;

Forumthreads zu verwandten Themen

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

Zeile finden und überschreiben mit VBA in Excel


Schritt-für-Schritt-Anleitung

  1. Erstelle die Userform: Füge eine Userform in Deinem Excel-Arbeitsblatt hinzu und platziere die benötigten Steuerelemente wie ComboBoxen und TextBoxen.

  2. Fülle die ComboBox: Verwende den folgenden VBA-Code, um die ComboBox mit Daten zu füllen:

    Private Sub ComboBox_DSA_KFZKZ_Change()
       If ComboBox_DSA_KFZKZ.Value = "" Then
           ComboBox_DSA_RG.Value = ""
           ComboBox_DSA_RT.Value = ""
       Else
           ComboBox_DSA_RG.Value = ComboBox_DSA_KFZKZ.Column(3)
           ComboBox_DSA_RT.Value = ComboBox_DSA_KFZKZ.Column(4)
       End If
    End Sub
  3. Zeile finden und überschreiben: Verwende den folgenden Code, um die Zeile in der Tabelle zu finden und die Änderungen zu speichern:

    Private Sub Uebertragung()
       Dim r As Integer
       Sheets("Lager").Select
       r = Me.ComboBox_AL_KFZKZ.ListIndex + 2
       Cells(r, 4).Value = ComboBox_DSA_RG
       Cells(r, 5).Value = ComboBox_DSA_RT
    End Sub
  4. Berücksichtige mehrere Änderungen: Wenn Du mehrere Änderungen in einer Schleife speichern möchtest, kannst Du den Code wie folgt anpassen:

    Private Sub Uebertragung()
       Dim r As Integer
       With Worksheets("Lager")
           For r = 2 To Me.ComboBox_DSA_KFZKZ.ListIndex + 2
               Cells(r, 4).Value = ComboBox_DSA_RG
               Cells(r, 5).Value = ComboBox_DSA_RT
           Next r
       End With
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Nur die erste Änderung wird gespeichert: Dies kann daran liegen, dass die ComboBox mit einer Datenquelle verknüpft ist und die Änderung sofort die Werte aktualisiert. Überprüfe, ob das Change-Ereignis der ComboBox ordnungsgemäß behandelt wird.

  • Fehler: Zeile nicht gefunden: Stelle sicher, dass der Index der ComboBox korrekt ist und dass Du die richtigen Zeilen in der Tabelle ansprichst.


Alternative Methoden

  • Direkte Tabellenbindung: Anstatt Werte manuell zu kopieren, könntest Du die ComboBox direkt mit einer Datenquelle verknüpfen. Dadurch wird das Handling der Daten vereinfacht und Änderungen werden sofort in der Tabelle reflektiert.

  • Schaltfläche für die Bestätigung: Füge einen CommandButton hinzu, um Änderungen erst nach einem Klick zu speichern. Der Code könnte so aussehen:

    Private Sub CommandButton1_Click()
       Uebertragung
    End Sub

Praktische Beispiele

  • Beispiel für die Zeilenaktualisierung: Angenommen, Du hast eine Tabelle mit Fahrzeugdaten und möchtest die Angaben gemäß dem ausgewählten Fahrzeug in der ComboBox aktualisieren. Der oben angegebene Code sorgt dafür, dass die Daten in die entsprechenden Zellen übertragen werden.

  • Download von Beispieldateien: Du kannst von den im Thread erwähnten Links profitieren, um praktische Beispiele herunterzuladen und zu testen.


Tipps für Profis

  • Verwende Variablen: Halte die Zeilennummer in einer Variablen, um die Lesbarkeit des Codes zu verbessern.

  • Debugging: Nutze die Debugging-Funktionen von VBA, um den Code Schritt für Schritt zu durchlaufen und eventuelle Fehler leichter zu identifizieren.

  • Benutzerfreundlichkeit: Gestalte Deine Userform so, dass sie intuitiv bedienbar ist. Verwende klare Beschriftungen und Anweisungen für den Benutzer.


FAQ: Häufige Fragen

1. Wie kann ich die Userform speichern?
Um die Userform zu speichern, speichere einfach die Excel-Datei im .xlsm-Format, um die Makros zu behalten.

2. Kann ich mehrere Zeilen gleichzeitig aktualisieren?
Ja, indem Du eine Schleife in Deinem VBA-Code verwendest, kannst Du mehrere Zeilen gleichzeitig aktualisieren, wie im Abschnitt "Schritt-für-Schritt-Anleitung" beschrieben.

3. Wie kann ich die Combobox mit Werten aus einer anderen Tabelle füllen?
Du kannst die RowSource-Eigenschaft der ComboBox verwenden, um sie mit Werten aus einer anderen Tabelle zu füllen.

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