Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verknüpfung von zwei Zellen auf zwei Tabellenblättern

Verknüpfung von zwei Zellen auf zwei Tabellenblättern
10.11.2023 11:08:15
Koko23
Hallo zusammen!
Ich beschäftige mich seit einigen Tagen intensiv mit VBA und möchte mir hier an einem Beispielprojekt einige Kenntnisse erarbeiten. Jetzt hänge ich aber fest und komme nicht weiter...

Mein Ziel:
Ich möchte auf einem Tabellenblatt, dass ich als aktives Tabellenblatt hinterlege, eine Verlinkung zu einem Tabellenblatt herstellen, dass sich "Übersicht" nennt. Dieses "Übersichts"-Tabellenblatt soll mein Quellblatt sein. Auf diesem "Übersichts"-Blatt habe ich zuvor einige andere Aktionen ausgeführt und referenziere mich hierbei immer auf eine zu Beginn beliebig angewählte Zelle, die ich als "Quellzelle" definieren möchte.

Der Inhalt dieser Quellzelle soll mit der dem Inhalt der Zelle B1 auf meinem aktiven Tabellenblatt verknüpft werden, so dass bei Änderungen des Inhalts in der Quellzelle auf dem "Übersichts"-Blatt sich auch automatisch der Inhalt in dieser Zelle B1 auf dem anderen Tabellenblatt verändert.

Ich habe hierzu mit viel Recherche etc. versucht einen Code zu schreiben, der wie folgt aussieht (Ausgangspunkt ist das Übersicht-Tabellenblatt):

Sub Verknüpfung()

Dim QuellBlatt As Worksheet
Dim ZielBlatt As Worksheet
Dim QuellZelle As Range

Set QuellZelle = ActiveCell
Set QuellBlatt = ThisWorkbook.Sheets("Übersicht")

Sheets("Tabellenblatt2").Select
Set ZielBlatt = ActiveSheet

ZielBlatt.Range("B1").Formula = "=" & QuellBlatt.Name & "!" & QuellZelle.address(External:=True)

End Sub


Dieser Code funktioniert aber nicht und ich komme nicht auf den Fehler.... Kann mir hier einer weiterhelfen?

Danke schon mal im Voraus!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
10.11.2023 11:16:14
MCO
Deine Quellzelle ist auf dem Aktiven Blatt, das aber weiter untern Zielblatt ist.
du musst quellzelle auf das richtige Sheet referenzieren

Sub Verknüpfung()

Dim QuellBlatt As Worksheet
Dim ZielBlatt As Worksheet
Dim QuellZelle As Range

Set QuellBlatt = ThisWorkbook.Sheets("Übersicht")
Set QuellZelle = QuellBlatt.ActiveCell

Set ZielBlatt = ThisWorkbook.Sheets("Tabellenblatt2")

ZielBlatt.Range("B1").Formula = "=" & QuellBlatt.Name & "!" & QuellZelle.Address(External:=True)
End Sub


Select kann für die Funktion komplett entfallen.

Gruß, MCO
Anzeige
AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
10.11.2023 13:32:02
Koko23
Hey MCO,

vielen Dank schon mal für deine schnelle Nachricht! Irgendwas scheint aber noch nicht ganz richtig zu sein...
Ich wähle zu Beginn eine Zelle auf dem Quellsheet per Mausklick an und dann soll dieses Programm durchlaufen, nach dem ich gefragt habe. Ausgehend von dieser angewählten Zelle soll ein Bereich im QuellBlatt formatiert werden, deswegen auch "A1:B4"), das hat auch soweit alles schon funktioniert. Ich habe den von dir geschickten Code - danke für die Erklärung, das war einleuchtend! - jetzt in mein bestehendes Programm eingebaut, das sieht jetzt folgendermaßen aus (nur der Anfangsausschnitt, nicht das ganze Programm):



Sub Verknüpfung()
'
Dim QuellZelle As Range
Dim QuellBlatt As Worksheet
Dim ZielBlatt As Worksheet

ActiveCell.Offset(0, 0).Range("A1:B4").Select

Set QuellBlatt = ThisWorkbook.Sheets("Prozessübersicht")
Set QuellZelle = QuellBlatt.ActiveCell



Ich bekomme aber jetzt eine Fehlermeldung, bei der die Zeile Set QuellZelle = .... markiert wird. In der Fehlermeldung steht "Methode oder Datenobjekt nicht gefunden".... Kannst du mir hier nochmal weiterhelfen? Vielleicht ist meine Syntax falsch...

Nochmal ein Beispiel, um meine Anwendung vielleicht nochmals genauer zu erläutern:
Ich möchte z.B. die Zelle D1 auf dem QuellBlatt anwählen, von der ausgehend wird dann der Bereich D1:G2 formatiert - das habe ich schon.
Außerdem wird automatisch ein neues Tabellenblatt erstellt - das habe ich auch schon, funktioniert einwandfrei.
Und auf diesem neu erstellen Tabellensheet (das jetzt aktiv ist) soll dann eine Verknüpfung erstellt werden, die die im QuellBlatt ausgewählte Zelle D1 (könnte auch jede andere beliebige Zelle sein) als Quellzelle verwendet und als Zielzelle die Zelle B1 (immer B1!) auf dem neu erstellen, aktiven Tabellenblatt nutzt.

Gibt es zur Umsetzung dieses Problems nochmal Hilfe von euch? Vielen Dank!
Anzeige
AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
10.11.2023 18:36:05
Piet
Hallo

