Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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

Spaltenweise Zellen auf Zeichen beschränken

Spaltenweise Zellen auf Zeichen beschränken
12.05.2014 08:17:43
Hans
Hallo liebe Leut,
hätte da mal wieder ein kleines Problem.
Ich würde gerne mehrere Spalten auf eine bestimmte Anzahl von Zeichen beschränken.
Das ganze über Gültigkeit zu machen geht leider nicht, da diese Formatierung sobald man kopiert aus anderen Tabellen flöten geht.
Habe es eigentlich schon geschafft nur das ich gerne beim kürzen eine Message Box ausgeben würde das die Zeichen zu viel waren und deshalb eingekürzt wurde.
Anbei mal meine Version:
Hierbei hängt sich allerdings Excel auf!
Wenn ich den Befehl mit der Message Box raus nehme funktionier es ohne Probleme. Wo ist den mein Fehler?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Columns("L"), Target) Is Nothing Then
Const A = 30
Target.Value = Left(Target.Value, A)
MsgBox "Text darf nur 30 Zeichen lang sein!"
End If
If Not Intersect(Columns("N"), Target) Is Nothing Then
Const B = 30
Target.Value = Left(Target.Value, B)
End If
If Not Intersect(Columns("P"), Target) Is Nothing Then
Const C = 12
Target.Value = Left(Target.Value, C)
End If
If Not Intersect(Columns("AH"), Target) Is Nothing Then
Const D = 7
Target.Value = Left(Target.Value, D)
End If
End Sub

Über rasche Hilfe wäre ich sehr dankbar.
MfG.: Hans Huerbel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Probiere es mal...
12.05.2014 08:59:31
Case
Hallo, :-)
... eventuell so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
Application.EnableEvents = False
Select Case Target.Column
Case 12, 14, 16, 34
Target.Value = Left(Target.Value, 30)
MsgBox "Text darf nur 30 Zeichen lang sein!"
End Select
Fin:
Application.EnableEvents = True
End Sub
Servus
Case

AW: Probiere es mal...
12.05.2014 09:33:18
Hans
Hallo Case.
Danke für Deine Hilfe.
Die Spalten sollen aber unterschiedlich viele Zeichen haben.
z.B. In Spalte L=30 Zeichen und Spalten N= 7Zeichen.
Die Message Box möchte ich eigentlich nur dann angezeigt bekommen wenn die Zeichenzahl überschritten wird und automatisch eingekürzt wird.
LG Hans Huerbel

Anzeige
Dann...
12.05.2014 10:08:56
Case
Hallo, :-)
... so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
Application.EnableEvents = False
If Not Intersect(Target, Range("L:L, N:N, P:P, AH:AH")) Is Nothing Then
Select Case Target.Column
Case 12, 14
Target.Value = Left(Target.Value, 30)
MsgBox "Text darf nur 30 Zeichen lang sein!"
Case 16
Target.Value = Left(Target.Value, 12)
MsgBox "Text darf nur 12 Zeichen lang sein!"
Case 34
Target.Value = Left(Target.Value, 7)
MsgBox "Text darf nur 7 Zeichen lang sein!"
End Select
End If
Fin:
Application.EnableEvents = True
End Sub
Servus
Case

Anzeige
Bzw. dann...
12.05.2014 10:14:28
Case
Hallo, :-)
... so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
Application.EnableEvents = False
If Not Intersect(Target, Range("L:L, N:N, P:P, AH:AH")) Is Nothing Then
Select Case Target.Column
Case 12, 14
If Len(Target.Value) > 30 Then
Target.Value = Left(Target.Value, 30)
MsgBox "Text darf nur 30 Zeichen lang sein!"
End If
Case 16
If Len(Target.Value) > 12 Then
Target.Value = Left(Target.Value, 12)
MsgBox "Text darf nur 12 Zeichen lang sein!"
End If
Case 34
If Len(Target.Value) > 7 Then
Target.Value = Left(Target.Value, 7)
MsgBox "Text darf nur 7 Zeichen lang sein!"
End If
End Select
End If
Fin:
Application.EnableEvents = True
End Sub
Servus
Case

