ich habe ein kleines Problem und finde leider keine Lösung. Ich hoffe einer von euch hat eine Idee.
Ich möchte die Spalten I - L von Datei 1 mit den Spalten I - L von Datei 2 verknüpfen und umgekehrt. Heißt ich will, dass sich die Spalten gegenseitig aktualisieren, da es passieren kann, dass der Inhalt nur in einer Datei angepasst wird und ich nicht immer in beiden Dateien den Inhalt anpassen möchte.
Z. B.: Im Datei 1 Zelle I8 ist der neue Wert 11, dies soll auch in Datei 2 Zelle I8 erscheinen. Im Datei 2 Zelle K19 ist der neue Wert 28, dies soll auch im Datei 1 Zelle K19 erscheinen.
Würde es hier evtl. Sinn machen die Verknüpfung jeweils im Hintergrund zu hinterlegen? Wenn ja, wie mache ich das? Oder gibt es hierfür einen anderen Lösungsweg?
Vielen Dank im Voraus für die Vorschläge, ich wünsche euch einen schönen Tag!
Wenn du wirklich zwei Dateien meinst, ist das sehr umständlich, da müssen nämlich immer beide Dateien offen sein. Dazu kommt auch noch das Zirkelbezugsproblem. Das könnte man zwar manchmal mit Iteration umgehen, aber wirklich elegant ist das nicht.
wäre es dann besser die Dateien auf eine Datei umzuwandeln und eben zwei Blätter zu verwenden bzw. was wäre dein Vorschlag? Die zwei Dateien listen die Produkte von dem jeweiligen Marketplace auf, daher möchte ich ungern, dass alle Inhalte auf einem Blatt sind...
Genau, das Zirkelbezugsproblem möchte ich umgehend. Gibt es hier eine Möglichkeit? ?
nur zum Verständnis: Nehmen wir mal an Du beschränkst Dich auf 1 Datei mit beispielsweise 2 Tabellenblätter. Wenn im Blatt1 in Zelle A2 ein Wert eingetragen wird, soll der dann auch in A2 auf Blatt2 erscheinen, richtig? Was bedeuten würde, dass Zelle A2 von Blatt2 eine Formel benötigt um sich die Daten von Blatt1 Zelle A2 zu ziehen. Und andersrum genau das Gleiche. Wenn nun aber in A2 eine Formel steht, kann man keinen Wert eingeben. So wie ich das sehe, gehts nicht ohne Hilfsspalten...
Sollen denn die Werte überschrieben oder aufgelistet werden?
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
die Werte sollen aufgelistet werden und nur selten abgeändert bzw. Angepasst werden. Mit Hilfssplaten würde die Datei wahrscheinlich sehr unübersichtlich werden, daher versuche ich dem ganzen irgendwie zu umgehen?
21.08.2021, 00:15 (Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2021, 00:16 von Kuwer.)
Hallo,
(20.08.2021, 00:49)HMA_01 schrieb: wäre es dann besser die Dateien auf eine Datei umzuwandeln und eben zwei Blätter zu verwenden ...
ja, das wäre viel besser. Dann reicht dieser Code im schon vorhandenen VBA-Modul DieseArbeitsmappe:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 'hier die beiden Tabellennamen festlegen Const strBlatt1 As String = "Tabelle1" Const strBlatt2 As String = "Tabelle2"
Select Case Sh.Name Case strBlatt1, strBlatt2 If Not Application.Intersect(Target.Cells(1), Sh.Range("I:L")) Is Nothing Then On Error Resume Next Application.EnableEvents = False If Sh.Name = strBlatt1 Then Sheets(strBlatt2).Range(Target.Cells(1).Address).Value = Target.Cells(1).Value Else Sheets(strBlatt1).Range(Target.Cells(1).Address).Value = Target.Cells(1).Value End If Application.EnableEvents = True On Error GoTo 0 End If End Select End Sub
Die Datei muss als Makrodatei mit der Endung .xlsm gespeichert werden, da sonst alle Makros wieder gelöscht würden.
ich möchte mich nochmal für deine Hilfe bedanken. Anscheinend mache ich dennoch was falsch....
Ich hoffe du kannst mir noch einmal kurz aushelfen.
Also ich öffne Visual Basic und füge unter Tabelle 1 deinen Code ein. Daraufhin klicke ich auf Sub ausführen, woraufhin ich einen Makronamen ("Save") angeben musste. Nun hat sich ein neues Fenster geöffnet (Modul 1), worin bereits Sub Save () und End Sub steht. Wenn ich nun deinen Code dazwischen einfüge und am ende wieder Sub ausführen klicke, kommt die Meldung "End Sub wurde erwartet" und das "Sub Save ()" im Code wird mir gelb markiert.
Wenn ich den teil "Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)" und ein "End Sub" entferne und dann wieder Sub ausführen klicke kommt die Fehlermeldung "Laufzeitfehler "424"". Folgender Code:
Sub Save() Const strBlatt1 As String = "Lager München" Const strBlatt2 As String = "Lager AZ"
Select Case Sh.Name Case strBlatt1, strBlatt2 If Not Application.Intersect(Target.Cells(1), Sh.Range("I:L")) Is Nothing Then On Error Resume Next Application.EnableEvents = False If Sh.Name = strBlatt1 Then Sheets(strBlatt2).Range(Target.Cells(1).Address).Value = Target.Cells(1).Value Else Sheets(strBlatt1).Range(Target.Cells(1).Address).Value = Target.Cells(1).Value End If Application.EnableEvents = True On Error GoTo 0 End If End Select End Sub
Ich weiß leider nicht was genau ich falsch mache, aber ich komme nicht wirklich weiter ? Ich hoffe du kannst mir weiterhelfen. Vielen Dank im Voraus!