Seite 1 von 1

CALC: benutzerdef. Sortierliste

Verfasst: Fr, 09.03.2012 12:40
von TrueColor
CALC: benutzerdef. Sortierliste

Hallo,

ich habe ein von hier:
[gelöst] Calc: Sortier-Macros über Pulldown ausführen
weiterführendes Problem.

Jeder kennt sicher die vordefinierten Sortierlisten in Calc (Wochentage, Monate). Ich habe nun eine eigene benutzerdefinierte Liste (Statuskennungen eines fortlaufenden Prozesses): O, A, Ä, K, P, L, erl, --
Diese möchte ich nun aber nicht im System (Menü --> Optionen --> Calc --> Sortierlisten --> Liste kopieren aus...) erstellen, sondern direkt im Macro fest hinterlegen und anwenden.

(1) Wie kann ich die Liste im Marco hinterlegen?
Aus einem Zellbereich einlesen wäre ok. Die bessere Lösung wäre IMO aber, direkt zu definieren, da die Liste sich nicht ändert.

DIM ARRAY ... ?

(2) Wie kann ich das dann als Argument verwenden?
Der Kram vom Dispatcher

Code: Alles auswählen

[...]
args1(4).Name = "UserDefIndex"
args1(4).Value = 5
[...]
ist ja vermutlich nicht zu gebrauchen.

Vielen Dank!

Grüße
TrueColor

Re: CALC: benutzerdef. Sortierliste

Verfasst: Fr, 09.03.2012 12:52
von balu
Hallo TrueColor,

so rein zufälliger Weise hatte ich vor kurzem in einem Thread von mir ein ganz simples und einfaches ARRAY Beispiel zitiert. GuckstDu hier. Gleich der erste Code mit "Fred","Tom","Bill".

Nein, ich hab mir deine Datei nicht angeschaut. Aber vielleicht hilft dir das dortige Beispel trotzdem.



Gruß
balu

Re: CALC: benutzerdef. Sortierliste

Verfasst: Fr, 09.03.2012 12:54
von TrueColor
Huhu Balu,

das war ja schnell, ich gucks mir mal an, danke!

Grüße
TrueColor

Re: CALC: benutzerdef. Sortierliste

Verfasst: Fr, 09.03.2012 13:23
von TrueColor
balu hat geschrieben:ein ganz simples und einfaches ARRAY Beispiel zitiert. GuckstDu hier. Gleich der erste Code mit "Fred","Tom","Bill".
Hm... ok, sieht einfach und verständlich aus.

Warum verwendest du VARIANT? Und warum warnt Danneberger davor (das hab ich nicht rausgefunden, aber ich würde das so interpretieren, dass man in das Variant-Array alle möglichen Typen reinkippen kann, und dann bei der Verwendung höllisch aufpassen muss, was man damit macht)? Ich denke, sowohl für dein Beispiel, als auch für meinen Anwendungsfall müsste STRING eigentlich reichen, oder?

Grüße
TrueColor

Re: CALC: benutzerdef. Sortierliste

Verfasst: Fr, 09.03.2012 14:19
von balu
Hallo TrueColor,
Warum verwendest du VARIANT?
Ich hatte das Beispiel auch nur von wo anders her, und da stand das schon drin.
Natürlich kannst Du in deinem Falle alles auf String setzen. Es spricht nichts dagegen.

Und warum warnt Danneberger davor
Warum Dannenhöfer in diesem Zusammenhang vor Variant warnt, ist mir auf die schnelle auch nicht bewusst.

Ich denke, sowohl für dein Beispiel, als auch für meinen Anwendungsfall müsste STRING eigentlich reichen, oder?
Yep, so seh ich das auch.



Gruß
balu

Re: CALC: benutzerdef. Sortierliste

Verfasst: Di, 20.03.2012 07:59
von TrueColor
Hi Balu, hallo Forum

sorry für das lange Delay, bin erst jetzt wieder dazugekommen, mich damit zu beschäftigen.

> [STRING vs. VARIANT]

STRING fkt. doch nicht, die Objektvariable sei nicht belegt.

Code: Alles auswählen

SUB SortList

DIM aSortList AS STRING
aSortList = ARRAY("O", "A", "Ä", "K", "P", "L", "erl", "--")
FOR i = 0 to 7
  MSGBOX aSortList(i)
next

END SUB
Mit VARIANT hingegen fkt. das einwandfrei. Was ist nun der Unterschied zw. beiden?

Wer kann mir helfen, wie ich das Array nun verwenden kann, um damit eine benutzerdefinierte Sortierliste zu erzeugen, die im Dokument gespeichert ist?

Re: CALC: benutzerdef. Sortierliste

Verfasst: Di, 20.03.2012 08:10
von komma4
Du definierst die Variable als STRING - nicht als Array von STRINGs

Code: Alles auswählen

DIM aSortList(7) AS STRING

Re: CALC: benutzerdef. Sortierliste

Verfasst: Di, 20.03.2012 16:16
von TrueColor
Ah, danke dir, so ist das um einiges besser!

Re: CALC: benutzerdef. Sortierliste

Verfasst: Do, 22.03.2012 15:21
von TrueColor
Hab jetzt zumindest eine vorübergehende Lösung für eine logische Sortierung gefunden: Mittels Hilfsspalte, in der die Kennzeichen in Zahlen übersetzt werden.

Code: Alles auswählen

=WENN(F2="O";1;"") & WENN(F2="A";2;"") & WENN(F2="Ä";3;"") & WENN(F2="K";4;"") & WENN(F2="P";5;"") & WENN(F2="L";6;"") & WENN(F2="erl";7;"") & WENN(F2="--";8;"")
Damit kann ich die Hilfsspalte einfach alphanumerisch sortieren. Nicht schön, ich stehe nicht auf Hilfsspalten, die keine Nutzdaten enthalten. Aber das tut es erstmal.

Edit: Danke, Mobbi, für die Idee!

Re: CALC: benutzerdef. Sortierliste

Verfasst: Do, 22.03.2012 15:42
von Karolus
Hallo
Vergiss diese bescheuerte Formel und nimm:

Code: Alles auswählen

=VERGLEICH( F2  ; {1;"A";"Ä";"K";"P";"L";"erl";"--"} ;  0 )
Karo