Microsoft Excel

Herbers Excel/VBA-Archiv

Verknüpfung zweier Reiter

Betrifft: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 07.08.2014 09:01:43

Hallo zusammen,

ich muss zwei Reiter miteinander verknüpfen, und zwar: Der 1.Reiter ist eine Liste, die ein Mitarbeiter mit Daten füllt, auf dem 2. Reiter ist ein Formular mit bestimmten Daten (Zellen) des 1. Reiters. Jetzt sollen diese beiden Reiter miteinander verknüpft werden, sodass im 2. Reiter immer der Wert erscheint, von der Zeile die gerade angeklickt ist auf dem 1. Reiter. Also kann ich ja nicht einfach mit "=" verknüfen, da sich die Zeile ja immer ändert.

Kann mir jemand weiterhelfen?

Danke und Grüße

Alexa

  

Betrifft: AW: Verknüpfung zweier Reiter von: Dieter Klemke
Geschrieben am: 07.08.2014 11:27:02

Hallo Alexa,

da wirst du wohl VBA brauchen.
Lade doch mal eine Beispielmappe hoch. Daten verändert und/oder anonymisiert.

Viele Grüße
Dieter


  

Betrifft: AW: Verknüpfung zweier Reiter von: JoWE
Geschrieben am: 07.08.2014 11:37:43

Hallo Alexa,

lass die neuen Daten doch einfach immer in die gleiche Zeile schreiben.

So würde es klappen:
Es wird immer zunächst auf der 2. Zeile eine neue Zeile eingefügt. Dadurch wird die Zeile 2 leer, weil ja die zuvor aktive (und gefüllte) Zeile dann um eine Zeile nach unten gerutscht ist. Dann erst werden die neuen Daten in der leeren Zeile2 erfasst. In der Formulartabelle kannst Du dann die Bezüge absolut eintragen.

Gruß
Jochen


  

Betrifft: AW: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 07.08.2014 12:28:14

Ich habs momnetan so gelöst, dass ich eine Zeile in eine Hilfstabelle kopieren..jetzt muss ich den Code nur noch so umschreiben, dass statt : Rows("2:2").Select
die momentan angeklickte Zeile ausgewählt wird. WIe kann ich das machen?

Danke;-)


  

Betrifft: AW: Verknüpfung zweier Reiter von: Dieter Klemke
Geschrieben am: 07.08.2014 13:00:37

Hallo Alexa,

eine Beispieldatei wäre nicht schlecht gewesen.
Ich habe mal ein ganz einfaches Beispiel gebastelt, an dem du das Prinzip siehst.
Das VBA-Programm ist eine Worksheet_SelectionChange-Prozedur, die im Codemodul des 1. Tabellenblattes steht (Doppelklick im Projektexplorer auf "Tabelle1 (Reiter 1)":

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim ws2 As Worksheet
  Dim aktZeile As Long
  
  Set ws2 = ThisWorkbook.Worksheets("Reiter 2")
  If Target.Rows.Count > 1 Then Exit Sub
  aktZeile = Target.Row
  ws2.Range("B3") = aktZeile
  ws2.Range("B6") = Me.Cells(aktZeile, "A")
  ws2.Range("D6") = Me.Cells(aktZeile, "B")
End Sub
Die Datei findest du hier:
https://www.herber.de/bbs/user/91951.xls

Viele Grüße
Dieter


  

Betrifft: AW: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 07.08.2014 13:06:35

Du hast genau das getroffen was ich brauche..vielen Dank schon mal für deine Mühe...ich werds jetzt übertragen und schau dann ob es funktioniert


  

Betrifft: AW: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 07.08.2014 13:56:35

Also es funktioniert. Vielen vielen Dank...aber leider hab ich jetzt immer noch ein Problem, und zwar hab ich einige Felder die ich ankreuzen kann durch einen Doppelklick. leider wird dieses Kreuz nicht übernommen..wie kann ich das lösen?

Die Kreuze habe ich so programmiert:

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean)
    Dim RaBereich As Range
    Set RaBereich = Range("BB2:BK1000000")
    If Not Intersect(Target, RaBereich) Is Nothing Then
      If Target.Borders(xlDiagonalDown).LineStyle = 1 Then
        With Target
          .Borders(xlDiagonalDown).LineStyle = xlNone
          .Borders(xlDiagonalUp).LineStyle = xlNone
        End With
      Else
        With Target
          .Borders(xlDiagonalDown).LineStyle = xlContinuous
          .Borders(xlDiagonalDown).Weight = xlThick
          .Borders(xlDiagonalUp).LineStyle = xlContinuous
          .Borders(xlDiagonalUp).Weight = xlThick
        End With
       End If
       Cancel = True
      End If Set RaBereich = Nothing
End Sub



  

Betrifft: AW: Verknüpfung zweier Reiter von: Dieter Klemke
Geschrieben am: 07.08.2014 15:14:59

Hallo Alexa,

wohin sollen die Kreuze übertragen werden?
Falls sie genau in die entsprechenden Zellen übertragen werden sollen, dann könnte das so aussehen:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim RaBereich As Range
  Dim ws2 As Worksheet
  
  Set RaBereich = Range("BB2:BK1000000")
  If Not Intersect(Target, RaBereich) Is Nothing Then
    If Target.Borders(xlDiagonalDown).LineStyle = 1 Then
      With Target
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
      End With
    Else
      With Target
        .Borders(xlDiagonalDown).LineStyle = xlContinuous
        .Borders(xlDiagonalDown).Weight = xlThick
        .Borders(xlDiagonalUp).LineStyle = xlContinuous
        .Borders(xlDiagonalUp).Weight = xlThick
      End With
     End If
     Cancel = True
    End If
  Set RaBereich = Nothing
  Set ws2 = ThisWorkbook.Worksheets("Reiter 2")
  Target.Copy
  ws2.Range(Target.Address).PasteSpecial Paste:=xlPasteFormats
  Application.CutCopyMode = xlCut
End Sub
Viele Grüße
Dieter


  

Betrifft: AW: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 08.08.2014 08:58:54

Hey;-)
Das hat nun auch funktionier. Nur werden alle 10 Kreuze gleichzeitig übertragen. Und sobald ich eins weg mach im 1.Reiter ist keines mehr imm 2.Reiter. Und außerdem funktioniert das nur für die erste Zeile, und nicht für die aktuell angeklickte.

Danke schonmal


  

Betrifft: AW: Verknüpfung zweier Reiter von: Dieter Klemke
Geschrieben am: 08.08.2014 13:25:32

Hallo Alexa,

tatsächlich war in dem Programm noch ein Fehler. Die Formatübertragung per Doppelklick sollte nur in dem angegebenen Bereich "BB2:BK1000000" stattfinden.
Das Programm sieht dann so aus (den o.g. Bereich habe ich durch "F1:H6" ersetzt):

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim RaBereich As Range
  Dim ws2 As Worksheet
  
'  Set RaBereich = Range("BB2:BK1000000")
  Set RaBereich = Range("F1:H6")
  If Not Intersect(Target, RaBereich) Is Nothing Then
    If Target.Borders(xlDiagonalDown).LineStyle = 1 Then
      With Target
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
      End With
    Else
      With Target
        .Borders(xlDiagonalDown).LineStyle = xlContinuous
        .Borders(xlDiagonalDown).Weight = xlThick
        .Borders(xlDiagonalUp).LineStyle = xlContinuous
        .Borders(xlDiagonalUp).Weight = xlThick
      End With
    End If
    Cancel = True
    Set ws2 = ThisWorkbook.Worksheets("Reiter 2")
    Target.Copy
    ws2.Range(Target.Address).PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = xlCut
  End If
  Set RaBereich = Nothing
End Sub

Deine Aussage mit den 10 Kreuzen verstehe ich allerdings nicht. Wie sieht denn dein Programm aus?
Ich lade dir mal meine Testmappe hoch:
https://www.herber.de/bbs/user/91971.xls

Viele Grüße
Dieter


  

Betrifft: AW: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 08.08.2014 14:21:49

Hey;-)
Diese Sache habe ich jetzt auch Lösen können. Allerdings ist natürlich noch ein Problem aufgetreten:einen Moment, ich mache dir mal ein Beispiel.


  

Betrifft: AW: Verknüpfung zweier Reiter von: Alexa
Geschrieben am: 08.08.2014 14:40:32

https://www.herber.de/bbs/user/91975.xlsm

So, hier meine Beispieldatei

In Tabelle 1 in der 1.Zeile wird einfach bestimmt was eingegeben werden soll: unter a ganz normale Daten wie Datum, Name... unter b diese "Kreuze"

Wird dann eine bestimmte Zeile angeklickt, so werden die relevanten daten in die Tabelle 2 übertragen.
Hier stört mich:

1. dass der Rahmen bei den b -werten verschwindet, da ich in Tabelle 1 bei den b werten ja keinen habe
und
2. dass beim Aktualisieren (also beim Anklicken einer neuen Zeile der cursor in irgendeiner zelle stehen bleibt, und nicht in der Spalte A

Verstehst du was ich meine?

Danke und liebe Grüße

Alexa


  

Betrifft: AW: Verknüpfung zweier Reiter von: Daniel
Geschrieben am: 08.08.2014 14:42:22

Hi

ich würde das so lösen:

1. ins SelectionChange-Event des Reiters1 kommt folgender Code (Tabnamen ggf anpassen, statt Zelle A1 eine andere freie Zelle wählen, falls diese belegt ist)

Sheets("Reiter2").Cells(1, 1).Value = ActiveCell.Row
2. im Formlular in Reiter2 liest du dann die Werte mit folgender Formel (Spalte dann jeweils anpassen):
=Index(Reiter2!A:A;$A$1;1)
das Ankreuzproblem löst du, in dem du zum Anreuzen einfach ein "X" in die Zelle schreibst anstatt die Diagonalen Rahmenlinien zu setzen.
Das X kannst du mit der Formel auslesen.
Wenn dir die Rahmenlinien optisch besser gefallen, dann kannst du diese ja immer noch über die Bedingte Formatierung erstellen.

Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Verknüpfung zweier Reiter"