Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Automatisches Übernehmen von neuen Datensätzen in Excel-Tabelle





Frage

Wir haben zwei Excel-Tabellenblätter: In das eine tragen verschiedene Nutzer nacheinander Daten ein. Jeder Nutzer löscht dabei die Daten seines Vorgängers. In das andere sollen die Daten durch eine entsprechende Verknüpfung oder ein Makro automatisch übernommen werden, und zwar so, dass die Datensätze der verschiedenen Nutzer entsprechend der Reihenfolge ihrer Eintragungen untereinander stehen. Während in der ersten Tabelle also nur der zeitlich letzte Eintrag steht, sind in der zweiten alle Einträge Zeile für Zeile aufgeführt. Wie lässt sich dieses Problem lösen?

Antwort 1 von rolandaa

hallo,
setze in deine tab1 eine schaltfläche mit "löschen", bei dessen klick die daten der zeile in deine tab2 abgelegt werden und anschließend in tab1 gelöscht werden.

folgendes makro für die löschschaltfläche:

Sub test()
Sheets("Tab1").Select
Range("A1:E1").Select ´zu kopierender Bereich
Selection.Copy
Sheets("Tab2").Select
Range("A1").Select
ActiveSheet.Paste
Rows("1:1").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Range("A1").Select
Sheets("Tab1").Select
Range("A1:E1").Select
Selection.ClearContents
Range("A1").Select
End Sub

mfg
roland

Antwort 2 von coros

Moin Saudado,

gestatte mir zum Anfang eine kleine Anmerkung. Ein Hallo am Anfang und ein Gruß am Ende würde Deinen Beitrag gleich viel netter aussehen lassen. Denn die Leute, an die Du Deine Frage richtest, sitzen zwar am PC, sind aber dennoch Menschen.

Nun zu Deiner Frage, Du hast ja durch Roland schon eine Lösung erhalten. Da diese aber bei großen Datenmengen leicht an die Leistungsgrenzen von Excel kommt, durch die vielen Select´s, (diese sollten vermieden werden, da das viele Select/ Markieren eine Unmenge Systemrecourcen verschlingt, diesen Tipp sollte sich auch Roland zu Herzen nehmen) kommt hier noch eine Lösung von mir, die um ein vielfaches Leistungssparender arbeitet. Füge nachfolgendes Makro in ein StandardModul ein und starte es über eine Schaltfläche.

Option Explicit

Sub Daten_kopieren_und_löschen()
Application.ScreenUpdating = False
Range(Cells(1, 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column)).Copy
Sheets("Tabelle2").Cells(Sheets("Tabelle2").UsedRange.Rows.Count + 1, 1).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range(Cells(1, 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column)).Clear
End Sub


Bei dem obigen Code wird ein Bereich kopiert und in das Blatt "Tabelle2" in die erste freie Zeile wieder eingefügt. Anschließend werden die Daten auf dem Quellblatt gelöscht. Der Bereich der kopiert wird, setzt sich aus der letzten beschriebenen Zeile und der letzten beschriebenen Spalte in dem Quellblatt zusammen. Ich habe das so gemacht, da Du keinerlei Bereichsangaben der zu kopierenden Daten und wo eingefügt werden soll, gemacht hast.
Du musst in dem VBA Code noch überall dort, wo der Name "Tabelle2" auftaucht den Namen des Blattes, in das kopiert werden soll, eintragen.

Ich hoffe, das Makro hilft Dir weiter. Bei Fragen, Problemen oder Änderungswünschen zu dem Makro melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: