Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1516to1520
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
Benutzerdefiniertes Format - Anzahl Textzeichen
07.10.2016 13:14:50
Frank
Hallo,
habe das Netz schon durchforstet und leider nichts gefunden.
Ist es (OHNE FORMEL, VBA etc) möglich die Zeichenlänge des Textes bei einer benutzerdefinierten Formattierung der Zelle zu begrenzen?
Hintergrund: Habe eine Dropdown-Zelle über die Gültigkeitsprüfung mit mitunter sehr langen Texteinträgen.
Nach Auswahl des entsprechenden Eintrags aus dem Dropdown reicht die Spaltenbreite nicht aus um den gesamten Text anzuzeigen.
Deshalb würde ich der Zelle über die Formattierung gerne mitteilen, dass z.B. nur jeweils 10 Textzeichen angezeigt werden und dann ... (Drei Punkte)
Also Eintrag durch Dropdown wäre bspw.: Max Mustermann
Das benutzerdefinierte Format soll dann anzeigen: Max Muster...
Irgendwie scheint der 4. Syntax Bereich der Zellenformattierung mit dem @ Zeichen sehr begrenzt zu sein.
Für jede Hilfe vorab dankbar.
Frank

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gibt es so nicht owT
07.10.2016 13:42:12
...
Gruß Werner
.. , - ...
Leider hat neopa recht, aber, wenn es dir ...
07.10.2016 22:01:50
Luc:-?
…nur darum geht, den Text ggf verkürzt anzuzeigen, ihn aber vollständig zu erhalten, Frank,
hast du mehrere Möglich­keiten, die formel- bzw VBA-basiert sind. Dabei hast du dann die Wahl zwischen direkter Text­Kürzung in einer Zelle oder einem direkt anzu­gebenden verkürzten Forma­tierungs­Text:
1. Die einfachste Möglichkeit bestünde allerdings darin, die Original­Text­Spalte auszu­blenden und den ggf verkürzten Text per Fml in der sicht­baren Nach­bar­Spalte anzu­zeigen.
2. Anderenfalls könnte der OriginalText auch erhalten bleiben, wenn in einer Hilfs­Spalte folgd Fml notiert wird: ="=ERSETZEN("""&A1&""";maxTextAnzeigeLänge;maxLängeZuErsetzdText;""…"")"
Das Ergebnis kann dann als Wert über den Original­Text kopiert wdn. In der so entstandenen Fml selbst wird der Original­Text erhalten. Die Fml muss dann nur noch aktiviert wdn.
Per VBA-Prozedur könnte auch direkt diese oder eine ähnliche Fml um den Original­Text herum­gelegt wdn.
3. Ebenfalls und nur per VBA-(Ereignis-)Prozedur, falls man das nicht manuell machen will, könnte ein aus dem Original­Text erzeugter Kurz­Text direkt ins Zell­Format geschrieben wdn, nämlich als benutzer­definiert so: …NumberFormat = ;;;"erzeugterKurztext"
🙈 🙉 🙊 Gruß, Luc :-?
Besser informiert mit …
Anzeige
Ergänzende Korrektur:
08.10.2016 00:00:17
Luc:-?
Als Zuweisung an ein ZellFormat per VBA muss es für die EreignisProzeduren Worksheet_Change bzw Worksheet_SelectionChange natürlich so lauten:
Target.NumberFormat = ";;;""erzeugterKurztext"""
Luc :-?
3 Affen - det kriechste nich hin :-) owT
08.10.2016 09:14:29
MB12
.
AW: das wäre nun wiederum mit Format möglich ...
08.10.2016 09:28:50
...
Hallo Margarete,
... doch dies ist genauso wenig von Frank gefragt, wie er ausdrücklich eine Lösung ohne VBA und ohne Formel gesucht hat.
Gruß Werner
.. , - ...
Wat nich iss, iss nich, ...
08.10.2016 14:18:00
Luc:-?
Werner,
aber da gibt's ja immer noch den Nutzer Schlauschlumpf, der sich auf einen bestimmten Lösungs­weg versteift hat und deshalb die Alternativen nicht mehr sieht:
1. VBA wäre ggf nur einmalig anzuwenden und per Ereignis­Prozedur nur, wenn's dynamisch sein soll, also sich die Texte ändern können/dürfen (→Format!).
2. Gleiches gilt für die temporäre Hilfsspalte mit der ERSETZEN-Fml. Ist deren TextFml erst einmal erzeugt, kann die OriginalSpalte damit beden­kenlos über­schrieben wdn (→der Original­Text wäre wieder­her­stell­bar!). Allerdings müsste das bei Text­Dynamik stets wieder­holt wdn, was besser eine VBA-Routine impli­zieren würde.
Und Handarbeit geht natürlich immer (das wäre die verbleibende Alternative ohne Fml & VBA, Margarete*!), wenn man sich das zumuten will…
Es kommt halt immer darauf an, was der eigent­liche Zweck dieser Übung, der uns nicht ver­raten wurde, sein soll. Die Erfahrung vieler Office-Berater lehrt aber, dass es ihn iaR gibt, weshalb dies­mal ich die Frage auf diese Weise hinter­fragt habe… ;-)
* Ansonsten wüsste ich nicht, was du mir sagen willst; geht's eher um die Affen oder eher die Sache…?
Gruß & schöWE, Luc :-?
Anzeige
um die Affen..
08.10.2016 18:54:21
MB12
, Luc, ich kann mir nicht vorstellen, dass du so rumlaufen könntest: Denn Luc sieht immer alles, sagt alles - wie es mit dem Hören aussieht, weiß ich nicht...
Schönes Wochenende :-)
Margarete
Bevorzuge d.anglo-indische Original-(Be-)Deutung!
09.10.2016 04:20:37
Luc:-?
Hören mag ich manches gar nicht, aber hier ist das Geschrei ja eher virtuell…
Und ich habe längst noch nicht alles gesagt…! ;-]
SchöSo, Luc :-?
see no evil, hear no evil, speak no evil ....
09.10.2016 11:09:39
MB12
wäre allerdings lt Wiki ursprünglich aus Japan,Luc - aber es gefällt mir.
Meinst du das?
Gruß, Margarete
Ja, 'anglo-fernöstlich' wäre besser gewesen, ....
09.10.2016 14:49:44
Luc:-?
…Margarete,
da Affen und Sprichwort tatsächlich japanisch, die Philosophie dahinter aber chinesisch ist und die Zusammenhänge mit dem ursprünglich aus Indien stammenden Buddhismus nur indirekter Natur sind. Nur ist anglo-indisch ein eingeführter Begriff und mir deshalb zuerst eingefallen…
Den 4.Affen gibt's scheint's nicht per Unicode (glücklicherweise?)… ;-]
Gruß, Luc :-?
Anzeige
der schmeckt dafür besser *grins* owT
09.10.2016 19:32:21
MB12
.
AW: Leider hat neopa recht, aber, wenn es dir ...
11.10.2016 13:44:59
Frank
Hi Luc,
hi alle anderen,
vielen Dank für die Infos. Also geht es offensichtlich nur über VBA. Hierfür ist Luc´s Variante #3 für mich die geeignetste.
Jetzt stehe ich allerdings noch vor dem Problem wie ich herausbekomme, ab wann der Text in einer Zelle ggfs. nicht mehr sichtbar ist, d.h. ab welchem Zeichen der Zeilenumbruch (bei entsprechender Zellformattierung) durchgeführt werden WÜRDE. Brauche ja die Zeichenlänge, die (da keine Monospace Schrift) jeweils von der Zusammensetzung der Buchstaben (z.B. W breiter als X) abhängt.
Hat hierzu jemand ne Idee?
Vielen Dank im Voraus
Frank
Anzeige
AW: Leider hat neopa recht, aber, wenn es dir ...
11.10.2016 15:02:38
Daniel
Hi
wenn du es berechnen wolltest, müsstest du die Breite der einzelnen Zeichen kennen.
Ich vermute mal, dass solche Tabellen im Betriebssystem irgendwo vorhanden sind, aber es dürfte unwahrscheinlich sein, dass du mit Standard-VBA darauf zugreifen kannst.
Wenn du sowieso ein Makro hast, dann kannst du den Text auf einem versteckten Blatt in eine Zelle oder auch eine AktiveX-Textbox schreiben.
dabei fängst du mit einer Textlänge an, die auf jeden Fall in die Zelle passt.
In der Schleife fügst du dann immer ein weiteres Zeichen hinzu und prüfst, ob sich die Zeilenhöhe (Zelle) oder die Anzzahl der Zeilen in der TextBox verändert hat (die Anzahl der Zeilen kannst du mit Textbox1.LineCount abfragen)
Wenn das passiert, brichst du die Schleife ab und weißt, wieviele Zeichen in deine Zelle passen.
Dabei musst du natürlich darauf achten, dass deine Prüfzelle/TextBox die gleiche Breite und die gleichen Schrifteinstellungen wie deine Zielzelle hat.
Gruß Daniel
Anzeige
AW: Leider hat neopa recht, aber, wenn es dir ...
11.10.2016 15:11:59
Frank
Hi Daniel,
danke vielmals das klingt gut und verstehe ich auch vom Vorgehen. Leider habe ich mein Excel-VBA Level als bescheiden angegeben und sage deshalb ganz offen, dass dies bisher aus VBA-Code kopieren und abändern besteht. Hättest du vielleicht einen einfachen Beispielcode? Das wäre super.
Vielleicht Zelle A1 mit Text länger als Spaltenbreite und dann VBA Ergebnis in B1 ab welcher Zeichenlänge gekappt werden müsste damit ich dann mit =Länge und =Links Formel eigenständig weiterkäme.
Besten Dank im Voraus
Frank
AW: Leider hat neopa recht, aber, wenn es dir ...
11.10.2016 15:49:02
Daniel
Hi
lege auf dem Tabellenblatt eine TextBox an, am besten im Style Flat.
dann schreibe diesen Code ins Modul des Tabellenblatts:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Address = "$A$1" Then
TextBox1.Font.Name = Target.Font.Name
TextBox1.Font.Size = Target.Font.Size
TextBox1.Font.Bold = Target.Font.Bold
TextBox1.Width = Target.Width
TextBox1.MultiLine = True
TextBox1.Activate
For i = 1 To Len(Target.Text)
TextBox1.Text = Left(Target.Text, i)
If TextBox1.LineCount  1 Then Exit For
Next
Application.EnableEvents = False
If i > Len(Target.Text) Then
Target.Offset(1, 0) = Target.Text
Else
Target.Offset(1, 0) = Left(Target.Text, i - 2) & "..."
End If
TextBox1.Text = ""
Application.EnableEvents = True
Target.Activate
End If
End Sub
bei Eingabe in die Zelle A1 wird dann der Text geprüft und der gekürzte Text in A2 ausgegeben.
da im Code der Focus auf die TextBox wechselt, wird das nur als Makro in dieser Form funktionieren und nicht als Funktion in einer Formel.
Gruß Daniel
Anzeige
AW: Leider hat neopa recht, aber, wenn es dir ...
12.10.2016 14:02:59
Frank
Hallo Daniel,
perfekt 1000 Dank. Hat super geklappt.
Zur Info: Habe dein Vorgehen dann noch mit Luc´s Vorschlag Nummer 3 verknüpft, insofern auch nochmal danke an Luc und alle anderen.
Grüße Frank
Bitte sehr! ;-) owT
12.10.2016 15:47:43
Luc:-?
:-?

250 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige