AW: Tabellensortierung bei Neuberechnung
17.10.2007 11:47:00
duke7
so ganz verstehe ich es nicht.
aber alles der Reihe nach.
dein Makro müsst auch ohne die with und end with laufen. Die with anweisung wird eigentlich nur
benutzt um Code zu sparen. das heißt statt
sub test()
Workbooks("mappe4").Worksheets("Tabelle1") .Cells(1, 1) = 10
Workbooks("mappe4").Worksheets("Tabelle1") .Name = "Test"
End Sub
zu schreiben, schreibt man
Sub test()
With Workbooks("mappe4").Worksheets("Tabelle1")
.Cells(1, 1) = 10
.Name = "Test"
End With
End Sub
Hoffe es ist klar, ansonsten mal in der Hilfe nachschauen.
In deinem Makro wird aber nach der With-Anweisung gar kein Bezug mehr auf worksheets(1) genommen (steht ja nirgends nen einzelner Punkt). Daher gehts also auch ohne.
Zu deiner eigentlichen Frage:
Das Makro läuft, wenn etwas in einem Blatt geändert wird. Es liefert aber zugleich auch zwei Rückgabewerte. Einmal sh (das Tabellenblatt indem die Änderung vorgenommen wurde) und target (der Bereich in dem die Änderung vorgenommen wurde).
wird vielleicht klar wenn du das mal laufen läßt
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox ("Name des geänderten Blattes: " & Sh.Name & chr(13) & "Tabellenbereich: " & Target. _
Address)
End Sub
In deinem Makro wird derzeit also immer das Blatt sortiert, indem eine Änderung vorgenommen wurde.
Wenn du egal wo geändert wird, immer die selben Blätter sortieren willst, müßte die Anweisung
zb so lauten:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Worksheets("Tabelle1").Range("a2:j26").Sort Key1:=Worksheets("Tabelle1").Range("B1"), order1: _
=xlDescending
Worksheets("Tabelle2").Range("a2:j26").Sort Key1:=Worksheets("Tabelle2").Range("B1"), order1: _
=xlDescending
End Sub