Frage zu Formeleintrag in Zelle per Makro

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

Moderator: Moderatoren

Benny88
Beiträge: 6
Registriert: So, 03.03.2019 05:11

Frage zu Formeleintrag in Zelle per Makro

Beitrag von Benny88 »

Hallo,

ich würde gerne wissen ob es möglich ist eine Formel in eine Zelle einzutragen, bei denen die Formel sich auf bestimmte stellen bezieht.
Auf Dannenhoefer wird erklärt:

Code: Alles auswählen

Sub Test
myDoc = thisComponent
mycell = mysheet.getCellByPosition(0,0)
mySheet = myDoc.sheets(0)
myWert="A1"
myZelle="$Tabelle1.A1"
mycell.Formula = "=A2*B2"+"+"+myWert+"*"+myZelle
End Sub
das ergibt dann:
=A2*B2+A1*$Tabelle1.A1

ist es auch irgendwie möglich folgendes zu machen:

Code: Alles auswählen

Sub Test2
myDoc = thisComponent
mySheet = myDoc.sheets(0)
	mycell = mysheet.getCellByPosition(5,5)
	myWert="A1"
	oRow = First_Empty_Row(mySheet,"B")
	myZelle = mySheet.getcellbyposition(0,oRow)
	mycell.Formula = "=A2*B2"+"+"+myWert+"*"+myZelle
End Sub

Function First_Empty_Row(oSheet, sColumnName)
    oColumn = oSheet.Columns.getbyName(sColumnName)
    oEC = oColumn.queryEmptyCells
    oERange = oSheet.getcellrangebyName(oEC.ElementNames(uBound(oEC.ElementNames)))
    First_Empty_Row = oERange.RangeAddress.StartRow
end function
Sodass es dann in der Tabelle im Anhang in der Zelle E5 folgendene Formel hat:
=A2*B2+A1*A15

LG Benny
Dateianhänge
test2.ods
(10.64 KiB) 121-mal heruntergeladen
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Frage zu Formeleintrag in Zelle per Makro

Beitrag von Stephan »

z.B.:

Code: Alles auswählen

Sub Test2
myDoc = thisComponent
mySheet = myDoc.sheets(0)
	mycell = mysheet.getCellByPosition(5,5)
	myWert="A1"
	oRow = First_Empty_Row(mySheet,"B")
	myZelle = mySheet.getcellbyposition(0,oRow)
	z1 = Split(myZelle.AbsoluteName, ".")
	z2 = Split(Z1(1),"$")
	z3 = JOIN(z2(),"")
	mycell.Formula = "=A2*B2"+"+"+myWert +"*"+z3
End Sub

Function First_Empty_Row(oSheet, sColumnName)
    oColumn = oSheet.Columns.getbyName(sColumnName)
    oEC = oColumn.queryEmptyCells
    oERange = oSheet.getcellrangebyName(oEC.ElementNames(uBound(oEC.ElementNames)))
    First_Empty_Row = oERange.RangeAddress.StartRow
end function
Die Umwandlung per z1 bis z3 ist ein wenig eigenwillig, aber ein recht einfacher Weg den reinen Namen der Zelle (A15) aus .AbsoluteName ($Sheet1.$A$15) abzutrennen. Du könntest dass auch zusammenfassen, nur dann ist es schwierig zu verstehen:

Code: Alles auswählen

Sub Test2
myDoc = thisComponent
mySheet = myDoc.sheets(0)
	mycell = mysheet.getCellByPosition(5,5)
	myWert="A1"
	oRow = First_Empty_Row(mySheet,"B")
	myZelle = mySheet.getcellbyposition(0,oRow)
	mycell.Formula = "=A2*B2"+"+"+myWert +"*"+JOIN(Split(Split(myZelle.AbsoluteName, ".") (1),"$"), "")
End Sub

Gruß
Stephan
Benny88
Beiträge: 6
Registriert: So, 03.03.2019 05:11

Re: Frage zu Formeleintrag in Zelle per Makro

Beitrag von Benny88 »

Danke Stephan :)
Antworten