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