AW: Verknüpfung die 2.
17.09.2010 03:00:31
fcs
Hallo Andreas,
am saubersten wäre eine Lösung, wenn du in der Übersicht in einer Spalte auch den Tabellennamen der anderen Blätter einträgst.
Dann kann man das Makro so einrichten, dass bei Änderungen in der Übersicht der Tabellenname in der Zeile ausgelesen wird und dann der eingegeben Wert in Spalte C in die Zelle C2 des Blattes eingetragen wird.
Umgekehrt kann bei Änderung in der Zelle C2 eines Blattes in der Übersicht die Zeile mit dem Tabellennamen gesucht werden und der Name aus C2 in der Spalte C der gefundenen Zeile eingetragen werden.
Wenn du die Werte nach dem Schema
Blatt2 - C2 --- Übersicht - C2
Blatt3 - C2 --- Übersicht - C3
Blatt4 - C2 --- Übersicht - C4
usw.
abgleichen willst, dann funktioniert nachfolgendes. Du Darfst dann aber neue Blätter immer nur als letztes Register einfügen, sonst stimmt die Datenzuordnung zwischen Übersicht und Listen nicht mehr!!!
Gruß
Franz
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Zeile As Long, Spalte As Long, sZelle As String
If Target.Cells.Count>1 Then Exit Sub '
Application.EnableEvents = False
Select Case Sh.Index
Case 1 'Änderung in Sammelliste
If Target.Row >= 2 And Target.Row "" Then
Sheets(Target.Row).Range(sZelle).Value = Target.Value
End If
End If
Case 2 To Me.Sheets.Count 'Listenblätter - Blatt 2 bis letztes Blatt
Zeile = Sh.Index
Spalte = 0
Select Case Target.Address
Case "$B$2": Spalte = 2 'ID-Nr.
Case "$C$2": Spalte = 3 'Start-Modell
Case "$B$4": Spalte = 4 'Kategorie
Case "$C$4": Spalte = 5 'Modell
End Select
If Spalte 0 Then Sheets(1).Cells(Sh.Index, Spalte).Value = Target.Value
End Select
Application.EnableEvents = True
End Sub
'Beispiel, wenn Blattnamen der Listenblätter in Spalte A der Sammelliste eingetragen sind.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Zeile As Long, Spalte As Long, sZelle As Long
If Target.Cells.Count > 1 Then Exit Sub 'Nur abgleichen, wenn 1 Zelle geändert wurde
Application.EnableEvents = False
Select Case Sh.Index
Case 1 'Änderung in Sammelliste
If Target.Row >= 2 And Target.Row "" Then
Sheets(Sh.Cells(Target.Row, 1).Value).Range(sZelle).Value = Target.Value
End If
End If
Case 2 To Me.Sheets.Count 'Listenblätter - Blatt 2 bis letztes Blatt
'Tabellenblattname in Spalte 1 der Sammelliste suchen
If Sheets(1).Columns(1).Find(what:=Sh.Name, LookIn:=xlValues, _
lookat:=xlWhole) Is Nothing Then
MsgBox "Blatt """ & Sh.Name & """ ist noch nicht in Sammelliste eingetragen!"
Else
Zeile = Sheets(1).Columns(1).Find(what:=Sh.Name, LookIn:=xlValues, lookat:=xlWhole).Row
Spalte = 0
Select Case Target.Address
Case "$B$2": Spalte = 2 'ID-Nr.
Case "$C$2": Spalte = 3 'Start-Modell
Case "$B$4": Spalte = 4 'Kategorie
Case "$C$4": Spalte = 5 'Modell
End Select
If Spalte 0 Then Sheets(1).Cells(Zeile, Spalte).Value = Target.Value
End If
End Select
Application.EnableEvents = True
End Sub