Verknüpfung im Hintergrund einer Zelle erstellen
#1
Guten Tag,

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!

Gruß

HMA_01
Antworten Top
#2
Hallo!

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.

Liebe Grüße
Alex
Antworten Top
#3
Hallo Alex,

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? ?

Schöne Grüße

HMA_01
Antworten Top
#4
Guten Morgen HMA_01,

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. Huh 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.

Grüße, StefanB
Antworten Top
#5
Guten Abend StefanB,

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?

Gruß 

HMA_01
Antworten Top
#6
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.

Gruß Uwe


Angehängte Dateien
.xlsm   Verknüpfung im Hintergrund einer Zelle erstellen.xlsm (Größe: 18,44 KB / Downloads: 3)
Antworten Top
#7
Hallo,

vielen lieben Dank für die Lösung. Muss ich den Code nur im VBA hinterlegen und die jeweiligen Blatt Namen ergänzen oder…?

Gruß 

HMA_01
Antworten Top
#8
Hallo,

(21.08.2021, 11:10)HMA_01 schrieb: Muss ich den Code nur im VBA hinterlegen und die jeweiligen Blatt Namen ergänzen oder…?

ja, mehr ist nicht nötig.

Gruß Uwe
Antworten Top
#9
Vielen Dank!???
Antworten Top
#10
Guten Tag Uwe,

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!

Schöne Grüße
HMA_01
Antworten Top


Gehe zu:


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