760 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich wollte mir eine benutzerdefinierte Liste erstellen die aber so lang war das ich einen Fehler bekommen habe. Es kam etwas mit das die Liste zu lang ist und nur 300 Zeichen erlaubt sind.
Darum habe ich mir eine benutzerdefinierte Liste impotiert. Markiere ich nun meinen zu sortierenden Bereich und wähle die Liste tut er auch sortieren.

Ich hab mir daraufhin mit dem Makrorecorder die Vorgehensweise aufgenommen. Er sortiert das ganze auch nur wenn ich nacher die Datei wieder öffne kommt das:


Entfernte Datensätze: Sortierung von /xl/worksheets/sheet1.xml-Part


Das Makro sieht wie folgt aus:

Sub Makro1()
'
' Makro1 Makro
'

'
ActiveWorkbook.Worksheets("HaWa_Druck ").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("HaWa_Druck ").Sort.SortFields.Add Key:=Range( _
"E2:E179"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"020 001 A,020 003 A,020 005 A,020 007 A,020 009 A,020 011 A,020 013 A,020 015 A,020 017 A,020 019 A,020 021 A,020 023 A,020 025 A,020 027 A,020 029 A,020 041 A,020 043 A,020 045 A,020 047 A,020 049 A,020 051 A,020 053 A,020 055 A,020 057 A,020 059 A,020 061 A,020 063 A,020 065 A,020 067 A,020 069 A,020 002 A,020 004 A,020 006 A,020 008 A,020 010 A,020 012 A,020 014 " & _
"A,020 016 A,020 018 A,020 020 A,020 022 A,020 024 A,020 026 A,020 028 A,020 030 A,020 042 A,020 044 A,020 046 A,020 048 A,020 050 A,020 052 A,020 054 A,020 056 A,020 058 A,020 060 A,020 062 A,020 064 A,020 064 B,020 064 C,020 064 D,020 064 E,020 064 F,020 066 A,020 066 B,020 066 C,020 066 D,020 066 E,020 066 F,020 068 A,020 068 B,020 068 C,020 068 D,020 068 E,020 06" & _
"8 F,020 070 A,020 070 B,020 070 C,020 070 D,020 070 E,020 070 F,025 018 00,025 017 00,025 016 00,025 015 00,025 014 00,025 013 00,025 012 00,025 011 00,025 010 00,025 009 00,025 008 00,025 007 00,025 006 00,025 005 00,025 004 00,025 003 00,025 002 00,025 001 00,040 073 00,040 071 00,040 069 00,040 067 B,040 067 A,040 065 B,040 065 A,040 063 B,040 063 A,040 061 B,040" & _
" 061 A,040 059 B,040 059 A,040 057 B,040 057 A,040 055 B,040 055 A,040 053 B,040 053 A,040 051 B,040 051 A,040 049 B,040 049 A,040 047 B,040 047 A,040 045 B,040 045 A,040 043 B,040 043 A,040 041 B,040 041 A,040 033 00,040 031 00,040 029 00,040 027 00,040 025 00,040 023 00,040 021 00,040 019 00,040 017 00,040 015 00,040 013 00,040 011 00,040 009 00,040 007 00,040 005" & _
" 00,040 003 00,040 001 00,030 033 00,030 041 A,030 041 B,030 043 A,030 043 B,030 045 A,030 045 B,030 047 A,030 047 B,030 049 A,030 049 B,030 051 A,030 051 B,030 053 A,030 053 B,030 055 A,030 055 B,030 057 A,030 057 B,030 059 A,030 059 B,030 061 A,030 061 B,030 063 A,030 063 B,030 065 A,030 065 B,030 067 A,030 067 B,030 069 00,030 071 00,030 073 00" & _
""
, DataOption := xlSortNormal
With ActiveWorkbook.Worksheets("HaWa_Druck ").Sort
.SetRange Range("A1:E179")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub



Dieser Teil hier ist dabei rot geschrieben:

, DataOption := xlSortNormal[code]



Was ist denn an diesem Code falsch? Könnte mal jemand drüber schauen bitte.


Gruß

energun222

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

normalerweise dürfte der Codeteil
, DataOption := xlSortNormal

nicht in einer eigenen Zeile stehen, bzw. in der Vorzeile müsste auch ein Unterstrich stehen.

Ändere die Zeilen
00,030 071 00,030 073 00" & _
""
, DataOption := xlSortNormal

mal in
00,030 071 00,030 073 00" & "", DataOption := xlSortNormal


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,

die Änderung hat leider nichts bewirkt.

Ich habe die ganze Datei mal entschlackt und nach und nach alle anderen Makros entfernt, keine Besserung. Auch das entfernen aller anderen Tabellenregister hat nix gebracht.

Dann habe ich den Code neu auf genommen und nur 5 Lagerplätze zum sortieren eingefügt und da geht es dann was aber nicht der Sinn ist. Ich hab so das Gefühl das man trotz importierter Listen die Grenze von 300 Zeichen nicht überschreiten kann. Was mich verwundert ist das ich die Sortierung manuell machen kann ohne das es zu Fehlern kommt.

Ich hab mal eine Datei angehangen mit obigen Code vielleicht kann man damit mehr anfangen..

https://www.dropbox.com/s/qp4gy7xckomyb2p/test_1.1.xlsm?dl=0

Man führt das Makro aus und speichert und nach dem öffnen kommt schon die erste Meldung. Aber sortiert ist es.


Gruß

energun222
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ergänze mal den Codeteil
With ActiveWorkbook.Worksheets("HaWa_Druck ").Sort
.SetRange Range("A1:E179")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

wie folgt:
With ActiveWorkbook.Worksheets("HaWa_Druck ").Sort
.SetRange Range("A1:E179")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
.SortFields.Clear
End With


Bei mir (Excel 2010) kommt dann nach dem erneuten Öffnen keine Fehlermeldung mehr.
Gefunden hier: Quelle

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo,


jaaaaaaaaaa es funzt!

Was so nen Codeschnippsel alles bewirkt. :-)

Dank Dir

Gruß

energun222
...