Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel: Zeilenlänge > X anzeigen?





Frage

Hallo miteinander, ich frage mich, ob es eine Möglichkeit gibt, sich von Excel anzeigen zu lassen (z. B. durch bedingte Formatierung => Zelle wird rot eingefärbt oder ähnliches), wenn mindestens eine Zeile in einer Zelle mit mehreren Zeilen eine bestimmte Zeichenanzahl überschreitet. Z.B.: Eine Zelle hat drei Zeilen, die alle nicht länger als 30 Zeichen sein sollen. Eine Zeile hat aber 32 Zeichen. In einem solchen Fall wäre es schön, wenn die Zelle sich z. B. einfärbt oder sonst irgendwie schreit: Hallo! Hier werden die Regeln nicht eingehalten! Die Zeilenlängen bekomme ich mit "getLengthOfLines", aber weiter ...? Hat jemand eine Idee? Das wäre klasse. :) Danke!

Antwort 1 von Hajo_Zi

Hallo Arantxa,

mit Daten, Güligkeit kannst Du das schon bei der Eingabe verhngern.

Format, bedingte Formatierung, Formel ist, =Länge(A1)>30, und Farbe wählen.

Gruß Hajo

Antwort 2 von Arantxa

Hallo Hajo,

danke für deine fixe Antwort.

Das Problem mit "=Länge" ist allerdings, dass es die Gesamtzeichenzahl der Zelle zählt. Ich brauche aber eine Prüfung pro Zeile.
Dafür habe ich ein Makro, das ich allerdings nicht selbst geschrieben oder aufgezeichnet habe. Es wurde mir zur Verfügung gestellt.

Da ich Tausende von Zellen habe, die ich überprüfen muss, wäre es halt schön, eine optische Hilfe zu haben, die mir erspart, mir jede einzelne Zeilenlänge anschauen zu müssen.

Antwort 3 von meinTipp

Hallo Arantxa,

ein Macro (Sub irgendeinname) hilft da nicht weiter.
Für die bedingte Formatierung musst du eine Function haben, die einen Wahrheitswert zurückgibt.
Ich habe dir eine Function geschrieben die so einen Wahrheitswert (Boolean) zurückgibt.

Dies in ein Modul eintragen:

'Anfang Function

Option Explicit ' muss in der ersten Zeile des Moduls sein!

Function Zeile_zu_lang(Text As String, max_lg As Integer) As Boolean
Dim int_Anfang, int_lg, int_wo As Integer

int_lg = Len(Text)
int_Anfang = InStr(1, Text, Chr(10)) ' Chr(10) ist der Zeilentrenner

If int_Anfang = 0 Then
If int_lg > max_lg Then
Zeile_zu_lang = True
Else
Zeile_zu_lang = False
End If
Exit Function
End If

Zeile_zu_lang = False

int_Anfang = int_Anfang + 1

Do While int_Anfang < int_lg
int_wo = InStr(int_Anfang, Text, Chr(10))
If int_wo > 0 Then
If (int_wo - int_Anfang) > max_lg Then
Zeile_zu_lang = True
Exit Function
Else
int_Anfang = int_wo + 1
End If
Else
If int_lg - int_Anfang >= max_lg Then Zeile_zu_lang = True
Exit Function
End If
Loop

End Function


'Ende Function

Bedingte Formatierung
D1 enthält den Text und ist dementsprechend anzupassen.
32: maximal zulässigen Zeichen vor dem Zeilenumbruch.

Formel:
=Zeile_zu_lang(D1;32) --> Format einstellen

Gruss Rolf

Antwort 4 von Arantxa

Großartig! Vielen Dank!
Du weißt gar nicht, wie viel Arbeit du mir damit erspart hast. :)