Neue Tabelleneinträge synchronisieren

VBA und Makros
Codeschnipsel
Arbeitsblatt
Ergänzen
Tabellen
Excel

Ausgangslage - Was tut dieser Code-Schnipsel?

Folgende Situation: Sie haben eine Quell-Tabelle und möchten gerne alle Einträge (anhand einer ID Spalte zu erkennen), die nicht in der Ziel-Tabelle enthalten sind, dort ergänzend anhängen.

Zur Verdeutlichung einmal die Quell-Tabelle (Ausgangslage) und die gewünschte Ziel-Tabelle (vor und nach dem Makrodurchlauf).

Quell-Tabelle:

  A B C D E
 1  ID Spalte Text Zahl und weitere Spalten           
 2  1 Beispiel ABC 44 ...  
 3  2 Mustertext 66 ...  
 4  3 Neuer Eintrag 1 55 ...  
 5  4 Neuer Eintrag 2 21 ...  
 6           

Ziel-Tabelle (vorher):

  A B C D E
 1  ID Spalte Text Zahl und weitere Spalten           
 2  1 Beispiel ABC 44 ...  
 3  2 Mustertext 66 ...  
 4           

Und das Ergebnis nach dem Makrodurchlauf sollte so aussehen:

Ziel-Tabelle (nachher):

  A B C D E
 1  ID Spalte Text Zahl und weitere Spalten           
 2  1 Beispiel ABC 44 ...  
 3  2 Mustertext 66 ...  
 4  3 Neuer Eintrag 1 55 ...  
 5  4 Neuer Eintrag 2 21 ...  
 6           

Die letzen beiden Zeilen der Quell-Tabelle fehlen und werden durch das Makro in der Ziel-Tabelle ergänzt.

Für diese Ergänzungsaufgabe finden Sie folgend ein Beispielmakro.

Der Quelltext

Option Explicit
' Original-Quelltext unter: https://www.online-vba.de/neue-tabelleneintraege-synchronisieren
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de

Public Sub OVBAde_TabellenEintraegeErgaenzen()
  Dim lQuellZeile As Long
  Dim lZielZeile As Long
  Dim lSpalte As Long
  Dim lEinfuegeZeile As Long
  Dim oQuelle As Object
  Dim oZiel As Object
  Dim bFlag As Boolean
  Dim sVergleichQuelle As String
  Dim sVergleichZiel As String
  
    Set oQuelle = Sheets("Tabelle1")
    Set oZiel = Sheets("Tabelle2")
    
    Application.ScreenUpdating = False 'Flackern ausschalten
    
    'Ergänzung starten...
    For lQuellZeile = 2 To oQuelle.UsedRange.Rows.Count + oQuelle.UsedRange.Row - 1
    
        bFlag = False
       
        'Prüfen ob die ID schon in der Ziel-Tabelle vorhanden ist...
        For lSuchZeile = 2 To oZiel.UsedRange.Rows.Count + oZiel.UsedRange.Row - 1
           sVergleichQuelle = CStr(oQuelle.Cells(lQuellZeile, 1).Text)
           sVergleichZiel = CStr(oZiel.Cells(lSuchZeile, 1).Text)
           If LCase(Trim(CStr(sVergleichQuelle))) = LCase(Trim(CStr(sVergleichZiel))) Then
                bFlag = True
                Exit For
           End If
        Next lSuchZeile
       
        'Prüfergebnis entscheidet ob bereits vorhanden oder eine neue Zeile angelegt werden muss
        If bFlag = True Then
            'Bereits vorhanden
        Else
            'Zeile als neu unten anhängen
            lEinfuegeZeile = (oZiel.UsedRange.Rows.Count + oZiel.UsedRange.Row - 1) + 1
            For lSpalte = 1 To 4 'Spalten 1 bis 4 werden ohne Formate übertragen
                oZiel.Cells(lEinfuegeZeile, lSpalte) = oQuelle.Cells(lQuellZeile, lSpalte)
            Next lSpalte
        End If
        
    Next lQuellZeile 'Nächsten Eintrag der Quell-Tabelle verarbeiten...
    
    'Aufräumen
    Application.ScreenUpdating = True
    Set oZiel = Nothing
    Set oQuelle = Nothing
End Sub

Anmerkungen und Hinweise

Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2017.
Die Nutzung erfolgt auf eigene Gefahr. Bitte denken Sie immer zuerst an eine ausreichende Datensicherung. Wir können keinen kostenlosen Support anbieten. Es gelten unsere Nutzungs­bedingungen.


So einfach läuft unsere VBA-Expresshilfe ab

1
Senden Sie uns Ihre Office-Datei oder Ihren VBA-Code (gerne anonymisiert) mit einer kurzen Problembeschreibung oder Ihrem Erweiterungswunsch per E-Mail.
2
Wir analysieren Ihr Anliegen schnell und schicken Ihnen umgehend (tagsüber meist innerhalb von 1-2 Stunden) ein Festpreis-Angebot.
3
Nach Ihrer Zustimmung lösen wir Ihr Problem (meist noch am gleichen Tag) oder setzen Ihre Erweiterung zuverlässig um – inklusive verständlicher Dokumentation der durchgeführten Maßnahmen.

Jetzt kontaktieren!







Mit einem * gekennzeichnete Eingabefelder sind Pflichtfelder.
Datenschutzhinweise zum Kontaktformular: Die von Ihnen im Kontaktformular bereitgestellten Daten werden ausschließlich zur Bearbeitung Ihrer Anfrage verwendet und nicht ohne Ihre Zustimmung an Dritte weitergegeben. Ihre Daten werden nur für den Zeitraum gespeichert, der zur Bearbeitung Ihrer Anfrage erforderlich ist. Weitere Hinweise zum Datenschutz finden Sie in unserer Datenschutzerklärung.
Hinweis: Für die vollständige Funktion dieser Website ist JavaScript erforderlich.
Bitte aktivieren Sie JavaScript in Ihrem Browser, um alle Inhalte und interaktiven Funktionen nutzen zu können.