Frage zu Formeleintrag in Zelle per Makro

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Frage zu Formeleintrag in Zelle per Makro

Re: Frage zu Formeleintrag in Zelle per Makro

von Benny88 » So, 10.03.2019 13:00

Danke Stephan :)

Re: Frage zu Formeleintrag in Zelle per Makro

von Stephan » So, 10.03.2019 08:44

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

Frage zu Formeleintrag in Zelle per Makro

von Benny88 » So, 10.03.2019 05:54

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

Nach oben