Anzeige
AW: Bzw. dann...
13.05.2014 08:55:34
Hans
Hallo Case.
Also Dein Code gefällt mir besser! Vielen Dank!
Jetzt hätte ich noch eine kleine Frage.
Problem ist wenn ich jetzt eine ganze Spalte aus einer anderen Excel Datei kopiere und in die Tabelle einfüge in der die Spalten mit der Zeichenüberwachung sind dann begrenzt er die Anzahl der Zeichen nicht automatisch, sondern erst wenn ich in die Zellen hineinklicke ans ende der Eingabe springe und z.B. Enter drücke. Es wäre allerdings klasse wenn er egal welche art von Eingabe automatisch prüft, kürzt und bei zu Lang Msg herausgibt.
LG Hans Huerbel

Das kannst Du...
14.05.2014 08:19:28
Case
Hallo, :-)
... dann so machen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngRange As Range
Dim blnTMP As Boolean
On Error GoTo Fin
Application.EnableEvents = False
If Not Intersect(Target, Range("L:L, N:N, P:P, AH:AH")) Is Nothing Then
Select Case Target.Column
Case 12, 14
For Each rngRange In Target
If Len(rngRange.Value) > 30 Then
rngRange.Value = Left(rngRange.Value, 30)
blnTMP = True
End If
Next rngRange
If blnTMP = True Then MsgBox "Text in " & Target.Address(0, 0) & _
" darf nur 30 Zeichen lang sein!"
Case 16
For Each rngRange In Target
If Len(rngRange.Value) > 12 Then
rngRange.Value = Left(rngRange.Value, 12)
blnTMP = True
End If
Next rngRange
If blnTMP = True Then MsgBox "Text in " & Target.Address(0, 0) & _
" darf nur 12 Zeichen lang sein!"
Case 34
For Each rngRange In Target
If Len(rngRange.Value) > 7 Then
rngRange.Value = Left(rngRange.Value, 7)
blnTMP = True
End If
Next rngRange
If blnTMP = True Then MsgBox "Text in " & Target.Address(0, 0) & _
" darf nur 7 Zeichen lang sein!"
End Select
End If
Fin:
Application.EnableEvents = True
End Sub
Servus
Case

Anzeige
AW: Spaltenweise Zellen auf Zeichen beschränken
12.05.2014 10:15:37
Hans
So habs selber geschafft.
Wen es interessiert!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C30 As Integer
Dim D30 As Integer
Dim E12 As Integer
Dim F7 As Integer
C30 = 30
D30 = 30
E12 = 12
F7 = 7
If Not Intersect(Columns("L"), Target) Is Nothing Then
If Len(Target.Value) > C30 Then
Target.Value = Left(Target.Value, C30)
MsgBox "Bitte nicht mehr wie 30 Zeichen!!!"
Exit Sub
End If
End If
If Not Intersect(Columns("N"), Target) Is Nothing Then
If Len(Target.Value) > D30 Then
Target.Value = Left(Target.Value, D30)
MsgBox "Bitte nicht mehr wie 30 Zeichen!!!"
Exit Sub
End If
End If
If Not Intersect(Columns("P"), Target) Is Nothing Then
If Len(Target.Value) > E12 Then
Target.Value = Left(Target.Value, E12)
MsgBox "Bitte nicht mehr wie 12 Zeichen!!!"
Exit Sub
End If
End If
If Not Intersect(Columns("AH"), Target) Is Nothing Then
If Len(Target.Value) > F7 Then
Target.Value = Left(Target.Value, F7)
MsgBox "Bitte nicht mehr wie 7 Zeichen!!!"
Exit Sub
End If
End If
End Sub
LG Hans Huerbel
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige