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 |
A | B | C | D | E | |
---|---|---|---|---|---|
1 | ID Spalte | Text | Zahl | und weitere Spalten | |
2 | 1 | Beispiel ABC | 44 | ... | |
3 | 2 | Mustertext | 66 | ... | |
4 |
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 |
Option Explicit
' ****************************************************************
' Autor/en und Original-Quelltext unter:
' https://www.online-vba.de/vba_tabellen1.php
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von https://www.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