[EXCEL VBA] Automatisches Erstellen einer Archive Tabelle

DAS2013

Newbie
Dabei seit
Sep. 2013
Beiträge
2
Erst mal hallo an die ganze Community hier!

Mein Einstiegsproblem ist schon mal ein schwieriges, ihr würdet mir jedoch sehr helfen meine Vorgesetzten zu beeindrucken.

Ich stehe vor einigen Herausforderungen, dies ist mal die Erste:

Ich habe eine Risikotabelle erstellt (sie Screenshot 1). Was ich jetzt Einbauen will ist eine Art Archivefunktion.

Soll bedeuten: Ich will das Excel mit Hilfe eines Macros die eingetragenen Risiken automatisch von Tabellenblatt 1 auf z.B. Tabellenblatt 3 kopiert.

Was ich jedoch ab der zweiten Eintrage Session will ist, dass das Macro in der Archiveliste checket, welche Risiko ID zuletzt abgelegt wurde (in unserem Fall wäre das die 10) und dann nur die Risiken überträgt, die nach Risiko ID 10 abgelegt wurden.

Der Grund hierfür ist, dass ich Anwendern zwar die Möglichkeit bieten möchte, nicht mehr relevante Risiken aus der Hauptliste zu löschen, diese Risiken jedoch weiterhin im Archive dokumentiert haben möchte.

Ich hoffe ihr könnte mir mit einem VBA Code helfen. Danke schon mal im Voraus!
Dieter

ExcelBsp.JPG
 

Syberdoor

Lieutenant
Dabei seit
Nov. 2005
Beiträge
662
das erscheint mir durchaus machbar. Du musst ja nur einmal durchzählen wieivele zeilen es wirklich gibt und dann kannst dus mit

Sheets("Original").Range(<dein ermittelter range>).Copy Sheets("Archiv").Range(<aktuell höchter eintrag +1>) rüberkopieren

Das mit der höchsten id kannst du während dem zählen der zeilen auch ermitteln. Du kannst zB statt einer direkten methode die dir die letzte zeile sagt durch alle zeilen durchiterieren und dir genau anschaun wie die ids sind verglichen mit denen im archiv. Die aktuell höchste archiv zeile kansnt du entweder auch jedesmal raussuchen oder immer irgendwo extra speichern.

eine Frage die du dir konzeptionell stellen musst ist, was wenn einer aus der "Live Liste" den allerneusten eintrag löscht? dann wird ja der nächste neue eintrag mit einer schon archivierten nummer erstellt.
 

DAS2013

Newbie
Ersteller dieses Themas
Dabei seit
Sep. 2013
Beiträge
2
Daran habe ich auch schon gedacht. Auch daran, was passiert wenn der letzte, schon ins Archiv übertragene Datensatz gelöscht wird, jedoch kein neuer angelegt wird. Wir dann die ganze Liste neu archiviert, da er ja keinen Anfangswert für den neuen Bereich hat?

Aber das sind Bugs und Details mit denen ich mich noch beschäftigen muss. Erstmal zu deinem Code: Ich bin ein absoluter Anfänger wenn es um VBA geht, daher habe ich ihn falsch eingebaut. Anbei sind 3 Screenshots (Mein Codingversuch, die Rangeauswahl des Zielbereichs und die Range des Bereichs welcher zu übertragen ist).

Wäre für eine Schritt für Schritt Hilfe Sehr dankbar!Macro1.JPGZielbereich1.JPGKopierbereich1.JPG
Ergänzung ()

Ich hab das Problem gefunden. Beim Coding habe ich das Problem das die Startingrange nicht verstanden wird.
Ich habe Sie wie folgt definiert:

=INDEX(Tabelle1!A1:A100;(VERGLEICH(INDEX(Tabelle2!A1:A100;ANZAHL2(Tabelle2!A1:A100);1);Tabelle1!A1:A100;0)+1);1):INDEX(Tabelle1!$A$1:$F$500;ANZAHL2(Tabelle1!$A$1:$A$500);6)

Meine Codes bleiben immer hängen, da die Range nicht erkannt/verstanden wird. Wo liegt mein Fehler?
 

Syberdoor

Lieutenant
Dabei seit
Nov. 2005
Beiträge
662
Ich bin leider auch kein Experte für VBA. Aber was ich so gelesen habe auf die schnelle kannst du einen Range aus dem Namens-Manager nicht einfach als String angeben.
Das wäre dann:

Sheets("Tabelle1").Range(ActiveWorkbook.Names("RskNeu")).Copy Sheets("Tabelle2").Range(ActiveWorkbook.Names(""ArchBer"))

Das Kopieren funktioniert wie das händische kopieren in excel auch.. die quelle muss auf jedenfall ein bereich sein, das ziel kann auch nur die "Startzelle" also die linkeste oberste zelle im neuen sheet sein wo der bereich hin muss
 
Top