Seite 1 von 1

[Gelöst]Formel Array

Verfasst: So, 26.03.2017 15:12
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!!

Re: Formel Array

Verfasst: So, 26.03.2017 16:12
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),))

Re: Formel Array

Verfasst: So, 26.03.2017 17:28
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.

Re: Formel Array

Verfasst: So, 26.03.2017 19:55
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",","))

(Gelöst) Formel Array

Verfasst: Mo, 27.03.2017 11:20
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