Berechnung in WRITER Tabelle mit "variabler Formel" ?

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: Berechnung in WRITER Tabelle mit "variabler Formel" ?

Re: Berechnung in WRITER Tabelle mit "variabler Formel" ?

von cytron » Sa, 04.01.2014 14:39

Huch ! :D

Entweder hatte ich jetzt oben was überlesen oder das posting von dir Stephan wurde "nach editiert" während ich das zweite getippt habe! :D

genau das wollte ich nämlich noch fragen... mit dem "String minus 1" ;)

Edit:

Funktioniert jetzt Ast rein das Makro... mit dem "string minus 1" Vielen, vielen Dank!

Re: Berechnung in WRITER Tabelle mit "variabler Formel" ?

von cytron » Sa, 04.01.2014 14:34

Hallo Stephan,

das ging ja schnell mit der Antwort - wie es scheint bin ich kurz vor dem Ziel am "Syntax" gescheitert :lol:
ich kann momentan nicht sagen, ob es funktioniert - habe das vorhin grade mal ausprobiert mit dem code aber es erscheint in der Tabelle immer "**Fehlerhafter Ausdruck**"

Glaub ich hatte 3 Tage so gut wie alles ausprobiert was ich dazu fand und weiss bis jetzt immer noch nicht, wie das mit den "&" genau funktioniert... muss ich mal gucken wo ich das nachlesen kann! 8)

das ist der Code nochmal:

Code: Alles auswählen

sub zellenname
    view = ThisComponent.getCurrentController()
 cursor = view.getViewCursor()
 cellx = cursor.Cell

  cellx.formula = "<B1:" & cellx.CellName & ">"
  msgbox cellx.cellname 
  
end sub
Glaub ich weiss jetzt auch warum das "fehlerhafte Ausdruck" erscheint.
Angenommen ich hab in der Tabelle auf B1 und B2 zum probieren den Wert 4 und 5 stehen, und befinde mich dann mit meinem cursor in B3, dann sollte da ja "9" als Ergebnis in B3 kommen.
Ich vermute, dass die CursorZelle, die ja die Formel enthält mitgezählt wird und dieser Formelinhalt das Ding "verwirrt". Nun müsste ich dem Ding irgendwie klar machen, dass es die Zelle vor der CursorZelle, also nicht =<B1:B3> nehmen soll, sondern nur bis <B2>
Sozusagen cellx.formula = "<B1:" & cellx.CellName & ">" MINUS 1 in der "Zeilenadresse"
... so dass aus B3 ein B2 wird... so in der Art.
Geht das nur über cellx.CellName.getstring und auslesen und runtersetzen "minus 1" der "rechten" Zeilennummer?
Oder gibts da deiner/eurer Meinung nach eine elegantere Lösung in Writer die ich momentan nicht überblicke?


Dann hätte ich noch eine kurze Zwischenfrage, weiss nicht, ob die hier oder im Writer-Forum besser aufgehoben wäre, zum Teil hat sie sich schon beantwortet, weil ich von 2007 eine Antwort fand - http://www.oooforum.de/viewtopic.php?f=1&t=12165

Es geht darum, dass ich gerne in Writer in einer Tabelle den Zeilenumbruch abschalten würde und auch ein hinausschreiben in die Nachbarzelle verhindern will, d.h. es sollte weder die Enter-Taste in der Tabelle funktionieren, noch der Zeilenumbruch, wenn man mehr schreibt als die Zelle lang ist... der Cursor sollte dann einfach am Zellenende stehenbleiben, ohne Eingabe auch wenn man tippt... das aus dem Grund, weil ich die Tabelle "Idiotensicher" sozusagen "nicht durch Unachtsamkeit veränderbar" erstellen will.

