Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

prüfen on Einträge vorhanden
#1
Hallo Forum,

mit folgendem Code kopiere ich den Bereich A3:M2000 von Tabelle1
und füge Ihn an die nächste Leere Zeile in Tabelle2 an.
Wie müsste ich den Code optimieren, um vor dem Einfügen in Tabelle2
zu prüfen ob die Werte von Tabelle1 Spalte A3:A2000 bereits in Tabelle2 vorhanden sind.
Sind sie nicht vorhanden weiter mit einfügen der kopierten Daten,
sind sie vorhanden, MsgBox mit einer Meldung und Abbruch.


Code:
Sub Zeile_kopieren()
ActiveWorkbook.RefreshAll
'Bereich kopieren
Sheets("Tabelle1").Range("A3:M2000").Copy
'einfügen in erste freie Zeile in Tabelle2
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
'Kopiermodus beenden
Application.CutCopyMode = False
End Sub


Besten dank im Voraus
omron2003
Antworten Top
#2
Wie definierst du denn "schon vorhanden"?
- Ob in Tabelle2 schon irgendwelche Werte drinstehen?
- Ob dort exakt die gleichen Werte drinstehen?
- Was ist, wenn teilweise die gleichen Werte, teilweise andere Werte in Tabelle2 schon vorhanden sind?

Willst du womöglich aus Tabelle1 nur die Werte nach Tabelle2 kopieren, die dort noch nicht vorhanden sind?
Schöne Grüße
Berni
Antworten Top
#3
Tabelle1 ist eine Importtabelle (Externe txt-Datei wird immer neu in Tabelle1 importiert und die Werte in Tabelle1 überschrieben),
Den Inhalt von Tabelle1 kopiere ich nun mit dem Code nach Tabelle2 und füge die Daten an die letzte freie Zeile an.
Wird das Makro versehentlich ein zweites mal gestartet, werden die Daten doppelt angefügt, das möchte ich verhindern.

Ich suche nun eine Möglichkeit einfach zu prüfen ob ein Wert aus Spalte ab A3:A2000 von Tabelle1 schon in Tabelle2 vorkommt.
Somit möchte ich nur Einträge aus Tabelle1 nach Tabelle2 anfügen die noch nicht vorhanden sind.

Gruß
omron2003
Antworten Top
#4
Müssen wirklich sämtliche Werte auf Vorhandensein in Tabelle2 geprüft werden? Oder würde es ausreichen, nur den ersten Eintrag zu prüfen? Denn wenn das Makro irrtümlich 2 mal ausgeführt wird, dann wäre ja der erste Eintrag schon doppelt.
Oder kann der möglicherweise trotzdem schon in Tabelle2 sein, obwohl das Makro noch nie ausgeführt wurde (also aus einem früheren Import)?
Schöne Grüße
Berni
Antworten Top
#5
Es würde reichen wenn der erste Wert geprüft wir,
wäre der bereits vorhanden sind die anderen Werte logischerweise auch in Tabelle2 das stimmt.
Antworten Top
#6
Code:
Sub Zeile_kopieren()
Dim Suche As Range

ActiveWorkbook.RefreshAll

Set Suche = Sheets("Tabelle2").Columns(1).Find(what:=Sheets("Tabelle1").Range("A3"), lookat:=xlWhole)
If Suche Is Nothing Then
   Sheets("Tabelle1").Range("A3:M2000").Copy
   Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
Else
   MsgBox "Achtung, Werte wurden bereits kopiert! Kopieren wird abgebrochen."
End If

End Sub
Schöne Grüße
Berni
Antworten Top
#7
Super,
genau das was ich gesucht haben.


Code:
lookat: =xlWhole


Sucht bestimmte Informationen in einem Bereich ("Tabelle1").Range("A3")  wenn ich das richtig verstehe...

Nochmals besten Dank
omron2003
Antworten Top
#8
Nein, das verstehst du falsch. Du musst dir die ganze Zeile zu Gemüte führen.
Code:
Set Suche = Sheets("Tabelle2").Columns(1).Find(what:=Sheets("Tabelle1").Range("A3"), lookat:=xlWhole)
Suche in Tabelle2, Spalte 1
Find(what:= --> Suche nach dem Wert aus Tabelle1, Zelle A3
lookat:=xlWhole --> Suche in der Suchespalte nach der ganzen Zelle (und nicht nach Teilen davon)
Schöne Grüße
Berni
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste