Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zelleninhalt auf überlange Zeichenlänge bei "lost focus" kontrollieren

18 views
Skip to first unread message

Markus Löw

unread,
Jan 6, 2005, 2:08:38 PM1/6/05
to
Hallo NG,
folgendes bekanntes Problem unter Excel:

Eine Zelle kann max. 256 Zeichen fassen. Mehr Zeichen bleiben zwar sichtbar,
aber werden ja nicht abgespeichert. Ich weiss, ich weiss... Excel ist zum
rechnen, Word zum schreiben.
Leider nutzt mir dies hier nichts. Ich habe eine Datei mit 50
Tabellenblätter. In jedem Tabellenblatt sind rund 20 Zellen, in die Text
kommen.

Ich suche folgende Möglichkeit:
Beim herausgehen aus einer dieser Zellen ("b2:d12") soll kontrolliert
werden, ob die Anzahl der Zeichen (oder Stringlänge) nicht die 256 Zeichen
überschreitet. Wenn JA, dann soll die aktive Zelle rot hinterlegt werden und
auf diese gesprungen werden.
Die Kontrolle kann beim verlassen der Zelle , beim Verlassen des
Arbeitsblattes oder vom dem Abspeichern passieren.


Hat einer von euch eine Lösung?

Hallo Melanie, da ich weiß, daß du immer mitliest:
Du hast am 2.3.04 schon mal so eine Lösung für ein ähnliches Problem
gepostet:

Private Sub Worksheet_Change(ByVal Target As Range)
' Melanie...@mvps.org | 02.03.2004
If Target.Address(0, 0) <> "H9" Then Exit Sub

With CreateObject("VBScript.RegExp")
.Pattern = "^\w*$"
If Not .test(Target) Then
MsgBox "falsche Eingabe"
Application.EnableEvents = False
Target.Value = ""
Target.Select
Application.EnableEvents = True
End If
End With
End Sub


Irgendwie komme ich damit aber nicht klar.

Gruß Markus

Alexander Wolff

unread,
Jan 6, 2005, 2:17:18 PM1/6/05
to
Pro Zelle gilt:

Formellänge <2^10 Zeichen (nicht 256)
(reine)Textlänge(ohne Formel) < 2^16 Zeichen

Nur so als Info ... leider ist xlimits nicht erreichbar zum Nachprüfen.

Gruß Alexander

"Markus Löw" <markus...@Spamweb.de> schrieb im Newsbeitrag
news:%23RtkiMC...@tk2msftngp13.phx.gbl...

Melanie Breden

unread,
Jan 6, 2005, 2:22:48 PM1/6/05
to
Hallo Markus,

Markus Löw schrieb:


> Ich suche folgende Möglichkeit:
> Beim herausgehen aus einer dieser Zellen ("b2:d12") soll kontrolliert
> werden, ob die Anzahl der Zeichen (oder Stringlänge) nicht die 256 Zeichen
> überschreitet. Wenn JA, dann soll die aktive Zelle rot hinterlegt werden und
> auf diese gesprungen werden.
> Die Kontrolle kann beim verlassen der Zelle , beim Verlassen des
> Arbeitsblattes oder vom dem Abspeichern passieren.

> Hat einer von euch eine Lösung?
>
> Hallo Melanie, da ich weiß, daß du immer mitliest:
> Du hast am 2.3.04 schon mal so eine Lösung für ein ähnliches Problem
> gepostet:
>
> Private Sub Worksheet_Change(ByVal Target As Range)

rofl!
ich lese zwar nicht immer Alles mit, bin aber schon öfter hier in der NG,
je nachdem, wie es meine Zeit erlaubt.

Anstelle einer VBA-Lösung würde ich hier eine Gültigkeitsprüfung nutzen:
Daten | Gültigkeit | Textlänge
Minimum: 0
Maximum: 256

Hilft dir das weiter?

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

Eberhard Funke

unread,
Jan 6, 2005, 3:44:15 PM1/6/05
to
"Markus Löw" <markus...@Spamweb.de> schrieb:

>Eine Zelle kann max. 256 Zeichen fassen. Mehr Zeichen bleiben zwar sichtbar,
>aber werden ja nicht abgespeichert.


Hallo Markus,

A1=WIEDERHOLEN("a";300)
A2=LÄNGE(A1) --> 300
Tabelle speichern, schließen, erneut laden:
A2=LÄNGE(A1) --> 300

Bitte beachte meine Excel Version.
--
Gruß Eberhard
XL 2000

Jörg Eisenträger

unread,
Jan 7, 2005, 8:26:54 AM1/7/05
to

Hi,

>Beim herausgehen aus einer dieser Zellen ("b2:d12") soll kontrolliert
>werden, ob die Anzahl der Zeichen (oder Stringlänge) nicht die 256 Zeichen
>überschreitet. Wenn JA, dann soll die aktive Zelle rot hinterlegt werden und
>auf diese gesprungen werden.

Wenn Du auf das automatische Zurücksetzen des Fokus verzichten kannst.
geht auch die bedingte Formatierung:
Formel ist =LÄNGE(B2)>256
Format > Muster > Farbe rot

Vorteil: Überlänge wird immer angezeigt, auch wenn das Feld nicht im
Editiermodus war oder ist. (Die Gültigkeitsprüfung würde z. B. nicht
anspringen, wenn ein überlanger Text per 'Bearbeiten > Inhalte einfügen
> Werte' eingefügt wird.)

Um ganz sicher zu gehen, dass die Feldeigenschaften (egal ob Gültigkeit
oder bedingte Formatierung) während des Bearbeitens durch den User nicht
gelöscht oder "wegkopiert" wurden, könntest Du die bedingte Formatierung
auch per VBA erst bei einem geeigneten Sheet- oder Workbook-Ereignis
setzen.


Gruß
Jörg
--
LPs auf CD brennen - so geht's: http://www.joergei.de/
E-Mail-Adresse existiert, wird aber nicht gelesen.

Markus Löw

unread,
Jan 8, 2005, 10:57:50 AM1/8/05
to
Danke an euch alle, die sich Zeit genommen haben, mir zu helfen.

Muß jetzt mal schauen, was mir an wenigsten Rechenzeit klaut. Glaube, die
bedingte Formatierung hat da am besten in, da ich ja nur ein einziges
Ereignis kontrollieren muß.

Gruß Markus


Markus Löw

unread,
Jan 10, 2005, 1:41:14 PM1/10/05
to
Hallo NG,
hier jetzt meine Lösung:

Dim Tabellenname
For Each Worksheet In ActiveWorkbook.Worksheets
Worksheet.Select
Tabellenname = Worksheet.Name
Select Case Tabellenname
Case "00"
Case Else
Range("B2:z100").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression,
Formula1:="=LÄNGE(B2)>3"
Selection.FormatConditions(1).Interior.ColorIndex = 3

End Select
Next
End Sub

Hab jetzt damit alle Zellen meiner Tabellen formatiert, die evt. beschrieben
werden könnten.

Danke an Jörg für die Anregung

Markus

"Markus Löw" <markus...@Spamweb.de> schrieb im Newsbeitrag

news:#RtkiMC9...@tk2msftngp13.phx.gbl...

0 new messages