Am 22.10.2011 11:16, schrieb gooly:
Nochmals Danke, Frieder!

Ich hätte aber jetzt noch eine kleine Frage dazu:

Am 19.10.2011 13:18, schrieb Frieder:
> diesen Code einfach in ein Neues Modul
> kopieren.(Menü->Extras->Makros->MakrosVerwalten->Libreoffice
> Basic->"Dein dokument"
> ->Standard->Auf Neu klicken-> Modul Umbenennen in
> z.B"sortierFunktion"->Makro aus der e-mail einfügen->Speichern.
> Aufgerufen wird die Funktion mit:
>
> =SORTBYCOLUMN(B1;"Tabelle2";"A15:C28";B2)

Die im 'leeren' Standard stehenden subs:
- sub Main..end sub und
- sub Macro..end sub
habe ich komplett gelöscht - war (ist) das ok?

LG, Gooly

Hallo
ich habe den Code noch etwas modifiziert.:

Function sortByColumn (ByVal nSortColumn AS Integer,ByVal sSortSheet As String,ByVal sSortRange As String,ByVal bAscending As Boolean)AS String
  sortByColumn= "Sortier-Funktion"
Dim nBreite as integer
Dim aSortFields(0) as New com.sun.star.util.SortField
Dim aSortDesc(0) as New com.sun.star.beans.PropertyValue
Dim oSortRange As Object
Dim oSheet1 As Object
Dim a(1)
Dim sStartCell As String
Dim sEndCell As String
a()=Split(sSortRange, ":",2)
sStartCell=a(0)
sEndCell=a(1)

oSheet1 = ThisComponent.Sheets.GetByName(sSortSheet)
'sSortSheet = Name der Tabelle. Darf nicht Die Tabelle Sein, auf der die Funktion Steht. nStartColumn = oSheet1.getCellRangeByName(sStartCell).getcelladdress.Column
    nEndColumn = oSheet1.getCellRangeByName(sEndCell).getcelladdress.Column
     nBreite = nEndColumn - nStartColumn
If nSortColumn <= nBreite And  nSortColumn >= 0 Then

oSortRange = oSheet1.getCellRangeByName(sSortRange)'sSortRange = z.b."A2:F7"

aSortFields(0).Field = nSortColumn ' "nSortCoulumn" ist die Spaltennummer inerhalb der Bereichs, nach der Sortiert werden sooll. Spalte A = 0 aSortFields(0).SortAscending= bAscending '1 entspricht "True" für aufsteigend und 0 entspricht "False" für absteigend

   aSortDesc(0).Name = "SortFields"
   aSortDesc(0).Value = aSortFields()
      oSortRange.Sort(aSortDesc())
      sortByColumn= "Sortier-Funktion"

Else
sortByColumn= "Die Spalte ist auserhalb des Bereichs." 'Bedeutet: Die spalte ist auserhalb des Sortier-Bereichs.
End if

End Function

Aufruf der Funktion:
=SORTBYCOLUMN(B1;"Tabelle2";"A15:C28";B2)

B1 =Zelle, in der steht,nach welcher Spalte sortiert werden soll.(0=1. Spaltedes Sortierbereichs, in dem Fall Spalte A)
Tabelle2=Tabellenname der zu sortirenden Tabelle ( muss in "" stehen.)
A15:C28= zu sortierender Bereich ( ohne Kopfzeile)( muss in "" stehen.)
B2=Zelle, in der steht,ob aufsteigend(1) oder absteigend(0) Sortiert werden soll.(man kann hier auch direkt 1 oder 0 eintragen)

Hier ist der Link zu einer Beispiel-Datei, wo du alles Ausprobieren kannst.
http://wurzelmanager.blogger.de/getfile?name=sortierfunktion.ods
Dort habe ich auch alles noch etwas genauer erklärt.
Gruß Frieder

--
Informationen zum Abmelden: E-Mail an [email protected]
Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Antwort per Email an