Programmierung unter AOO/LO (StarBasic, Python, Java, ...)
Moderator: Moderatoren
Jörg
*****
Beiträge: 392 Registriert: Mo, 21.10.2013 12:05
Beitrag
von Jörg » So, 26.03.2017 15:12
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
Beitrag
von mikeleb » So, 26.03.2017 16:12
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
Beitrag
von Jörg » So, 26.03.2017 17:28
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
Beitrag
von mikeleb » So, 26.03.2017 19:55
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
Beitrag
von Jörg » Mo, 27.03.2017 11:20
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