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.