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.

kopierte Daten überprüfen (VBA)
#1
Moin!

Ich habe ein Dokument mit drei Blättern, alle sind komplett unterschiedlich aufgebaut und haben verschieden strukturierte Tabellen. 

Nun wird von Person A eine eigene Kopie dieses Dokuments mit Daten auf allen Blättern gefüllt. Person B bekommt eine leere Datei und soll nun auf Tabellenblatt 1 die Daten als Kopie der Datei von Person A einfügen. Damit das fehlerfrei funktioniert (Formeln würden beim einfachen Kopieren auf die andere Datei verweisen und damit unbrauchbar werden) habe ich das jetzt dank euch mit VBA umgesetzt:

Jeweils ein Button (Export) pro Blatt kopiert ganz einfach einen Bereich des entsprechenden Blattes (bzw. des entsprechenden Tabellenbereichs) in die Zwischenablage und im neuen Dokument werden die Daten mit wiederum einem Importbutton je Blatt eingefügt.

Das Problem, das jetzt dadurch entsteht: Kopiert man Daten aus der ersten Datei aus Tabellenblatt 1 und versucht sie fälschlicherweise in die andere Datei in Tabellenblatt 2 einzufügen, wird genau das auch von Excel durchgeführt. Dadurch werden Daten überschrieben, die gar nicht geändert werden sollten und es entsteht ein ziemliches Chaos.

Wie kann man das vermeiden? Gibt es eine Möglichkeit, vor dem Einfügen zu prüfen, ob die Daten in der Zwischenablage auch in dieses Tabellenblatt gehören? Die Tabellenblätter der Quell- und der Zieldatei haben die gleichen Namen. Kann man das zur Überprüfung nutzen?


Nochmal zusammengefasst:

Aktuelle Situation

Datei A
Tabellenblatt 1 (kopiert)
Tabellenblatt 2
Tabellenblatt 3

Datei B
Tabellenblatt 1
Tabellenblatt 2 (eingefügt)
Tabellenblatt 3

--> falsch eingefügt, Datei B Tabellenblatt 2 kaputt.


Ziel:

Datei A
Tabellenblatt 1 (kopiert)
Tabellenblatt 2
Tabellenblatt 3

Datei B
Tabellenblatt 1
Tabellenblatt 2 (versucht einzufügen)
Tabellenblatt 3

--> Fehlermeldung "Daten inkompatibel"



Danke vielmals und ein schönes Wochenende!  17
Antworten Top
#2
Hallo,

da würde ich zunächst einmal die Arbeitsweise überdenken. So ein hin- und her Geschiebe von Daten kann nicht richtig sein. Gleichartige Daten gehören auf ein Tabellenblatt.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
? Verstehe das Problem jetzt nicht. Excel gibt mir ja die Freiheit mit mehreren Blättern innerhalb eines Dokuments zu arbeiten, was ich auch mache, wenn es der Bedienung und Übersicht hilf, statt 3 verschiedene Tabellendokumente zu haben (was das Problem dadurch nicht aus der Welt schafft - ein falsches Kopieren/Einfügen wäre da genauso möglich).

Daher war die Frage ja "gibt es eine Möglichkeit, die einzufügenden Daten zu kontrollieren?"

Ich habe mir schon was überlegt und es funktioniert auch ganz gut: gesperrte Zellen, Blatt schützen. Ist eigentlich eher ungünstig, das Blatt zu sperren, aber vermutlich gibt es nichts besseres.
Antworten Top
#4
Hallo,

am besten zeigst du mal eine Beispieldatei, dann kann man konkrete Vorschläge machen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
Hier die Beispieldatei


.xlsm   Beispiel Kopierfehler.xlsm (Größe: 27,84 KB / Downloads: 12)
Antworten Top
#6
Hallo Sabotaz,

vielen Dank für das Einstellen der Beispieldatei. Leider hat sich dadurch nicht viel geklärt. Zunächst einmal zu deinen Makros: welchen Sinn macht es, etwas zu kopieren und an der gleichen Stelle wieder einzufügen?

Code:
Sub Kopieren_Übersicht()
'
' Kopieren_Übersicht Makro
'

'
    Sheets("Übersicht").Select
    Range("A2:F20").Select
    Range("F20").Activate
    Selection.Copy
End Sub
Sub Einfügen_Übersicht()
'
' Einfügen_Übersicht Makro
'

'
    Sheets("Übersicht").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Zusätzlich noch der Hinweis, dass die Select-Anweisung in aller Regel überflüssig ist. Das würde zum Beispiel als Kopier-Makro reichen:

Code:
Sub Kopieren_Übersicht()
'
' Kopieren_Übersicht Makro

    Sheets("Übersicht").Range("A2:F20").Copy
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#7
Danke, dass du dir die Datei anguckst. In einer Beispieldatei kann man mein Problem eben auch nicht besser verdeutlichen, als in einer Erklärung, daher habe ich es Anfangs gleich weggelassen...

Ich versuche es nochmal etwas genauer zu erklären:

Angenommen es gäbe 20 gleich aufgebaute Dateien wie meine Beispieldatei in einer Firma. Jede Datei wird von einer anderen Person betreut und ausgefüllt.

Nun kommt die Situation, dass Peter schon eine Weile damit arbeitet und Jens eine komplett frische Datei erhält. Peter stellt nun seine angelegten Inhalte aus seiner eigenen Datei seinem neuen Kollegen zur Verfügung und schickt ihm eine Kopie der Tabelle. Jens möchte sich gern aus dem Tabellenblatt "Übersicht" den Inhalt in seine eigene Datei übertragen. Macht er das manuell (Peters Datei öffnen, entsprechenden Bereich kopieren, in seiner Datei einfügen), werden die Formeln so verändert, dass sie auf Peters Datei verweisen und nicht auf die aktuell geöffnete von Jens.

Aus diesem Grund habe ich ein Makro aufgezeichnet, das für das Kopieren und Einfügen verwendet werden soll. Auf diese Weise bleiben die Formeln erhalten (so wie sie bei Peter waren), sobald sie wieder eingefügt werden und alles funktioniert, wie es soll.

Was jetzt noch das letzte eigentliche Problem ist: Der Inhalt der Zwischenablage kann auch in jedem anderen Tabellenblatt eingefügt werden und somit die Struktur der Datei zerstören.

Das will ich entweder technisch oder organisatorisch verhindern oder eben korrigieren.
Antworten Top
#8
Hallo,

ich sehe in der Datei keine einzige Formel, wo liegt also das Problem?

Wenn Du schon mit dem Button Einfügen arbeitest, dann gib dem Makro doch gleich den Befehl mit, die Zwischenablage zu leeren.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Verstehe ich auch nicht, warum keine Formeln mehr drin stehen... Hab per SVERWEIS die Teilenummern und Grund usw eigentlich verknüpft. Kann es daran liegen, weil ich zuerst die Datei erstellt habe und dann als xlsm abgespeichert habe?

Egal. Es geht nicht um den Inhalt der Zwischenablage oder um den Aufbau der Datei oder die existierenden Module. Das ist soweit ok und deshalb nicht die Frage. Es geht lediglich um die Möglichkeit, dass man das Tabellenblatt 1 kopiert und ausversehen diesen Inhalt dann in Tabellenblatt 2 einfügen kann. Nur um diesen Fehler geht es aktuell. Nur darum, dass verhindert werden soll, dass aus dem einen Dokument der Inhalt von Tabellenblatt 1 den Inhalt des Tabellenblatts 2 überschreibt, wenn man ausversehen auf "Einfügen" klickt, während man sich im falschen Blatt aufhält. 

Eine Beispieldatei kann das Problem nicht weiter verdeutlichen als die Erklärung selbst.
Antworten Top
#10
Hallo,

dann sprich doch direkt die entsprechenden Tabellen an. 
Im Übrigen mangelt es wohl an einer Menge Grundlagen in VBA. Was passiert, wenn eine Tabelle mal mehr als 20 Zeilen hat? Deine Makros kopieren nämlich nur 20 Zeilen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


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