AW: Zellwerte in fremder Tabelle abbilden
24.03.2007 10:44:23
fcs
Hallo Mark,
es ist relativ aufwendig die Übersichtsliste zu aktualiseren in Anhängigkeit von Ereignissen/Aktivitäten in den Tabellen mit den Daten. Es müssen dann mehrere Sachen überprüft werden, damit die Daten immer in den korrekten Zeilen eingetragen werden.
Einfacher ist es die gesamte Liste immer dann zu aktualiiseren, wenn das Blatt mit der Liste ausgewählt wird.
Den Code fügst du im VBA-Editor unter der Tabelle ein, in der die Liste erstellt werden soll.
Im Code muss du die Zeilen zum Auslesen der Zellen anpassen/ergänzen und ggf. den Wert für die Startzeile (z.Zt. = 3) anpassen.
Gruß
Franz
Private Sub Worksheet_Activate()
'Code wird beim Anwählen des Tabellenblatts ausgeführt
Call BlattdatenAktualisieren(Me.Name, 3) ' 3 = Startzeile für Eintragen der Daten
End Sub
Sub BlattdatenAktualisieren(Blattname As String, Zeile1 As Integer)
'Daten aus den anderen Tabellenblättern werden als Liste im Blatt eingetragen
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Dim Zeile As Long, Spalte As Integer
Set wksZiel = ThisWorkbook.Worksheets(Blattname)
Application.ScreenUpdating = False
With wksZiel
'Alte Daten in der Liste löschen
If .Cells.SpecialCells(xlCellTypeLastCell).Row >= Zeile1 Then
.Range(.Cells(Zeile1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).ClearContents
End If
'Tabellenblätter auslesen
Zeile = Zeile1
For Each wksQuelle In ThisWorkbook.Worksheets
If wksQuelle.Name wksZiel.Name Then
'Werte aus den Zellen übertragen (Diese Zeilen entsprechend anpassen)
.Cells(Zeile, 1).Value = wksQuelle.Range("B3").Value 'Name
.Cells(Zeile, 2).Value = wksQuelle.Range("A3").Value 'Vorname
.Cells(Zeile, 3).Value = wksQuelle.Range("C3").Value 'Strasse
.Cells(Zeile, 4).Value = wksQuelle.Range("C4").Value 'PLZ
.Cells(Zeile, 5).Value = wksQuelle.Range("C5").Value 'Ort
.Cells(Zeile, 6).Value = wksQuelle.Range("B5").Value 'Telefonnummer
Zeile = Zeile + 1
End If
Next wksQuelle
'Datensortieren nach Spalte 1 und 2
.Range(.Cells(Zeile1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Sort _
Key1:=.Cells(Zeile1, 1), Order1:=xlAscending, Key2:=.Cells(Zeile1, 2), _
Order2:=xlAscending, Header:=xlNo
End With
Application.ScreenUpdating = True
End Sub