Hallo zusammen
ich habe im in einem Forum das folgende Macro gefunden, aber da ich noch nie mit VBA zu tun hatte habe ich leider kein Plan vom Syntax bzw den Funktionen. Könnte mir jemand das vielleicht erklären was genau welche Funktion macht oder zumindest einen Link zu einer Seite schicken auf der ich mich belesen kann.
Private sRangeSelection$,bRangeSelecting As Boolean
'return a valid com.sun.star.sheet.SheetCellRange from a user's range-selection (or Empty)
Function getRangeSelection(oController,sInitial$,sTitle$,bAutoClose as Boolean,bSingle as Boolean)
On error goto returnEmpty
Dim oListener,aProps(3) As New com.sun.star.beans.PropertyValue
oListener = createUnoListener("RangeSelection_","com.sun.star.sheet.XRangeSelectionListener")
oController.addRangeSelectionListener(oListener)
aProps(0).Name = "InitialValue"
aProps(0).Value = sInitial
aProps(1).Name = "Title"
aProps(1).Value = sTitle
aProps(2).Name = "CloseOnMouseRelease"
aProps(2).Value = bAutoClose
aProps(3).Name = "SingleCellMode"
aProps(3).Value = bSingle
With oController.getFrame
'this is required when calling from IDE or other frame in order to avoid endless loop
.activate
.getContainerWindow.toFront
End With
bRangeSelecting = True
oController.startRangeSelection(aProps())
while bRangeSelecting
wait 200
Wend
oController.removeRangeSelectionListener(oListener)
if len(sRangeSelection)>0 then getRangeSelection = oController.getActiveSheet.getCellRangeByName(sRangeSelection)
returnEmpty:
End Function
Der von Dir gepostete Code betrifft einen recht speziellen (sog.) Listener, wozu ich Dir keinen direkten Link nennen kann der ganz konkret dieses Thema abwandelt.
Die beste kostenlose Übersicht zur OpenOffice/LibreOffice-Makroprogrammierung, liefert wohl: https://www.uni-due.de/~abi070/ooo.html
Ich weiß auch nicht so recht, ob es ernsthaft nützen würde wenn ich Dir das Makro versuche zu erklären. Vielleicht schaust Du Dir besser einmal den Code folgender Extension an, denn dort siehst Du den Listener um den es Dir geht, funktionierend in eine Anwendung eingebettet: https://de.openoffice.info/viewtopic.php?f=16&t=74685
vielleicht erklärst Du erstmal, welches Problem Du lösen wolltest, als Du in dem Forum herumgeldstöbert hast.
Zweitens ist sinnvoll bei solchen Fragen nicht nur eine Routine zu kopieren, sondern die Quelle zu nennen (Link).
Wenn Dir Syntax etwas sagt: Das verwendete BASIC ist ziemlich identisch, aber während VBA mit Funktionen zum Zugriff auf Microsofts Office erweitert wurde sind die objektorientierten Methoden zur Nutzung von OpenOffice komplett anders (und auch nie als kompatibel zu MS gedacht gewesen).
Die Syntax ist also meist kein Problem, aber mit einer Strassenkarte von NewYork kommt man in Chicago trotzdem nicht weiter.
Mein Problem vorher war das ich in Libre office nach einer bestimmten Nummer in einer spalte filtern lassen habe und dann die gefilterten werte aus einer anderen spalte kopieren möchte in einen anderen Worksheet. Ich habe das ganze Makro schon in excel zum laufen gebracht aber da ich es auch noch in libre office brauche wollte ich nicht nur mein excel makro hier rein schicken und fragen ob es jemand übersetzten kann weil es mir am ende nichts bringt andere meine arbiet machen zu lassen. Das war/ist mein Problem. Lieber setzte ich mich 2 wochen oder mehr hin und schaffe den mist selber als andere damit zu belästigen.
@Stephan
danke schonmal für die links. werde mich belesen aber bin auch sehr dankbar für weitere Hilfestellungen. Ich nehme alles an was mir weiterhilft.
Du könntest Deine Daten mit einem Spezialfilter in eine andere Tabelle kopieren. Diese Zieltabelle enthält dann nur die Datensätze, die Du brauchst, was das markieren und kopieren stark vereinfachen würde.