Seite 1 von 1
Text soll Zelle nicht überschreiten
Verfasst: Do, 28.06.2007 10:20
von Chriz
Ich möchte eine Beschränkung für Zellen eingeben,
das der Text nicht in die Nachbarzelle hereinragt.
Automatischer Zeilenumbruch scheidet aus genau wie Gültigkeit -> Textlänge.
Beim Zeilenumbruch wird entweder die Zelle verändert oder man sieht den Text nicht.
Gültigkeit -> Textlänge lässt sich schwer definieren, da 50 mal H wesentlich breiter wird als 50 mal i.
Es müsste eine Kombination aus "auto Zeilenumbruch" und nur "eine Textzeile erlaubt" sein.
Gibt es sowas?
Re: Text soll Zelle nicht überschreiten
Verfasst: Do, 28.06.2007 10:41
von Eia
Viel fällt mir nicht dazu ein. Du könntest eine Schriftart wählen, die nicht proportional ist, also z.B. "Bitstream Vera Sans Mono" oder "Courier" oder "Letter Gothik", dann umgehst Du das Problem mit den unterschiedlichen Buchstabenbreiten. Allerdings werden dann die Spalten grundsätzlich breiter.
In die Nachbarzelle dehnt sich ein Text aber ja nur dann aus, wenn diese leer ist. Vielleicht hilft Dir dieser Beitrag mit einem Makro:
viewtopic.php?f=2&t=12820&p=51189&hilit=#p51189
Du könntest damit ja einfach ein Leerzeichen in die leeren Zellen schreiben lassen. Dann können Nachbarzellen diese leere Zellen nicht mehr benutzen.
mfG
Re: Text soll Zelle nicht überschreiten
Verfasst: Do, 28.06.2007 12:34
von Chriz
Daran habe ich auch schon gedacht, der Text ist dann zwar nicht in der Nachbarzelle, aber auch nicht mehr zu sehen.
Und die Tabelle soll von absoluten Computer Laien ausgefüllt werden.
Ich muss da also alle möglichen Fehlerquellen im Vorfeld ausschließen.
Re: Text soll Zelle nicht überschreiten
Verfasst: Do, 28.06.2007 12:42
von Eia
Ja, dann bleibt Dir wohl nur die Variante mit der nicht-proportionalen Schrift und der Gültigkeit. Ist aber zugegebenermaßen nicht die bequemste Art der Eingabe, weil man zunächst soviel schreiben kann, wie man will und erst beim Abschließen der Eingabe die Prüfung erfolgt, die dann wieder den ganzen Inhalt löscht.
mfG
Re: Text soll Zelle nicht überschreiten
Verfasst: Mi, 04.07.2007 17:13
von Gert Seler
Hallo Chriz & Eia,
sind mir eben 2 Beispiele für "Zellformatierungen" in "Star-Basic" in die Hände gefallen.
Diese beschreiben, wie die "optimale Spalten- oder Zellbreite im Modul funktionieren soll. Aus "Star-Office Programmierhandbuch für BASIC"
Zeilen und Spalten
Jede Tabelle enthält eine Liste ihrer Zeilen und Spalten. Sie sind über die Eigenschaften Rows beziehungsweise Columns des Tabellenobjekts verfügbar und unterstützen die Dienste com.sun.star.table.TableColumns beziehungsweise com.sun.star.table.TableRows.
Das folgende Beispiel erzeugt zwei Objekte, die auf die erste Zeile und die erste Spalte einer Tabelle verweisen, und speichert diese Referenzen in den Objektvariablen FirstCol und FirstRow.
Dim Doc As Object
Dim Sheet As Object
Dim FirstRow As Object
Dim FirstCol As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
FirstCol = Sheet.Columns(0)
FirstRow = Sheet.Rows(0)
Die Spaltenobjekte unterstützen den Dienst com.sun.star.table.TableColumn, der folgende Eigenschaften bereitstellt:
*
Width (Long): Breite einer Spalte in 100stel Millimeter.
*
OptimalWidth (Boolean): setzt eine Spalte auf ihre optimale Breite.
*
IsVisible (Boolean): zeigt eine Spalte an.
*
IsStartOfNewPage (Boolean): erzeugt beim Drucken vor einer Spalte einen Seitenumbruch.
Die Breite einer Spalte wird nur optimiert, wenn die Eigenschaft OptimalWidth auf True festgelegt ist. Wird die Breite einer einzelnen Zelle geändert, bleibt die Breite der Spalte, in der sich die Zelle befindet, unverändert. Funktional handelt es sich bei OptimalWidth also eher um eine Methode als um eine Eigenschaft.
Die Zeilenobjekte basieren auf dem Dienst com.sun.star.table.RowColumn, der folgende Eigenschaften bereitstellt:
*
Height (long): Höhe der Zeile in 100stel Millimeter.
*
OptimalHeight (Boolean): setzt die Zeile auf ihre optimale Höhe.
*
IsVisible (Boolean): zeigt die Zeile an.
*
IsStartOfNewPage (Boolean): erzeugt beim Drucken vor einer Zeile einen Seitenumbruch.
Wenn die Eigenschaft OptimalHeight einer Zeile auf den Wert True festgelegt ist, ändert sich die Zeilenhöhe automatisch, wenn die Höhe einer Zelle in der Zeile geändert wird. Die automatische Optimierung bleibt so lange aktiv, bis der Zeile über die Eigenschaft Height eine absolute Höhe zugewiesen wird.
Folgendes Beispiel aktiviert die automatische Höhenoptimierung für die ersten fünf Zeilen in der Tabelle und blendet die zweite Spalte aus.
Dim Doc As Object
Dim Sheet As Object
Dim Row As Object
Dim Col As Object
Dim I As Integer
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
For I = 0 To 4
Row = Sheet.Rows(I)
Row.OptimalHeight = True
Next I
Col = Sheet.Columns(1)
Col.IsVisible = False
Hinweis –
Auf die Listen Rows und Columns kann über einen Index in StarOffice Basic zugegriffen werden. Anders als in VBA hat die erste Spalte jedoch den Index 0 und nicht den Index 1.
Es handelt sich um " Star-Office 8.0 ". Vielleicht kann jemand daraus eine Lösung programmieren.
mfg
Gert