Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel VBA Worksheets synchronisieren





Frage

Guten Tag zusammen, Ich habe ein Problem bezüglich Worksheet synchronisation in Excel. Und zwar möchte ich dass der mir automatisch wenn ich in dem einen Worksheet was ändere, der das auch direkt nach Eingabe in dem anderen ändert, ohne dass ich dabei auf einen Knopf drücke zum ausführen eines Makros. Mein bisherige Lösung ist dass ich die wichtigen Spalten nach Knopfdruck synchronisiere. Fragen: Wie kann man auch den gesamten Inhalt eines Worksheets in einen anderen kopieren ohne dabei die Formatierung zu verliren? Wie starte ich ein Makro nach änderung eines Inhalts in einer Spalte? Bisherige Versuche: nach Knopfdruck kopiere Spalten: Sub ourSynch() ´Es werden die folgenden Spalten kopiert... ActiveWorkbook.Worksheets("STabelle1").Range("AY:AY", "AZ:AZ").Copy _ Destination:=ActiveWorkbook.Worksheets("STabelle2").Range("AY:AY", "AZ:AZ") Application.StatusBar = "Synchronisation " & " " & Date & " | " & Time MsgBox "Fertig! Daten wurden Synchronisiert!" End Sub Wie kann ich das auf eine/mehrere Spalte ausbauen? Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then MsgBox "Makro startet", , "Meldung" End Sub Bin für jeden Support dankbar

Antwort 1 von Saarbauer

Hallo,

wenn du alle Seiten auf denen deine Eintragungen erfolgen sollen aktivierst, geht mit Umschaltung oder Strg und aufTabellennamen klicken, dann werden die Daten u.ä. in allen Blättern gleichzeitig eingetragen

Gruß

Helmut

Antwort 2 von Booyeoo

Ja aber das wissen die User dieser Tabelle nicht :(
Aber danke, den Trick kannte ich auch noch nicht.
Möchte halt dass mein Makro nach EIngabe startet, oder dass der jetzt beim öffnen der Datei direkt diese beiden Sheets aktiviert hat.

Antwort 3 von Saarbauer

Hallo,

dann versuch es mal damit

Private Sub Workbook_BeforeClose(Cancel As Boolean) 

ActiveWorkbook.Worksheets("STabelle1").Range("AY:AY", "AZ:AZ").Copy _ 
Destination:=ActiveWorkbook.Worksheets("STabelle2").Range("AY:AY", "AZ:AZ") 
Application.StatusBar = "Synchronisation " & " " & Date & " | " & Time 
MsgBox "Fertig! Daten wurden Synchronisiert!" 
ThisWorkbook.Saved = True 
Application.Quit 

End Sub 


muss vielleicht angepasst werden

Gruß

Helmu

Antwort 4 von Event

Hallo
Das könnte so gehen..
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Tabelle2").Range(Target.Address) = _
Sheets("Tabelle1").Range(Target.Address)
End Sub

Gruß

Antwort 5 von Booyeoo

JUUHUUU, dickes Dank an Event.
soviele fragen mit 4 Zeilen haben sich erledigt :)

Vielen Dank auch an Saarbauer, aber das was Event mir geschickt hat ist genau was ich bruache.

Schönen Tag euch noch

DANKE!!!!

Antwort 6 von Booyeoo

dzzzzzz

Antwort 7 von Booyeoo

Hallo zusammen,
Das hat auch alles wunderbar geklappt, bis ich versucht habe Zeilen aus anderen Sheets einzufügen, denn dann passiert nix. Man kann zwar einzelne Felder kopieren aber ab 2 gehts nimmer.
Und der Zurückbutton funktioniert jetzt auch nicht mehr. Ich denke mal das liegt daran, dass es Ein "Worksheetmakro" ist und nicht ein "Modulmakro", oder?!

Gibt es dafür eine Lösung?

Antwort 8 von Event

Hallo

Du siehst das ziemlich richtig;
Zitat:
Wie starte ich ein Makro nach änderung eines Inhalts in einer Spalte?

Das Worlsheet_Change-Ereignis / Prozedur tritt und wirkt nur in dem Tabellenblatt auf, in dem der Code steht.

Adhoc Lösung: Das Makro in den Code Bereich der Anderen Tabellenblätter kopieren - oder Dein Vorhaben nachvollziehbar(er) darstellen.

Gruß

Antwort 9 von Booyeoo

Also habe eigentlich nur zwei Worksheets mit dem gleichen Inhalt. Die Spalten sind nur verschieden zurechtgerückt. D.h ist sehe auf beiden Worksheets verschiedene Daten, obwohl in beiden die gleichen drinnstehen, klingt komisch #, deswegen ein beispiel:
In worksheet 1 sehe ich die Spalten A B C D E F G .. bis AZ und in worsheet 2 sehe ich nur A B C und P und AZ.

und ich möchte eigentlich "nur" dass wenn ich jetzt in worksheet 1 was eintrage dass er mir das automatisch in worksheet 2 "synchronisiert."
Das Makro hat mir schon geholfen,

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Tabelle2").Range(Target.Address) = _
Sheets("Tabelle1").Range(Target.Address)
End Sub


jedoch entstehen dadurch ungewollte effekte:
- man kann den Rückgängigpfeil mehr benutzen (kann vernachlässigt werden)
- wenn ich jetzt aus worksheet x mehrere zellen mittels copy&paste in eine von den beiden worksheets reinkopiere dann nimmt der das gar nicht an. Thats strange. (luxus auf den ich nicht verzichten will)

PS:
Kann ich Eintrag 6 irgendwie löschen?
PS2: Kann man euch was spenden?

Antwort 10 von Event

Hallo

In den Code-Bereich von Tabelle1 kopierst Du:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Tabelle2").Range(Target.Address) = _
Sheets("Tabelle1").Range(Target.Address)
End Sub

Private Sub Worksheet_Deactivate()
Dim rng
Set rng = Range("$A$1:" & _ Cells(ActiveSheet.Rows.SpecialCells(xlCellTypeLastCell).Row, _
ActiveSheet.Columns.SpecialCells(xlCellTypeLastCell).Column).Address)
rng.Copy Destination:=Worksheets("Tabelle2").Range("A1")
End Sub


Das bewirkt, dass beim Verlassen (deactivate) des Tabellenblattes der gesamte benutze Bereich aus Tabelle1 nach Tabelle2 kopiert wird.

Gruß

Antwort 11 von Booyeoo

Danke dir Event, kann man dir was zu Weihnachten schicken oder so? Das hat mir sehr geholfen.

Der Trick mit Strg+ das andere Blatt ist auch sehr gut.
Dazu muss man ja allerdings einmal was drücken und man könnte es ja vergessen :)...

Schönen Tag und eine schöne Woche Dir und Saarbauer noch.