Hallo zusammen,
ich habe LibreOffice 24.8.6.2 Linux-Version und möchte mit dieser VBA-Funktion beim Öffnen des Dokuments eine Auswahlliste anzeigen lassen. Das klappt alles. Was nicht klappt, dass der Dialog mit dem OK-Button auch schliesst. Das klappt erst mit dem Abbrechen-Button.
Sieht jemand was ich falsch mache?
Function GetSelectedCategories() As Variant
Dim oDialog As Object
Dim oListBoxControl As Object
Dim oListBoxModel As Object
Dim oContext As Object, oDataSource As Object
Dim oConnection As Object, oStatement As Object, oResultSet As Object
Dim i As Integer
Dim selectedItems As Variant
Dim result()
DialogLibraries.loadLibrary("Standard")
oDialog = CreateUnoDialog(DialogLibraries.Standard.DlgKategorien)
oListBoxControl = oDialog.getControl("lstKategorien")
oListBoxModel = oListBoxControl.Model
oContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oContext.getByName("DB-projects")
oConnection = oDataSource.getConnection("username", "pw")
oStatement = oConnection.createStatement()
oResultSet = oStatement.executeQuery("SELECT name FROM category ORDER BY name")
Do While oResultSet.next()
oListBoxControl.addItem(oResultSet.getString(1), oListBoxControl.ItemCount)
Loop
oResultSet.close()
oConnection.close()
Dim dialogResult As Integer
dialogResult = oDialog.execute() ' Diese Methode blockiert, bis der Dialog geschlossen wird
' Überprüfen, ob der Benutzer den Dialog bestätigt hat (OK gedrückt)
If dialogResult = 1 Then
selectedItems = oListBoxModel.SelectedItems
ReDim result(UBound(selectedItems))
For i = 0 To UBound(selectedItems)
result(i) = oListBoxModel.StringItemList(selectedItems(i))
Next i
GetSelectedCategories = result
Else
' Wenn der Dialog abgebrochen wurde oder ohne Auswahl geschlossen wurde
GetSelectedCategories = Array()
End If
oDialog.endExecute() ' Markiert das Ende des Dialogs
oDialog.dispose() ' Gibt den Dialog aus dem Speicher frei
End Function
Viele Grüße Alex!