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
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...
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#
>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
>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.
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
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...