Hallo, ich habe folgendes Problemchen:
oo1.1.5 Calk
Aktive Zelle Ist E 51
Ich suche nach einem Code, der mir abfragt, ob in der nächsten Zeile, 2 Zellen nach links der Begriff "Zwischensumme" steht, und dann automatisch 1 Zeile nach der aktuellen anfügt.
Dabei soll er auch noch die Formel die in H 51 steht, jeweils in H.. einfügen.
Ich möchte hier mit relativen Verweisen arbeiten, da wenn die neue Zeile wieder voll ist, die gleiche Aktion wieder ausgeführt werden soll.
Der Code soll automatisch starten, wenn in Spalte E ein Wert eingegeben wurde und in der darauf folgenden Zeile in Spalte C "Zwischensumme" steht.
An diesem Macro bastle ich nun schon seit zwei Wochen, aber habe noch kein brauchbares Ergebnis.
Könnt Ihr mir bitte helfen?
Danke im voraus
Christian
Wenn in der nächsten Zeile 3Zellen nach links etwas steht...
Moderator: Moderatoren
-
- *
- Beiträge: 11
- Registriert: So, 29.10.2006 16:50
Hallo Christian
Probiere mal den folgenden Code aus in Verbindung mit einem Tastaturkürzel.
Das Makro führt nebenbei den Tastendruck '↓' aus, fügt dann eine Zeile ein, wenn eine Zeile weiter unten in Spalte C "Zwischensumme" steht und füllt dann auch gleichzeitig die Formel in Spalte H nach unten aus.
Gruß Karo
Probiere mal den folgenden Code aus in Verbindung mit einem Tastaturkürzel.
Das Makro führt nebenbei den Tastendruck '↓' aus, fügt dann eine Zeile ein, wenn eine Zeile weiter unten in Spalte C "Zwischensumme" steht und füllt dann auch gleichzeitig die Formel in Spalte H nach unten aus.
Code: Alles auswählen
sub zeileeinifZwischensumme
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())
odoc = thisComponent
mysheet=odoc.currentcontroller.activesheet
Zellaktuell=odoc.getCurrentSelection().getCellAddress()
oRow=Zellaktuell.Row
oColumn=Zellaktuell.column
Zellaktuell=mysheet.getCellByPosition(ocolumn,orow)
oZiel = mySheet.getCellByPosition(2,orow+1)
if oZiel.string = "Zwischensumme" then
myrows=mysheet.getrows
' Und jetzt einfügen: Index und Anzahl.
myrows.insertbyindex(orow+1,1)
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "H"& orow+1 & ":H"& orow+2
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:FillDown", "", 0, Array())
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "E"& orow+1
args3(1).Name = "Sel"
args3(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
end if
end sub