Denkst du/ihr da hat sich mittlerweile bis 2014 was geändert, sind ja schon 7 Jahre in Land gezogen?
Ich brauche auf dem Tabellenblatt im Prinzip keine Enter-Taste da man sich mit den Cursor Tasten darin bewegt und Enter ja immer die Zeile "umschlägt". Auch die Spaltenbreiten der Tabelle wären für sich jeweils fest definiert.... evtl. könnte man auch über ein Makro die Enter-Taste sperren und die Zeilenlänge bzw. "Eingabe" begrenzen? Könnte sowas funktionieren, wenn es noch keine Einstellung dafür in Writer gibt?

Vielen Dank

Re: Berechnung in WRITER Tabelle mit "variabler Formel" ?

von Stephan » Sa, 04.01.2014 12:36

Syntax?

Code: Alles auswählen

cellx.formula = "<B1:" & cellx.CellName & ">"
Anmerkung: wobei cellx hier, logischerweise, nicht zweimal dieselbe Zelle sein kann, richtiger ist also:

Code: Alles auswählen

cellx1.formula = "<B1:" & cellx2.CellName & ">"
das ändert aber am Prinzip nichts.

zusammengefasst für Spalte B also z.B.:

Code: Alles auswählen

sub aktiveZelle
view = ThisComponent.getCurrentController()
cursor = view.getViewCursor()
cellx = cursor.Cell
tmp1 = cellx.CellName
tmp2 = Right(tmp1, LEN(tmp1)-1)
tmp2 = VAL(tmp2) - 1
cellx.formula = "<B1:B" & tmp2 & ">"
end sub

Gruß
Stephan

Berechnung in WRITER Tabelle mit "variabler Formel" ?

von cytron » Sa, 04.01.2014 05:56

Ein Hallo hier an die Mitglieder des Forums -
ich bräuchte mal eure Hilfe bei einer Makro-Erstellung für eine WRITER tabelle - hoffe ich bin hier richtig.

Ich weiss dass Writer kein Calc ist und auch dass man in Writer-Tabellen teils anders verfahren muss.
Das Makro soll in einer Tabellenspalte -z. B. in der B-Spalte meiner erstellten Tabelle- die Werte aller Zellen addieren, die *ÜBER* der aktuellen Position (meiner Cursor Position) stehen... also im Prinzip das erledingen was man auch mit der Rechenleiste und Eingabe von z. B. =<B1:B6> in Writer erreicht... nur eben in Abhängigkeit von der Cursor Position. Diese Summe soll in einer Variablen im Macro abgelegt werden, damit ich sie später zu weiteren Berechnung per Macro heranziehen kann.

Nun ist die Tabellenspalte die ich addieren will aber ja nicht immer gleich lang, also z. B. oben im Beispiel bis <B6> ... das ist ja sozusagen "fest verdrahtet in der Formel", die Formel muss sozusagen variabel werden, also grob ausgedrückt =<B1:AktuelleCursorZelle>

Rausgefunden hab ich bisher folgendes - so funktioniert es "fest verdrahtet" in einem Writer Doc mit erstellter Tabelle drauf:

Code: Alles auswählen

sub aktiveZelle
view = ThisComponent.getCurrentController()
cursor = view.getViewCursor()
cellx = cursor.Cell
cellx.formula = "<B1:B6>"
end sub
Das Ergebnis der Addition wird oben in der aktuellen Cursor Zelle z. B. in B7 (in der mein Cursor) steht ausgegeben.

In Writer kann man nicht wie in Calc die Tabellenzellenadresse mit getCurrentSelection().getCellAddress() rausfinden, soviel ich weiss.

Es geht aber z. B.

Code: Alles auswählen

sub ZellenameBzwAdresse
view = ThisComponent.getCurrentController()
cursor = view.getViewCursor()
cellx = cursor.Cell
 msgbox cellx.CellName 'gibt in Writer die aktuelle Cursor-Zelladresse bzw. Zellnamen z. b. A1 aus 
end sub

Wie kriege ich nun "cellx.formula ="<B1:cellx.CellName>" ...also die variable "Summenformel" in Writer gebacken? Syntax?
Hat jemand nen Tip für mich? Vielen Dank

Nach oben