Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Suchen & Ersetzen anhand bestimmten Wert

VBA - Suchen & Ersetzen anhand bestimmten Wert
23.04.2018 15:53:00
Marco
Hallo Forumsmitglieder,
ich stehe leider vor einem Problem, dass ich nicht alleine gel?st bekomme und ersuche eure Hilfe!
Ich habe zwei Excel Tabellen mit Daten. Die erste Tabelle soll alle Daten anzeigen und gesperrt sein (das klappt). Die zweite Tabelle enth?lt Daten die nur f?r bestimmte Personengruppen durch einen Login angezeigt werden und bearbeitet werden k?nnen (das klappt auch und wird eingelesen).
Nun m?chte ich die bearbeitet Daten speichern indem ich in der ersten Spalte eine ID-Nummer habe, die sich mit der ID-Nummer im ersten Tabellenblatt deckt. Nun soll das VBA Programm Schritt f?r Schritt die ID-Nummern aus dem zweiten Blatt im ersten Tabellenblatt suchen und die gesamte Zeile ?berschreiben.
Ich habe folgendes in VBA programmiert (die ID entspricht den Spalten und ist im ersten Blatt um eins h?her wie im Zweiten - nur so habe ich es hinbekommen. Lieber w?re eine echte Suche und Abgleich). Bekomme jedoch den Fehler: Laufzeitfehler 438 - Objekt unterst?tzt Eigenschaft oder Methode nicht.
Leider verstehe ich nicht, was ich falsch gemacht habe, da VBA Anf?nger.
Der Command Button soll nur die Suchen und Ersetzen Funktion testen. Alles andere funktioniert und ist wo anders implementiert.
Private Sub CommandButton1_Click()
Dim letzteZeile As Long
Dim letzteZeile2 As Long
Dim i As Long
Dim Vergleich As Long
Dim Vergleich2 As Long
letzteZeile = Worksheets("Overview").Cells(Rows.Count, 1).End(xlUp).Row 'nennt letzte Zeile in  _
Tabelle 1
letzteZeile2 = Worksheets("Filter").Cells(Rows.Count, 1).End(xlUp).Row  'nennt letzte Zeile in  _
Tabelle 2
For i = 3 To letzteZeile2 'ab Zeile 3 werden alle gefilterten Elemente aus Tabelle 1 kopiert -  _
z.B. alle Werte von Abteilung A
Vergleich = Cells(i, 1).Value 'gibt Wert der Zeile aus Tabelle 2 aus
Vergleich2 = Vergleich + 1 'ID in Tabelle 1 um eins gr??er als in Tabelle 2
Worksheets("Filter").Range("A" & i & ":H" & i).Copy 'kopiert die Spalte
Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2).Paste 'soll Kopie f?r  _
die Spalte einf?gen - besser w?re eine echte Suchfunktion wo der Wert "Vergleich" auch verglichen wird.
Next i
End Sub

����������������������������������������������������������������������������������?ber eure Hilfe bin ich sehr dankbar.
Viele Gr??e ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Suchen & Ersetzen anhand bestimmten Wert
23.04.2018 20:06:15
Matthias
Moin!
Laut Hilfe solltest du die Zeile so schreiben
Worksheets("Overview").Paste Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2)

Alternativ kannst du es auch so schreiben
Worksheets("Filter").Range("A" & i & ":H" & i).Copy Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2)

VG
Anzeige
AW: VBA - Suchen & Ersetzen anhand bestimmten Wert
24.04.2018 10:34:19
Marco
Guten Morgen,
vielen Dank f?r deine schnelle Hilfe.
Die L?sung funktioniert! Klasse!
Gibt es eine sch?nere L?sung als eine for-Schleife zu nutzen?
Hier springt er ja f?r jede Zeile zwischen den Tabellen hin und her.
Beispiel:
1. Tabelle ID: 1,2,3,4,5,6,7,8,9,10
2. Tabelle ID gefiltert nach Abteilung: 1,4,7,9
Nur Zeilen mit der ID in Spalte A 1,4,7,9 ersetzen.
Anzeige
AW: VBA - Suchen & Ersetzen anhand bestimmten Wert
24.04.2018 21:40:02
Matthias
Moin!
Also man k?nnte auch die Quelldatei nach deinen IDs filtern und dann den verbliebenen Bereich kopieren und in die Datei einf?gen. Falls aber eine ID mal fehlt, werden die Werte ?berschrieben.
Altern. kann man auch den Quellbereich in eine Variable einlesen, den Ziel bereich Dito. Dann den Vergleich im Speicher vornehmen lassen und alles mit einmal zur?ckschreiben. Das w?rde zwar auch mit for SChleifen laufen, aber das zeileweise hin- und herspringen entf?llt. Dadurch wird das alles schneller.
VG
Anzeige
VBA - Suchen & Ersetzen anhand bestimmten Wert
23.04.2018 15:53:00
Marco
Hallo Forumsmitglieder,
ich stehe leider vor einem Problem, dass ich nicht alleine gel?st bekomme und ersuche eure Hilfe!
Ich habe zwei Excel Tabellen mit Daten. Die erste Tabelle soll alle Daten anzeigen und gesperrt sein (das klappt). Die zweite Tabelle enth?lt Daten die nur f?r bestimmte Personengruppen durch einen Login angezeigt werden und bearbeitet werden k?nnen (das klappt auch und wird eingelesen).
Nun m?chte ich die bearbeitet Daten speichern indem ich in der ersten Spalte eine ID-Nummer habe, die sich mit der ID-Nummer im ersten Tabellenblatt deckt. Nun soll das VBA Programm Schritt f?r Schritt die ID-Nummern aus dem zweiten Blatt im ersten Tabellenblatt suchen und die gesamte Zeile ?berschreiben.
Ich habe folgendes in VBA programmiert (die ID entspricht den Spalten und ist im ersten Blatt um eins h?her wie im Zweiten - nur so habe ich es hinbekommen. Lieber w?re eine echte Suche und Abgleich). Bekomme jedoch den Fehler: Laufzeitfehler 438 - Objekt unterst?tzt Eigenschaft oder Methode nicht.
Leider verstehe ich nicht, was ich falsch gemacht habe, da VBA Anf?nger.
Der Command Button soll nur die Suchen und Ersetzen Funktion testen. Alles andere funktioniert und ist wo anders implementiert.
Private Sub CommandButton1_Click()
Dim letzteZeile As Long
Dim letzteZeile2 As Long
Dim i As Long
Dim Vergleich As Long
Dim Vergleich2 As Long
letzteZeile = Worksheets("Overview").Cells(Rows.Count, 1).End(xlUp).Row 'nennt letzte Zeile in  _
Tabelle 1
letzteZeile2 = Worksheets("Filter").Cells(Rows.Count, 1).End(xlUp).Row  'nennt letzte Zeile in  _
Tabelle 2
For i = 3 To letzteZeile2 'ab Zeile 3 werden alle gefilterten Elemente aus Tabelle 1 kopiert -  _
z.B. alle Werte von Abteilung A
Vergleich = Cells(i, 1).Value 'gibt Wert der Zeile aus Tabelle 2 aus
Vergleich2 = Vergleich + 1 'ID in Tabelle 1 um eins gr??er als in Tabelle 2
Worksheets("Filter").Range("A" & i & ":H" & i).Copy 'kopiert die Spalte
Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2).Paste 'soll Kopie f?r  _
die Spalte einf?gen - besser w?re eine echte Suchfunktion wo der Wert "Vergleich" auch verglichen wird.
Next i
End Sub

����������������������������������������������������������������������������������?ber eure Hilfe bin ich sehr dankbar.
Viele Gr??e ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
Anzeige
AW: VBA - Suchen & Ersetzen anhand bestimmten Wert
23.04.2018 20:06:15
Matthias
Moin!
Laut Hilfe solltest du die Zeile so schreiben
Worksheets("Overview").Paste Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2)

Alternativ kannst du es auch so schreiben
Worksheets("Filter").Range("A" & i & ":H" & i).Copy Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2)

VG
Anzeige
AW: VBA - Suchen & Ersetzen anhand bestimmten Wert
24.04.2018 10:34:19
Marco
Guten Morgen,
vielen Dank f?r deine schnelle Hilfe.
Die L?sung funktioniert! Klasse!
Gibt es eine sch?nere L?sung als eine for-Schleife zu nutzen?
Hier springt er ja f?r jede Zeile zwischen den Tabellen hin und her.
Beispiel:
1. Tabelle ID: 1,2,3,4,5,6,7,8,9,10
2. Tabelle ID gefiltert nach Abteilung: 1,4,7,9
Nur Zeilen mit der ID in Spalte A 1,4,7,9 ersetzen.
Anzeige
AW: VBA - Suchen & Ersetzen anhand bestimmten Wert
24.04.2018 21:40:02
Matthias
Moin!
Also man k?nnte auch die Quelldatei nach deinen IDs filtern und dann den verbliebenen Bereich kopieren und in die Datei einf?gen. Falls aber eine ID mal fehlt, werden die Werte ?berschrieben.
Altern. kann man auch den Quellbereich in eine Variable einlesen, den Ziel bereich Dito. Dann den Vergleich im Speicher vornehmen lassen und alles mit einmal zur?ckschreiben. Das w?rde zwar auch mit for SChleifen laufen, aber das zeileweise hin- und herspringen entf?llt. Dadurch wird das alles schneller.
VG
Anzeige
;

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

