Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


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+help@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.