Tabellenblätter alphabetisch sortieren?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Tabellenblätter alphabetisch sortieren?

von Stephan » Mo, 23.01.2006 16:49

Hallo Thomas,
bitte, bitte nicht....
...
Wir wollen doch auch einen "modernen" und "guten" Programmierstii pflegen


hast ja recht :wink:

... bereits als ich vor 20 Jahren Basic gelernt habe war nicht schön, aber manchmal kommt das ebend immer wieder durch dieses GoTo hier und GoTo da wenn ich nicht aufpasse.


Gruß
Stephan

von Toxitom » Mo, 23.01.2006 14:56

Hey Stephan,

bitte, bitte nicht.... :wink:

Code: Alles auswählen

if LCase(a(i)) < LCase(a(j)) Then Goto z 
   ....
z:[/quote]
Wir wollen doch auch einen "modernen" und "guten" Programmierstii pflegen :wink:

"GoTo" ist "deprecated" und sollte nicht mehr angewendet werden - auch wenn es natürlich funktioniert. Ausnahme: "On error goto marke"

Bitte einfach ohne "goto" schreiben - der Bubble-Sort Allgoythmus funktioniert genauso. Einfach die Bedingung "rumdrehen":

Code: Alles auswählen

For j = i+1 to anz-1
      if not (LCase(a(i)) < LCase(a(j))) Then 
        temp = a(i)
        a(i) = a(j)
        a(j) = temp
       end if
   Next j 
Oder - noch einfacher - das "Kleinerzeichen" rumdrehen :-)

Gruss
Thomas

von icke » Mo, 23.01.2006 14:30

Vielen Dank an Euch beide!

Die Makros funktionieren hervorragend! :D

von Stephan » Fr, 20.01.2006 14:55

Ich habe schnell mal zwei neue Makros zum Sortieren der Tabellenblätter geschrieben, diese einfach in eine Makrobibliothek von OOo kopieren und mit einer Schaltflche verknüpfen:

Code: Alles auswählen

Sub Sortieren_steigend()
dok = StarDesktop.CurrentComponent
anz = dok.Sheets().Count
dim a(anz-1)
For i = 0 to anz-1
	a(i) = dok.Sheets(i).Name
Next
For i = 0 To anz-2
	For j = i+1 to anz-1
		if LCase(a(i)) < LCase(a(j)) Then Goto z
		temp = a(i)
		a(i) = a(j)
		a(j) = temp
z:	Next j
Next i
For i = 0 to anz-1 
	dok.Sheets.moveByName(a(i),i)
Next i
End Sub

Code: Alles auswählen

Sub Sortieren_fallend()
dok = StarDesktop.CurrentComponent
anz = dok.Sheets().Count
dim a(anz-1)
For i = 0 to anz-1
	a(i) = dok.Sheets(i).Name
Next
For i = 0 To anz-2
	For j = i+1 to anz-1
		if LCase(a(i)) > LCase(a(j)) Then Goto z
		temp = a(i)
		a(i) = a(j)
		a(j) = temp
z:	Next j
Next i
For i = 0 to anz-1 
	dok.Sheets.moveByName(a(i),i)
Next i
End Sub

Gruß
Stephan

von RS » Fr, 20.01.2006 13:42

Hi,

hatte die Anfrage auch noch auf der User-Mailingliste gepostet, dabei kam ein Makro raus, den ich allerdings nie ausprobiert habe, da ich das manuelle Verschieben in meinem Fall einfacher und ausreichend fand.

Falls Du das Makro - ohne Gewähr - haben möchtest, kann ich es Dir schicken, allerdings erst nächste Woche, da ich jetzt ins Wochenende gehe.

Gruß,

Rebecca

Re: Tabellenblätter alphabetisch sortieren?

von icke » Fr, 20.01.2006 13:30

RS hat geschrieben: Ist eine alphabetische Sortierung möglich? Wenn ja - wie?
Hallo,

habe das gleiche Problem. Nimm doch den Dialog kopieren/verschieben - ist aber recht umständlich, da Du wohl nur das Blatt ans Ende stellen kannst. ;-(

Kann der Navigator nicht eine Sortierfunktion von den Entwicklern spendiert bekommen?

Grüße

Tabellenblätter alphabetisch sortieren?

von RS » Di, 16.08.2005 14:10

Hallo,

ich habe soeben eine Calc-Datei mit insgesamt 31 willkürlich nacheinander eingefügten und benannten Tabellenblättern angelegt. Diese müsste ich nun alphabetisch hintereinander anzeigen lassen.

Ist eine alphabetische Sortierung möglich? Wenn ja - wie?

Danke,

Gruß,

Rebecca

Nach oben