Daten Gültigkeit

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Tim_

Daten Gültigkeit

Beitrag von Tim_ » So, 16.06.2019 17:27

Hallo,
ich habe in meiner Tabelle eine Zelle mit Überprüfung Daten-Gültigkeit als Liste.
Diese Liste möchte ich gern per Makro anpassen.
Der Makro-Rekorder hat mir folgendes aufgezeichnet:

Code: Alles auswählen

sub DatenGueltigkeit_Aufzeichnung
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Validation", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$H$4"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Validation", "", 0, Array())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Validation", "", 0, Array())


end sub
Leider gelingt es mir nicht, das Makro so anzupassen, sodass ich die Liste ändern kann.
Bei diesem Makro wird mir nur das Menü für die Daten-Gültigkeit eingeblendet.
Weiß jemand was ich dafür hier noch ändern muß?

Lg. Tim

Stephan
********
Beiträge: 11239
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Daten Gültigkeit

Beitrag von Stephan » So, 16.06.2019 17:53

Mit Makrorecorder lässt sich diese spezielle Funktionalität nicht aufzeichnen.


für Zelle A1 im aktiven Tabellenblatt:

Code: Alles auswählen

Sub Validate()
Dim oCel As Object
Dim oValidation As Object
   oCel = ThisComponent.getCurrentController.getActiveSheet.getCellRangeByName( "A1" )
   oValidation = oCel.getPropertyValue("Validation")
   With oValidation
      .Type = com.sun.star.sheet.ValidationType.LIST
      .setFormula1("""abc"";""def"";""ghi""")
      .ShowList = com.sun.star.sheet.TableValidationVisibility.SORTEDASCENDING
      .ShowErrorMessage = True
      .ErrorAlertStyle = com.sun.star.sheet.ValidationAlertStyle.STOP
   End With 
   oCel.setPropertyValue("Validation", oValidation)      
End Sub
(angelehnt an: https://forum.openoffice.org/en/forum/v ... t=ShowList)

Darin kannst Du nun die Liste in Zeile:

Code: Alles auswählen

.setFormula1("""abc"";""def"";""ghi""")
anpassen wie sie benötigt wird.


Gruß
Stephan

F3K Total
********
Beiträge: 3381
Registriert: Mo, 28.02.2011 17:49

Re: Daten Gültigkeit

Beitrag von F3K Total » So, 16.06.2019 17:54

Hallo Tim,
keine Ahnung, ob du das per Aufzeichnung hinbekommen kannst, aber ich habe mal was geschrieben:

Code: Alles auswählen

Sub Wechseln_DatenGueltigkeit_Liste_selbst_geschrieben
    dim sRange(1) as string
    sRange(0) = "$Tabelle1.$B$2:$B$21"
    sRange(1) = "$Tabelle1.$C$2:$C$21"
    oSheet = ThisComponent.Sheets.getbyname("Tabelle1")
    oCell = oSheet.getCellbyPosition(7,3)'H4
    aValidation = oCell.Validation
    if  aValidation.Formula1 =  sRange(0) then
         aValidation.Formula1 =  sRange(1)
    else
         aValidation.Formula1 =  sRange(0)
    endif
    oCell.Validation = aValidation
end sub
Wenn dein Zelle die Zelle H4 auf Tabelle1 ist, und du zwei mögliche Listen auf Tebelle 1, $B$2:$B$21 und $C$2:$C$21 hast, dann wird die gerade aktuelle Liste durch das Ausführen des o.a. Makros auf die andere gesetzt.
Beispiel anbei.
HTH Gruß R
Dateianhänge
Gültigkeitsliste_per_Makroi.ods
(12.77 KiB) 39-mal heruntergeladen

Gast

Re: Daten Gültigkeit

Beitrag von Gast » So, 16.06.2019 17:56

Servus,

das rem vor dem dispatcher löschen.
Das hilft gelegentlich bei aufgezeichneten Makro.

Gast

Tim_

Re: Daten Gültigkeit

Beitrag von Tim_ » So, 16.06.2019 18:25

Hallo,
Das ging aber fix. So schnell habe ich garnicht mit einer Antwort gerechnet. Die Makros funktionieren beide. Ich danke euch. Das anpassen bekomme ich dann schon hin. OpenOffice ist zwar Neuland für mich, habe aber schon einige Erfahrung mit VBA.

Also nochmals Danke.

Lg. Tim

Antworten