Set Anweisung mit ActiveCell, das gefällt mir garnicht! Da bekommt Excel sicher "Bauchschmerzen"
Probiere es lieber mit einer Variablen als QAdr. AUf Offset(0,0) kannst du verzichten. Altertnativ geht auch Resize!

mfg Piet

  • Sub test3()
    QAdr = ActiveCell.Range("A1:B4").Address
    MsgBox QAdr
    'alternativ gehts auch mit Resize, 4 Zeilen, 2 Spalten
    QAdr = ActiveCell.Resize(4, 2).Address
    MsgBox QAdr
    Set QuellBlatt = ThisWorkbook.Sheets("Prozessübersicht")
    Set Quellzelle = QuellBlatt.Range(QAdr)
    MsgBox Quellzelle.Address
    End Sub
  • Anzeige
    AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
    11.11.2023 09:53:10
    GerdL
    Moin,
    was du schon hast u. nicht zeigst, können wir nicht mit einbauen.
    If ActiveCell.Parent.Name = "Prozessübersicht" Then
    
    ThisWorkbook.Sheets("Tabellenblatt2").Range("B1").Formula = "=" & ActiveCell.Address(external:=True)
    End If

    Gruß Gerd
    AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
    12.11.2023 18:16:32
    Koko23
    Hier ist nochmal mein (fast) vollständes Programm... Ich habe nur einen relativ umfangreichen Teil mit '... herausgelassen, bei dem zahlreiche Formatierungen etc. durchgeführt werden. Diese funktionieren bereits und die bringen keinen Mehrwert bei der Lösung meines Problems.
    Ich habe den Hinweis mit QAdr=... von Piet eingearbeitet, das funktioniert - vielen Dank dafür!

    Mein Problem ist aber leider immer noch nicht gelöst... es funktioniert alles einwandfrei, bis auf die Erstellung der Verknüpfung, als letztlich die letzten beiden Zeilen in meinem Code vor dem End Sub. Hier bekomme ich weiterhin eine Fehlermeldung und die Verknüpfung kann nicht automatisch erstellt werden.
    Kann mir hier nochmal einer weiterhelfen, warum die Verknüpfung von der Quellzelle zur Zelle B1 auf dem neu generierten Sheet nicht funktioniert und dementsprechend der Inhalt der Quellzelle nicht in der Zelle B1 abgebildet wird?


    Sub Verknüpfung()

    Dim QuellZelle As Range
    Dim QuellBlatt As Worksheet
    Dim ZielBlatt As Worksheet


    QAdr = ActiveCell.Range("A1:B4").address

    Set QuellBlatt = ThisWorkbook.Sheets("Prozessübersicht")
    Set QuellZelle = QuellBlatt.Range(QAdr)

    'nachfolgend: Formatierung eines Bereichs auf der Übersichtsseite (Größe: 2 auf 4 Zellen), die aktive Zelle ist hierbei die Zelle oben links in diesem Bereich
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.149998474074526
    .PatternTintAndShade = 0
    End With
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.Offset(-1, 0).Range("A1:B1").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlDot
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    ActiveCell.Offset(1, 0).Range("A1:B3").Select
    With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    Selection.Merge
    ActiveCell.Range("A1:B3").Select
    ActiveCell.FormulaR1C1 = ""
    ActiveCell.Offset(-1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = ""
    ActiveCell.Select
    With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    ActiveCell.Offset(1, 0).Range("A1:B3").Select
    With Selection
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = True
    End With
    With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = True
    End With


    'automatisch neues Sheet generieren und ganz rechts als Tabellenblatt einfügen
    Sheets.Add After:=Sheets(Sheets.Count)

    ActiveCell.Offset(0, 1).Range("A1").Select
    'Range("b2").Value = varZelle
    ActiveCell.Offset(1, 0).Range("A1").Select

    ' Tabellenlayout einfügen
    'nachfolgend: Formatierung einer Tabelle
    '....
    ' hier das Ende der hier weggelassenen Formatierungen
    'Range("B8:B10").Font.Bold = True
    'Range("B13:B15").Font.Bold = True


    'Erstellen einer Verknüpfung zwischen ursprünglich aktiver Zelle ("Quellzelle") auf dem Sheet "Prozessübersicht" mit der Zelle B1 auf diesem neu hinzugefügten Sheet
    'in der Zelle B1 soll der Inhalt der Quellzelle wiedergegeben werden und bei Veränderungen am Inhalt der Quellzelle sich dann auch der Inhalt der verknüpften B1 Zelle ändern

    Set ZielBlatt = activeSheet

    ZielBlatt.Range("B1").Formula = "=" & QuellBlatt.Name & "!" & QuellZelle.address(external:=True)


    End Sub




    Vielen Dank an alle hilfsbereiten Köpfe hier in diesem Forum für eure Mühen!
    Anzeige
    AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
    13.11.2023 10:53:21
    Piet
    Hallo

    ich musste es selbst erst mal testen und sage dir wie ich sowas mache.
    Bei Formeln die nicht klappen setzte ich vor "=" ein " ' =" und lasse die Formel als Text einfügen. Dann sieht man schnell was nicht stimmt.
    Bei deiner Version wir nach = das Prozessblatt gesetzt, gefolgt vom kompletten Pfad mit Adresse für QuellZell.Address! Teste es bitte selbst!
    Die Lösung bei mir ist so - ZielBlatt.Range("B1").Formula = "=" & QuellZelle.Address(external:=True)

    mfg Piet
    AW: Verknüpfung von zwei Zellen auf zwei Tabellenblättern
    13.11.2023 15:01:08
    Koko23
    Vielen Dank für den tollen Tipp und die Unterstützung - es hat jetzt geklappt!

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige