Sortierung Tabellenausschnitt über VBA

12/02/2008 - 11:31 von Tom | Report spam
Guten Tag,

mal wieder ne Frage.

Ich habe eine Excel Tabelle die folgendermaßen aussieht.



Reichweite Lieferant Lieferanten Nr. Rückstand

-11 Lieferant 91012305 4339
-7 Lieferant 91012305 974
-7 Lieferant 91012305 1600
9 Lieferant 91012305
11 Lieferant 91012305
16 Lieferant 91012305
70 Lieferant 91012305
Summe 6913

Dies ist ein Ausschnitt mit den Werten eines Lieferanten,
es gibt noch viele Lieferanten, die untereinander aufgegliedert sind
nach den einzelnen Lieferpositionen (Teil Nr.)

Im Laufe des Tages (nach Anlieferungen des Lieferanten) àndern sich
die Reichweiten.
Jetzt will ich z.b. in der 3. Zeile den Wert "-7" àndern und gebe 10
ein.
Nach dem Ändern dieses Wertes sollte über ein VBA Code der Ausschnitt
neu sortiert werden, d.h. also, das VBA muss erkennen, dass über der
geànderten
Zelle zwei Zeilen sind unter unter der geànderten Zelle noch vier
Zeilen sind
die mitsortiert werden müssen, aber nur diese Zellen. Es dürfen keine
Zellen
anderen Lieferanten geàndert werden.
Wie kann ich sowas bewerkstelligen?

Über Eure Hilfe bin ich sehr dankbar.

Gruß

Tom
 

Lesen sie die antworten

#1 Lorenz Hölscher
12/02/2008 - 12:56 | Warnen spam
Hallo Thomas,

ich habe mal was gebastelt. Die Idee ist:
- mit AutoFilter diesen Bereich filtern
- den verbleibenden Bereich mit CurrentRegion markieren
- darin sortieren
- und alles wieder wegschalten.

So sàhe eine erste Quick&Dirty-Skizze aus:
____________________________
Sub SortiereDies()
Dim rngHier As Range
Dim rngStart As Range
Dim lngZeilen As Long
Dim strSort As String

Set rngStart = ActiveCell
strSort = ActiveCell.Value
Selection.AutoFilter Field:=2, Criteria1:=strSort
Set rngHier = Selection.CurrentRegion
lngZeilen = rngHier.Rows.Count
Set rngHier = rngHier.Offset(1, 0)
Set rngHier = rngHier.Resize(lngZeilen - 1, rngHier.Columns.Count)

rngHier.Sort Key1:=rngStart.Offset(0, -1).Range("A1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
rngHier.CurrentRegion.AutoFilter Field:=2
End Sub
___________________________________

Das Makro geht derzeit davon aus, daß die markierte Zelle den zu
filternden Eintrag ("Lieferant") enthàlt und links davon der zu
sortierende Wert steht. Außerdem muß die offensichtlich vorhandene
Leerzeile unter der Titelzeile entfernt werden, sonst funktionieren
die Excel-Automatiken wie CurrentRegion oder Sort nicht.

Die Summe habe ich in meinem Beispiel auch entfernt. Mach wenigstens
eine Leerzeile dazwischen, sonst riskierst Du immer, daß sie
automatisch mitsortiert wird!

tschö, Lorenz
http://www.cls-software.de/cls_soft...elVBA.aspx

Ähnliche fragen