Seite 1 von 1
Tabelle: Spalten anfügen, OHNE Breite anderer Spalten zu verändern
Verfasst: Mo 4. Mär 2019, 08:37
von volvox
Liebe Foren-Kolleg_innen,
meine Frage betrifft einen sehr häufigen Vorgang, ich vermute daher, dass es eine entsprechende Instellung in Writer gibt, habe aber auf Anhieb keine Lösung gefunden.
Problem:
- Ich habe eine Tabelle, die ich nach meinen Vorstellungen formatiert habe.
- Nun möchte ich ganz einfach eine (oder mehrere) Spalten rechts anfügen.
- Mache ich das mittels Einfügen/Spalten rechts, Einfügen/Spalten... oder mit dem entsprechenden Button, wird zwar eine Spalte angefügt, die in ihren Dimensionen derjenigen gleicht, in der ich meinen Cursor stehen hatte;
ABER leider werden automatisch auch die Spaltenbreiten der links der neu eingefügten Spalten verändert.
Das macht mich verrückt, nach jeder Erweiterung einer Tabelle muss ich sie insgesamt neu formatieren - sehr unpraktisch!
Logisch wäre ein solches Verhalten nur, wenn durch die neu angefügten Spalten ein Teil der Tabelle vom Blatt verdrängt würde.
Es ist mir ehrlich gesagt schleierhaft, wie ein solches Verhalten als Default vorgesehen werden konnte,
aber wenn es eine Einstellung gibt, dieses Verhalten einfach zu ändern, sei es mir recht.
Frage:
--> Gibt es also eine Einstellung, mit der ich festlegen kann, dass hinzugefügte Spalten den Rest der Tabelle einfach völlig unverändert lassen; und wo kann ich sie finden?
Ich danke im Voraus für eure Hilfe.
Grüße aus Wien!
Re: Tabelle: Spalten anfügen, OHNE Breite anderer Spalten zu verändern
Verfasst: Mo 4. Mär 2019, 09:58
von Mondblatt24
Hallo,
Nun möchte ich ganz einfach eine (oder mehrere) Spalten rechts anfügen.
Spalten werden nicht
angefügt, sondern nur in die bestehende Tabelle
eingefügt.
Gruß Peter
Re: Tabelle: Spalten anfügen, OHNE Breite anderer Spalten zu verändern
Verfasst: Mo 4. Mär 2019, 10:06
von Pit Zyclade
volvox hat geschrieben: ↑Mo 4. Mär 2019, 08:37
... Mache ich das mittels Einfügen/Spalten rechts, Einfügen/Spalten... oder mit dem entsprechenden Button, wird zwar eine Spalte angefügt,
die in ihren Dimensionen derjenigen gleicht, in der ich meinen Cursor stehen hatte;
ABER leider werden automatisch auch die Spaltenbreiten der links der neu eingefügten Spalten verändert...
...
Dem ist nicht so. Diese Spalte wird ebenfalls schmaler. Übrigens ist es völlig gleich, ob man die Spalte vor oder nach der betreffenden einfügt. Einzig die Tabellenbreite bleibt unverändert. (Jedenfalls stimmt meine Feststellung bei leerer Tabelle.)
Nein, für deinen Wunsch habe ich derzeit auch keine Lösung.
Re: Tabelle: Spalten anfügen, OHNE Breite anderer Spalten zu verändern
Verfasst: Mo 4. Mär 2019, 15:20
von volvox
@ Pit Zyclade:
Stimmt, du hast, recht, auch die anderen Spalten werden in ihrer Breite verändert.
Schade, dass man das Verhalten diesbezüglich scheinbar nicht festlegen kann; aber vielleicht kommt das ja noch
Danke jedenfalls für dein Bemühen.
@ Mondblatt24:
Nun, ich habe das absichtlich so formuliert, um meine Ausgangssituation möglichst genau zu beschreiben (da ich kein Bild raufladen kann);
Anfügen beschreibt, wie ich meine sprachlich korrekt, das Hinzufügen von Spalten an ein Ende einer Tabelle, das
Einfügen das Hinzufügen im Binnenbereich einer Tabelle, also an einer Stelle, an der sowohl links als auch rechts mindestens eine Spalte liegt
(Mag sein, dass in der Dokumentation von LO immer nur von Einfügen die Rede ist)
Wie dem auch sei, draußen scheint die Sonne
LG
Re: Tabelle: Spalten anfügen, OHNE Breite anderer Spalten zu verändern
Verfasst: Mo 4. Mär 2019, 18:30
von F3K Total
Hallo volvox,
ich wollte es wissen: Mit folgendem Makro, wird rechts an die Tabelle, in der der Cursor steht, eine 1 cm breite Spalte angehängt,
Beispieldatei anbei.
Code: Alles auswählen
Sub Insert_one_column
oTexttable = thiscomponent.Currentselection(0).Texttable
oTexttable.HoriOrient = 3
nWidth = oTexttable.Width
nColumnWidth = 1000 '1 cm
oColumns = oTexttable.Columns
nCount = oColumns.count
oTableColumnSeparators = oTexttable.TableColumnSeparators
dim nPos(nCount-1) as integer
for i = 0 to uBound(oTableColumnSeparators)
nPos(i) = oTableColumnSeparators(i).Position * nWidth /(nWidth + nColumnWidth)
next i
nPos(i) = 10000 * nWidth /(nWidth + nColumnWidth)'neue Spalte beginnt bei der alten Breite
oColumns.insertByIndex( nCount, 1)
oTableColumnSeparators = oTexttable.TableColumnSeparators
for i = 0 to uBound(oTableColumnSeparators)
oTCSs = oTableColumnSeparators
oTCS = oTCSs(i)
oTCS.Position = nPos(i)
oTCSs(i)= oTCS
next i
oTexttable.Width = oTexttable.Width + nColumnWidth 'Tabelle breiter machen
oTexttable.TableColumnSeparators = oTCSs 'Spalten wieder ausrichten
End Sub
Damit das Makro laufen darf, stellst du unter
Extras/Einstellungen/Openoffice/Sicherheit/Makrosicherheit oder
Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe
Mittel ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R
Re: Tabelle: Spalten anfügen, OHNE Breite anderer Spalten zu verändern
Verfasst: Di 5. Mär 2019, 16:40
von F3K Total
Hallo,
hatte ich gestern noch vor, habe es aber nicht mehr geschafft. Folgendes Makro fügt eine Spalte ein, die die verfügbare Seitenbreite exakt ausnutzt, d.h. die Tabelle ist nach dem Einfügen der Spalte genau so breit, wie dier beschreibbare Bereich der aktuellen Seite.
Alle vorigen Spalten bleiben in ihrer Breite erhalten.
Code: Alles auswählen
Sub Insert_one_column
oSel = thiscomponent.Currentselection(0)
oTexttable = thiscomponent.Currentselection(0).Texttable
oTexttable.HoriOrient = 3
sPageStyle = oSel.PageStyleName
oStyle = Thiscomponent.StyleFamilies.PageStyles.getbyName(sPageStyle)
nPW = oStyle.Width
nPRM = oStyle.RightMargin
nPLM = oStyle.LeftMargin
nWidth = oTexttable.Width
nColumnWidth = nPW - nPRM - nPLM - nWidth
oColumns = oTexttable.Columns
nCount = oColumns.count
oTableColumnSeparators = oTexttable.TableColumnSeparators
dim nPos(nCount-1) as integer
for i = 0 to uBound(oTableColumnSeparators)
nPos(i) = oTableColumnSeparators(i).Position * nWidth /(nWidth + nColumnWidth)
next i
nPos(i) = 10000 * nWidth /(nWidth + nColumnWidth)'neue Spalte beginnt bei der alten Breite
oColumns.insertByIndex( nCount, 1)
oTableColumnSeparators = oTexttable.TableColumnSeparators
for i = 0 to uBound(oTableColumnSeparators)
oTCSs = oTableColumnSeparators
oTCS = oTCSs(i)
oTCS.Position = nPos(i)
oTCSs(i)= oTCS
next i
oTexttable.Width = oTexttable.Width + nColumnWidth 'Tabelle breiter machen
oTexttable.TableColumnSeparators = oTCSs 'Spalten wieder ausrichten
End Sub
Gruß R