VBA Sortieren

Bild

Betrifft: VBA Sortieren
von: Maya
Geschrieben am: 08.11.2015 10:01:14

Schönen guten Morgen,
sollte eine kleine Hilfestellung haben:
In meiner Tabelle A:G sind die Überschriften in Zeile 12, die Daten beginnen ab Zeile 13.
Mit dem Code kann ich nach der Spalte sortieren die ich gerade angeklickt habe (im Netz gefunden).
Ich wollte haben, dass wenn ich in die Zellen mit den Überschriften klicke die Tabelle aufsteigend sortiert wird, und wenn ich in die Daten klicke absteigend sortiert wird.
Danke im voraus
Grüße von Maya

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Dim LzB As Long
    Dim LSp1 As Long
    Dim r
    
    r = ActiveCell.Address
    
    LzB = Application.Max(13, Cells(Rows.Count, 2).End(xlUp).Row)
    LSp1 = 7
    
    Range(Cells(12, 1), Cells(LzB, LSp1)).Sort Key1:=Range(r), Order1:=xlAscending, Header:= _
xlYes, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
End Sub

Bild

Betrifft: AW: VBA Sortieren
von: Sepp
Geschrieben am: 08.11.2015 10:10:24
Hallo Maya,
wäre der Doppelklick nicht besser geeignet?

' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("A12").CurrentRegion) Is Nothing Then
  Range("A12").CurrentRegion.Sort Key1:=Cells(12, Target.Column), _
    Order1:=IIf(Target.Row = 12, xlAscending, xlDescending), Header:=xlYes
End If

End Sub

Gruß Sepp


Bild

Betrifft: AW: VBA Sortieren
von: Maya
Geschrieben am: 08.11.2015 10:32:13
Hallo Sepp,
komische Sache: Es kommt der Laufzeitfehler 1004: Für diese Aktion müssen alle verbundenen Zellen die selbe Größe haben.
Diese Zeilen werden dann gelb markiert:
Range("A12").CurrentRegion.Sort Key1:=Cells(12, Target.Column), _
Order1:=IIf(Target.Row = 12, xlAscending, xlDescending), Header:=xlYes
In meiner Tabelle kommen aber nur bis zur Zeile 11 verbundene Zellen vor.
Grüße von Maya

Bild

Betrifft: AW: VBA Sortieren
von: Sepp
Geschrieben am: 08.11.2015 10:43:59
Hallo Maya,
dann halt so.

' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range

Set rng = Range("A12:G" & Application.Max(13, Cells(Rows.Count, 2).End(xlUp).Row))

If Not Intersect(Target, rng) Is Nothing Then
  rng.Sort Key1:=Cells(12, Target.Column), _
    Order1:=(Target.Row = 12) + 2, Header:=xlYes
End If

End Sub

Gruß Sepp


Bild

Betrifft: AW: VBA Sortieren
von: Maya
Geschrieben am: 08.11.2015 11:03:56
Danke Sepp, so funktioniert es spitze.
Danke auch an Mathias fürs Testen.
Grüße von Maya

Bild

Betrifft: AW: VBA Sortieren
von: Matthias L
Geschrieben am: 08.11.2015 10:46:38
Hallo
Hab mal getestet (XL2007)
Keine Probleme! Auch nicht bei verb.Zellen bis Zeile(11)
Es dürfen natürlich keine Daten in diesen angrenzende Zellen an Zeile(12) stehen.
Sonst kommt eben dieser Fehler wg. CurrentRegion
Tabelle1

 ABCDEFG
1  
2
3
4
5
6
7
8
9
10 
11  
12Ü1Ü2Ü3Ü4Ü5Ü6Ü7
139898158949347
1478936732731244
1539805840344480
1627655553815162
1720497213603030
181638421644817
19641845572294
203731939591598


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Sortieren"