Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1136to1140
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text-Überlauf in Excel-Zelle erkennen

Text-Überlauf in Excel-Zelle erkennen
Willi
Hallo,
wer kann mir bei folgender Aufgabenstellung helfen?
Auf meinem Excel-Arbeitsblatt ist die Größe der Zellen fest vorgegeben, mit Zeilenumbruch. Wenn der in eine Excel-Zelle eingetragene Text länger ist, als der in der Zelle darstellbare Text, so wird der zu lange Text in der Ansicht und im Ausdruck abgeschnitten.
Die Aufgabe besteht darin, zu erkennen, ob der in der Ansicht und dem Ausdruck dargestellte Text vollständig ist oder ob Teile davon abgeschnitten worden sind. Falls Text abgeschnitten wurde soll auf dem Arbeitsblatt ein entsprechender Warnhinweis eingetragen werden.
Hintergrund ist, dass der Ausdruck die Basis zur weiteren Bearbeitung ist, und wenn Text abgeschnitten wurde, fehlen dem Bearbeiter wichtige Informationen, ohne dass er das merkt.
Mir fällt dazu nur ein, die Anzahl der Zeichen in dem Text zu ermitteln und diese mit der in der Zelle maximal darstellbaren Zeichenzahl zu vergleichen. Das ist aber eine sehr unsichere Methode, da eine Proportionalschrift vorliegt, in der die unterschiedlichen Zeichen unterschiedlich viel Platz einnehmen.
Hat jemand eine bessere Idee?
Herzlichen Dank im Voraus für Eure Hilfe!
Gruß
Willi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bedingte Formatierung
19.02.2010 13:13:18
welga
Hallo Willi,
eventuell kannst du das per Makro abfragen:
Mal ein Bsp:
In den Code der Tabelle:
Sub worksheet_change(ByVal target As Range)
Dim V As Variant
If Not Intersect(ActiveSheet.UsedRange, target) Is Nothing Then
V = Split(target.Value, vbLf)
zeilenumbruchanzahl = UBound(V) + 1
b = target.Rows.RowHeight
c = target.Font.Size
c = c * zeilenumbruchanzahl
If c > b Then MsgBox "Zelle ist überfüllt"
End If
End Sub

Anzeige
AW: Bedingte Formatierung
21.02.2010 13:19:28
Willi
Hallo Welga,
danke für Deinen Vorschlag. Habe damit ziemlich viel versucht, aber leider geht es so nicht.
Dein Vorschlag setzt voraus, dass, dass jede Zeile mit enem manuellen Zeilenumbruch abgeschlossen wird, versagt aber bei automatischem Zeilenumbruch durch Excel. Aber da gibt es wohl keine Abhilfe, oder?
Der Ausdruck
b = target.Rows.RowHeight
für die Zellenhöhe gibt nur die Höhe einer Zeile zurück. Bei verbundenen Zellen mit mehreren Zeilen (wie bei mir) gibt es ein Problem, weil target nur die 1. Zeile bezeichnet. Hier muß der gesamte Bereich z.B. "B2:C5" angegeben werden und es muss heißen
Range("B2:C5").Height.
Auch entspricht die Schriftgröße Font.Size nicht der Zeilehöhe, selbst dann nicht, wenn "Optimale Zeilenhöhe" eingestellt ist, weil über und unter der Schrift immer noch etwas Platz ist. Somit ist die Rechnung
Texthöhe = Zeilenumbruchanzahl * Schrifthöhe
falsch.
Aber Dein Vorschlag hat mir trotzdem weiter geholfen. Bei mir geht es nur um eine bestimmte Zelle mit fester Höhe und fester Schriftgröße, sodaß auch die Anzahl der maximal anzeigbare Zeilen fest vorgegeben ist. Somit führt der Vergleich
if Zeilenumbruchanzahl > MaxZeilenzahl then
zum Ziel.
Für mich war die Funktion
V = Split(target.Value, vbLf)
neu. Wo kann ich darüber etwas Näheres nachlesen? Die Hilfe in Excel/VBA dazu verstehe ich nicht.
Nochmals herzlichen Dank für Deine Unterstützung!
Gruß
Willi
Anzeige
AW: Bedingte Formatierung
21.02.2010 15:47:27
Reinhard
Hallo Willi,
was ist dir an
"V = Split(target.Value, vbLf)"
unklar?
Das was in Target drinsteht (könnte Probleme geben wenn Target mehr als eine einzige Zelle iist) wird aufgesplittet an den Stellen wo darin das Trennzeichen, hier vbLf, könntest aber auch jedes andere Zeichen wie Komma, Punkt usw. nehmen, steht.
Ich nehm mal as Trennzeichen das Komma, ist hier einfacher darzustellen.
V = Split("abc",",")
ergibt nur
V(0)="abc"
V = Split("abc,def,ghi,jkl",",")
ergibt
V(0)="abc"
V(1)="def"
V(2)="ghi"
V(3)="jkl"
Mit Msgbox UBound(V) ermittelst du die Anzahl der Elemente in V.
Aber da es ein Array ist beginnt das Zählen mit 0, also bedeutet Ubound()=3 daß es 4 Elemente sind.
Gruß
Reinhard
Anzeige
AW: Bedingte Formatierung
22.02.2010 13:35:53
Willi
Hallo Reinhard,
ich danke Die für Deine einfache Erklärung. Jetzt habe ich verstanden, was die Funktion "Split" eigentlich tut, und jetzt verstehe ich auch die Aussage in der Hilfe in Excel/VA (zumindest teilweise). Eigentlich sollte es ja umgekehrt sein.
Die Funktion scheint mir ganz nützlich zu sein. Bisher habe ich das Gleiche mit einem längeren Code realisiert. Aber mit Split ist das natürlich viel einfacher.
Also nochmals vielen Dank und Grüße
Willi
AW: Bedingte Formatierung
21.02.2010 11:41:01
Willi
Hallo Beate,
danke für den Tip, aber leider trifft das nicht meine Aufgabenstellung. Da gehtes ja nur um die Anzahl der Zeichen in dem Text, aber nicht darum, ob der Text größer ist als in der Zelle angezeigt werden kann.
Trotzdem, danke für Deine Mühe!
Gruß Willi
Anzeige

357 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige