AW: Makro soll Tabelle sortieren nach "show detail"
31.08.2019 17:18:28
fcs
Hallo Jill,
man kann das NewSheet-Ereignismakro des Workbooks nutzen, um das aus der Pivottabelle generierte Blatt zu identifizieren und dann das List-Objekt sortieren.
LG
Franz
Beispiel-Code:
'Ereignis-Makro unter VBA-Modul "DieseArbeitsmappe" der Datei.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim wks As Worksheet
Dim objList As ListObject
Set wks = Sh
With wks
'Prüfen, ob Tabellenblatt aus Pivot-Bericht generiert wurde
'- Neues Tabellenblatt enthält ein Listobject
If .ListObjects.Count = 1 Then
MsgBox "Jetzt sortieren"
Set objList = .ListObjects(1)
objList.Sort.SortFields.Clear
'1. nach Spalte B aufsteigend sortieren
objList.Sort.SortFields. _
Add Key:=.Range(objList.Name & "[" & .Range("B1").Text & "]"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'2. nach Spalte D absteigend sortieren
objList.Sort.SortFields. _
Add Key:=.Range(objList.Name & "[" & .Range("D1").Text & "]"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With objList.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End With
End Sub