[Gelöst]Formel Array

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

Moderator: Moderatoren

Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

[Gelöst]Formel Array

Beitrag von Jörg »

Hallo Fachleute,

mit nachstehendem Codeabschnitt wird 5x die gleiche Formel eingefügt:

Code: Alles auswählen

       
zielbereich = oStammSheet.getCellRangeByName("F" & iLetzteZeile &":J" &iLetzteZeile)

zielbereich.FormulaArray = array(array("=Summeteilerg","=Summeteilerg","=Summeteilerg","=Summeteilerg","=Summeteilerg"))
sieht ja irgendwie blöd aus.
Geht das übersichtlicher?

Danke!!
Zuletzt geändert von Jörg am Mo, 27.03.2017 11:24, insgesamt 2-mal geändert.
Gruß Jörg

Win 10 Pro AOO 4.1.15
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Formel Array

Beitrag von mikeleb »

Hallo,
du könntest es als Schleife programmieren.
Python bietet folgende Option:

Code: Alles auswählen

def mitformel_fuellen():
    oDoc = XSCRIPTCONTEXT.getDocument()
    oStammSheet = oDoc.Sheets.getByName("???") #anpassen
    oCells = oSheet.getCellRangeByIndex(5,iLetzteZeile,9,iLetzteZeile)
    oCells.setFormulaArray((tuple(["=Summeteilerg"]*5),))
Gruß,
mikeleb
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Formel Array

Beitrag von Jörg »

Hallo mikeleb,
danke für deine Antwort. Aber mit python kenne ich mich nun überhaupt nicht aus. Die im Forum vorgeschlagenen Wege (Pfade anlegen u.ä.) um das zum Laufen zu bringen, ist mir unterm Strich dann doch für ein Makro zu aufwendig.
Dann gehts auch so.
Schönen Restsonntag.
Gruß Jörg

Win 10 Pro AOO 4.1.15
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Formel Array

Beitrag von mikeleb »

Hallo,
Schleifenvariante 1:

Code: Alles auswählen

for i=5 to 9
     oStammSheet.getCellByPosition(i,iLetzteZeile).Formula="=Summeteilerg"
next
Schleifenvariante 2:

Code: Alles auswählen

for i=0 to 4
     aFormeln(i)="=Summeteilerg"
next
zielbereich.FormulaArray = array(aFormeln)
andere Schreibweise:

Code: Alles auswählen

zielbereich.FormulaArray = array(split("=Summeteilerg,=Summeteilerg,=Summeteilerg,=Summeteilerg,=Summeteilerg",","))
Gruß,
mikeleb
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

(Gelöst) Formel Array

Beitrag von Jörg »

Hallo mikeleb,
ich habe die Schleifenvariante2
gewählt. Vielen Dank.
Falls von Interesse, stelle ich mal den kpl. Code hier rein:
Spalte B bzw. Q gesondert, weil nicht zusammenhängend (so mein Gedanke)

Code: Alles auswählen

Sub Summenteilerg
Dim aFormeln (4)
odoc = ThisComponent
   oStammSheet = ThisComponent.sheets.getByIndex(3)
      With oStammSheet 
         x = .Columns(1).queryEmptyCells()
         iLetzteZeile = x(x.Count-1).RangeAddress.StartRow +1
      End With
zielbereich = oStammSheet.getCellRangeByName("F" & iLetzteZeile &":J" & iLetzteZeile)
for i=0 to 4
     aFormeln(i)="=Summeteilerg"
next
zielbereich.FormulaArray = array(aFormeln)
rem------------------------------------------------------------
 mycell = oStammSheet.getCellRangeByName("B" & iLetzteZeile )
 mycell.FormulaLocal  = "=Namenanz"     
rem---------------------------------------------------------------------------------
 mycell = oStammSheet.getCellRangeByName("Q" & iLetzteZeile )
 mycell.FormulaLocal  = "=Summeteilerg"    
End Sub
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten