Hallo Andreas

Am 29.12.2011 20:23, schrieb Andreas Borutta:
Herzlichen Dank. :)
Lass' Dir ruhig Zeit.

Wenn das Makro fertig ist, kann ich es auch zu einer Extension ausbauen,
das braucht aber etwas länger.
Ich glaube, ein Makro reicht. Aber falls es Dich selber reizt und Du
denkst, dass die Vereinfachung für mehrere Nutzer spannend ist, dann
freue ich mich auch über eine Erweiterung.
Ich schau mal, ob ich dann noch Lust habe.
@Christian
Auch an Dich vielen Dank für Deine Antwort.
Aber mit Frieders Makro ist das Thema dann ja erledigt.

Andreas
Ich arbeite gerade daran, dass man einfach eine Zelle markiert, und dann auf einen Button (Absteigend oder Aufsteigend) klickt, und schon wird nach der Spalte sortiert, in der sich gerade der Cursor befindet. Wenn ich damit fertig bin, ist es nicht mehr so viel Arbeit, daraus eine Extension zu machen. Die Meiste Arbeit sind dann die kleinen Bildchen auf den Schaltflächen und ein Hilfe-Text.

Aber hier Das Makro:
einfach im sub "sortWriterTable"  die Variablen anpassen und fertig.

Gruß Frieder

REM  *****  BASIC  *****
Option Explicit
'------------------------------
sub sortWriterTable
Dim sTableName As String
Dim bAscending As boolean
Dim bHeader As boolean
Dim nSortColl As Long

sTableName = "Tabelle1"
bAscending = True 'Aufsteigend Sortiert
bHeader = False 'Tabelle enthält kopfzeile
nSortColl = 1 'Spalte nach der sortiert werden soll (erte Spalte=1)

sort_Text_Table(sTableName,bAscending,bHeader,nSortColl)

end Sub

'--------------------------------------------
sub sort_Text_Table (sTableName As String,bAscending As boolean,bHeader As boolean, nSortColl As Long)
Dim oTable as Object
dim oRange as Object
Dim nStartRow As Long
Dim sRange As String
Dim oSortFields(0) as New com.sun.star.table.TableSortField
Dim oDescriptor As Variant

  oTable = ThisComponent.TextTables.getByName(sTableName)
    If bHeader Then
      nStartRow =1
    Else
      nStartRow =0
    End if

  sRange = GetTablerange(oTable,nStartRow)
  oRange = oTable.getCellRangeByName (sRange)

  oSortFields(0).Field = nSortColl
  oSortFields(0).IsAscending = bAscending
  oSortFields(0).FieldType = com.sun.star.util.SortFieldType.AUTOMATIC

  oDescriptor = oTable.createSortDescriptor()
  ' set descriptor's properties
  oDescriptor(0).Name = "IsSortInTable"
  oDescriptor(0).Value = True
  'oDescriptor(1).Name = "Delimiter"
  'oDescriptor(1).Value = True
  oDescriptor(2).Name = "IsSortColumns"
  oDescriptor(2).Value = False 'True
  'oDescriptor(3).Name = "MaxSortFieldsCount"
  'oDescriptor(3).Value = 2
  oDescriptor(4).Name = "SortFields"
  oDescriptor(4).Value = oSortFields()
  oRange.Sort(oDescriptor())

End sub
'-----------------------------------------------------------------
REM Returns the name of the sortrange
Function GetTablerange (oTable As Object, nStartRow As Long) As String

  Dim sCell As string
  Dim oCursor As Object

  sCell = oTable.getCellByPosition(0, nStartRow).CellName
  oCursor = oTable.createCursorByCellName (sCell)

  oCursor.gotoEnd (True)
  GetTablerange = oCursor.getRangeName

End Function


--
Informationen zum Abmelden: E-Mail an users+h...@de.libreoffice.org
Probleme? 
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps 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