Sort listobject Problem

Hallo Zusammen,
habe folgendes Problem: aus 1 Pivottabelle werden Detail-Sheets erstellt, die lfd. durchnummeriert werden.Tabelle1, …2 usw. Diese Detail-Sheets müssen nachbearbeitet werden, u.a. mit 1 Sort. Beim Sort übernehme ich mit 1 Variable den Sheet-Namen und in das ListObject. Wenn der Tabellen-Name „Tabelle1“ ist funktioniert dies, sollte er abweichend „Tab…1“ sein, gibt es Probleme. Ablauf mit dem Macro-Recorder zeigt bei Tabelle1 gleiche Bezeichnung bei „Worksheets“ + „Listobjects“ während bei anderen Sheets-Namen diese Bezeichnungen differenzieren. Also Sheet-Bez. = gleich der Variable, doch „Listobject“ bekommt eine von Sheet-Namen abweichende Bezeichnung. Hat jemand einen Hinweis, wie ich die korrekte Listobject Bezeichnung für den Sort bekomme ? Würde mich über jeden Hinweis freuen. Gruß Tscharlie

Grüezi Karlheinz

Gerade im Zusammenhang mit Pivot-Tabellen und List-Objects wäre die genaue Angabe der Excel-Version sehr wichtig!!

habe folgendes Problem: aus 1 Pivottabelle werden
Detail-Sheets erstellt, die lfd. durchnummeriert
werden.Tabelle1, …2 usw. Diese Detail-Sheets müssen
nachbearbeitet werden, u.a. mit 1 Sort. Beim Sort übernehme
ich mit 1 Variable den Sheet-Namen und in das ListObject. Wenn
der Tabellen-Name „Tabelle1“ ist funktioniert dies, sollte er
abweichend „Tab…1“ sein, gibt es Probleme. Ablauf mit dem
Macro-Recorder zeigt bei Tabelle1 gleiche Bezeichnung bei
„Worksheets“ + „Listobjects“ während bei anderen Sheets-Namen
diese Bezeichnungen differenzieren. Also Sheet-Bez. = gleich
der Variable, doch „Listobject“ bekommt eine von Sheet-Namen
abweichende Bezeichnung. Hat jemand einen Hinweis, wie ich die
korrekte Listobject Bezeichnung für den Sort bekomme ?

Wenn das List-Objekt als einziges auf dem Tabellenblatt vorhanden ist (und davon ist in deinem Falle ja vermutlich auszugehen), dann kannst Du anstelle des Namens auch einfach den Index ‚1‘ verwenden, der dann auch über alle Tabellenblätter gleich bleibt:

ListObjects(1)

Ohne deinen Code zu sehen wird es nun aber schwierig, dich hier noch konktreter zu unterstützen.

Hallo Thomas Ramel,
vielen Dank für Deine Info.
Habe hierauf 1 gute und 1 schlechte Nachricht:
die Gute vorab: Der Sort steigt nicht mehr aus und es gibt keine Fehlermeldung mehr.
die Schlechte: er tut nur so, als ob der Sort ausgeführt wird, macht aber nichts. Die Tabelle sieht unverändert aus, die Spalte(SK), die ich ihm mitgebe, ist unverändert.
Vorab die Excel-Version: 2007 - BS Win7Pro
Nachfolgend das kpl. Modul:
'**********************************
Sub Output()
Dim TABELL As String, BU As String, SK As String
Dim SP As Integer
Dim WERT As Double
Dim WK1 As Worksheet
Dim ZAE As Long, LETZTE As Long

TABELL = InputBox(„Eingabe Output-Tabelle“) ’ Ausgabedatei eingaben
’ Ausgabedatei eingaben
BU = InputBox(„Eingabe Report-BU“) ’ Report BU
Worksheets(TABELL).Activate
Set WK1 = Worksheets(TABELL)
Selection.AutoFilter
WK1.Cells(2, 1).Select

Application.ScreenUpdating = False

ZAE = 2
Select Case BU
Case Is = „4-132“
SP = 2
Case Is = „4-134“
SP = 3
Case Is = „4-138“
SP = 4
Case Is = „4-139“
SP = 5
Case Is = „5-053“
SP = 6
Case Is = „5-054“
SP = 7
Case Is = „5-055“
SP = 8
End Select

Select Case SP
Case Is = 2
SK = „B1“
Case Is = 3
SK = „C1“
Case Is = 4
SK = „D1“
Case Is = 5
SK = „E1“
Case Is = 6
SK = „F1“
Case Is = 7
SK = „G1“
Case Is = 8
SK = „H1“
End Select
'*************************************************************
Worksheets(TABELL).ListObjects(TABELL).Sort.SortFields. _
Add Key:=Range(SK), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets(TABELL).ListObjects(1).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'****
ZAE = 2

Do Until WK1.Cells(ZAE, SP) = " "
ZAE = ZAE + 1
Loop

WK1.Cells(ZAE, 1).Activate

Do Until IsEmpty(WK1.Cells(ZAE, 1))
ActiveCell.EntireRow.Delete
Loop

ZAE = 2

WK1.Cells(ZAE, 1).Select

Do Until IsEmpty(WK1.Cells(ZAE, 1))
WERT = Format(WK1.Cells(ZAE, SP).Value, „##,##0“)
WK1.Cells(ZAE, 2).Value = WERT
WK1.Cells(ZAE, 2).Font.Bold = True
WK1.Cells(ZAE, 2).Font.Size = 12
WEITER:
ZAE = ZAE + 1
Loop
'WK1.Range(„b2:h9999“).NumberFormat = „#,##0
Selection.AutoFilter
Application.ScreenUpdating = True
End Sub
'***********************
Kurz das, was ich mir vorstelle: Habe in der Pivot-Tabelle einen Button, mit dem das Programm gestartet wird: Eingabe über Input-Box die Detail-Tabelle und die BU(sprich die Spalte der Detail-Posten, die untersucht werden soll.)
Nach dem Sort sollen die übrigen Zeilen mit der Schleife gelöscht werden. Bin mir sicher, dass da einiges zu verbessern ist, aber wichtig ist mir, dass es das tut, was es soll.
Wäre nett, wenn Du mir ein bisschen auf die Sprünge helfen könntest.
Nachbemerkung: der Sort(wenn er denn lief, also mit „Tabelle1“) lief er korrekt.
Vielen Dank für Deine Mühe und
viele Grüße
Karlheinz

Hallo Thomas Ramel,
Sorry, habe gerade gesehen, dass das Kopie eine Vor-Version war.
Habe natürlich auch die 1.Zeile des Sorts auf ListOpjects(1) angepasst. Nochmals vollständig der Sort Teil:

ListWorksheets(TABELL).ListObjects(1).Sort.SortFields. _
Add Key:=Range(SK), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(TABELL).ListObjects(1).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Also Dein Vorschlag wurde schon umgesetzt.

Nochmals Entschuldigung, wenn ich Dich da etwas verwirrt haben sollte.

viele Grüße
Karlheinz