VBA Suchen & Ersetzen: Schritt-für-Schritt-Anleitung


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge eine neue Module hinzu: Rechtsklicke im Projektfenster und wähle "Einfügen" -> "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton1_Click()
       Dim letzteZeile As Long
       Dim letzteZeile2 As Long
       Dim i As Long
       Dim Vergleich As Long
       Dim Vergleich2 As Long
    
       letzteZeile = Worksheets("Overview").Cells(Rows.Count, 1).End(xlUp).Row ' Letzte Zeile in Tabelle 1
       letzteZeile2 = Worksheets("Filter").Cells(Rows.Count, 1).End(xlUp).Row   ' Letzte Zeile in Tabelle 2
    
       For i = 3 To letzteZeile2 ' Ab Zeile 3 werden alle gefilterten Elemente aus Tabelle 1 kopiert
           Vergleich = Worksheets("Filter").Cells(i, 1).Value ' Wert der Zeile aus Tabelle 2
           Vergleich2 = Vergleich + 1 ' ID in Tabelle 1 um eins größer als in Tabelle 2
           Worksheets("Filter").Range("A" & i & ":H" & i).Copy
           Worksheets("Overview").Range("A" & Vergleich2 & ":H" & Vergleich2).PasteSpecial Paste:=xlPasteValues ' Kopie für die Spalte einfügen
       Next i
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Füge einen Command Button hinzu: Gehe zu "Entwicklertools" -> "Einfügen" und wähle einen Button aus.

  6. Verknüpfe den Button mit dem Makro, das du gerade erstellt hast.


Häufige Fehler und Lösungen

  • Laufzeitfehler 438: Dieser Fehler tritt auf, wenn du versuchst, eine Methode oder Eigenschaft zu verwenden, die nicht unterstützt wird. Achte darauf, dass du die richtigen Objekte verwendest und die Syntax korrekt ist. Überprüfe die Zeilen, in denen Worksheets und Range verwendet werden.

  • Fehler bei der ID-Suche: Wenn die IDs in den beiden Tabellen nicht übereinstimmen, kann es zu Problemen kommen. Stelle sicher, dass die IDs im "Filter"-Tab korrekt gesetzt sind und den Werten im "Overview"-Tab entsprechen.


Alternative Methoden

Wenn du eine elegantere Lösung ohne Schleifen suchst, kannst du eine Array-basierte Methode in Betracht ziehen. Hierbei lädst du die Daten beider Tabellen in Arrays und führst den Vergleich im Speicher durch. Dies ist in vielen Fällen schneller.

Dim arrOverview As Variant
Dim arrFilter As Variant
Dim i As Long

arrOverview = Worksheets("Overview").Range("A1:H" & letzteZeile).Value
arrFilter = Worksheets("Filter").Range("A1:H" & letzteZeile2).Value

' Hier kannst du nun die IDs vergleichen und die Werte aktualisieren

Praktische Beispiele

Angenommen, du hast die folgenden IDs in deiner "Overview"-Tabelle:

ID Name
1 Max
2 Julia
3 Leon

Und in der "Filter"-Tabelle:

ID Name
1 Max
4 Sarah

Wenn du die IDs 1 und 4 in der "Overview"-Tabelle aktualisieren möchtest, wird die ID 1 beibehalten und die neue Zeile für ID 4 wird hinzugefügt oder ersetzt.


Tipps für Profis

  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Fehler abzufangen. Zum Beispiel:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Verwende PasteSpecial anstelle von Paste, um nur Werte zu kopieren, was häufig effizienter ist.

  • Halte deinen Code sauber und gut kommentiert, um die Wartung und das Verständnis zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich die Geschwindigkeit des Codes verbessern? Vermeide, die Excel-Oberfläche während der Ausführung zu aktualisieren. Verwende:

Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True

2. Welche Excel-Version benötige ich für VBA? VBA ist in den meisten modernen Excel-Versionen verfügbar, darunter Excel 2010, 2013, 2016, 2019 und Microsoft 365.

3. Was tun, wenn die IDs in verschiedenen Formaten vorliegen? Stelle sicher, dass die IDs in beiden Tabellen im gleichen Format (z.B. Zahl oder Text) vorliegen. Du kannst die ID in VBA mit CStr() oder CInt() konvertieren, um sicherzustellen, dass sie übereinstimmen.

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