Seite 1 von 1
Tabellenblätter alphabetisch sortieren?
Verfasst: Di, 16.08.2005 14:10
von RS
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
Re: Tabellenblätter alphabetisch sortieren?
Verfasst: Fr, 20.01.2006 13:30
von icke
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
Verfasst: Fr, 20.01.2006 13:42
von RS
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
Verfasst: Fr, 20.01.2006 14:55
von Stephan
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
Verfasst: Mo, 23.01.2006 14:30
von icke
Vielen Dank an Euch beide!
Die Makros funktionieren hervorragend!

Verfasst: Mo, 23.01.2006 14:56
von Toxitom
Hey Stephan,
bitte, bitte nicht....
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
"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
Verfasst: Mo, 23.01.2006 16:49
von Stephan
Hallo Thomas,
bitte, bitte nicht....
...
Wir wollen doch auch einen "modernen" und "guten" Programmierstii pflegen
hast ja recht
... 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