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

Textlänge in Pixel, Punkt oder ä.

Textlänge in Pixel, Punkt oder ä.
02.12.2017 18:51:54
yogi
Hallöchen
ich muss längere Texte in einer Listbox anzeigen. Das Problem: In einem Listbox-Item gibt es keine automatischen Zeilenumbrüche. Ich habe das Problem nun so gelöst, dass ich den Text in homöopatische Teile splitte, die auf einer Zeile Platz haben. So werden aus einem längeren Text diverse Einträge in der Listbox. Mein Problem: Je nach Schriftart und Schriftgrösse braucht ein bestimmter Text mehr oder weniger Platz. Die ColumnWidth ist auf 474.95 Pt gesetzt. Wie kann ich nun feststellen, wieviele Zeichen des anzuzeigenden Textes da Platz haben?
Gruss
yogi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textlänge in Pixel, Punkt oder ä.
02.12.2017 18:53:24
Sepp
Hallo Yogi,
warum nimmst du eine Listbox zur Anzeige? Wäre eine Textbox nicht geeigneter?
Gruß Sepp

Makro hält an ohne Haltepunkt
02.12.2017 18:59:26
yogi
Salü Sepp
eine derartige Frage habe ich befürchtet. Es gibt diverse Gründe, warum eine Textbox nicht geht, so muss z.B. eine Meldung ausgewählt werden können. Die ganzen Randbedingungen will ich hier nicht erläutern, ich will nur wissen, wie ich die Breite eines Textes ermitteln kann.
Gruss
yogi
Textlänge in Listbox
02.12.2017 19:40:26
Sepp
Hallo Yogi,
eine kleine Beispieldatei: https://www.herber.de/bbs/user/118067.xlsm
Hier noch der Code:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub showForm()
UserForm1.Show
End Sub

Public Function breakText(ByVal theText As String, ByVal breakLength As Long) As String
Dim strTmp As String, strOut As String
Dim intLength As Integer, intN As Integer, intM As Integer
theText = Replace(theText, vbLf, " ")
intLength = Len(theText)
intM = 1
intN = 1
Do
  strTmp = Mid(theText, intN, breakLength)
  If intLength - intN >= breakLength Then
    If InStr(1, StrReverse(strTmp), " ") > 0 Then
      intM = Len(strTmp) - InStr(1, StrReverse(strTmp), " ") + 1
    Else
      intM = breakLength
    End If
  Else
    intM = Len(strTmp)
  End If
  strOut = strOut & Trim(Left(strTmp, intM)) & vbLf
  intN = intN + intM
Loop While intN < intLength
breakText = Left(strOut, Len(strOut) - 1)
End Function

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub UserForm_Initialize()
Dim strText As String, varList As Variant
Dim lngIndex As Long

strText = "Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen, gleich den süßen Frühlingsmorgen, die ich mit ganzem Herzen genieße. Ich bin allein und freue mich meines Lebens in dieser Gegend, die für solche Seelen geschaffen ist wie die meine. Ich bin so glücklich, mein Bester, so ganz in dem Gefühle von ruhigem Dasein versunken, daß meine Kunst darunter leidet. Ich könnte jetzt nicht zeichnen, nicht einen Strich, und bin nie ein größerer Maler gewesen als in diesen Augenblicken" & _
  "Wenn das liebe Tal um mich dampft, und die hohe Sonne an der Oberfläche der undurchdringlichen Finsternis meines Waldes ruht, und nur einzelne Strahlen sich in das innere Heiligtum stehlen, ich dann im hohen Grase am fallenden Bache liege, und näher an der Erde tausend mannigfaltige Gräschen mir merkwürdig werden; wenn ich das Wimmeln der kleinen Welt zwischen Halmen, die unzähligen, unergründlichen Gestalten der Würmchen, der Mückchen näher an meinem Herzen fühle, und fühle die Gegenwart des Allmächtigen, der uns nach seinem Bilde" & _
  "schuf, das Wehen des Alliebenden, der uns in ewiger Wonne schwebend trägt und erhält; mein Freund! Wenn's dann um meine Augen dämmert, und die Welt um mich her und der Himmel ganz in meiner Seele ruhn wie die Gestalt einer"

With txtDummy
  .Width = ListBox1.Width - 2
  .Font.Name = ListBox1.Font.Name
  .Font.Size = ListBox1.Font.Size
  .MultiLine = True
  .WordWrap = True
  .SetFocus
  Do
    lngIndex = lngIndex + 1
    .Text = Left(strText, lngIndex)
  Loop While .LineCount <= 1 And lngIndex <= Len(strText)
  .Visible = False
End With

varList = Split(breakText(strText, lngIndex), vbLf)

ListBox1.List = varList

End Sub

Gruß Sepp

Anzeige
AW: Textlänge in Pixel, Punkt oder ä.
02.12.2017 19:14:31
Nepumuk
Hallo,
schreib den Text in ein Label und setz dessen AutoSize-Eigenschaft auf True. Dann hast du die Breite des Textes. Das Label kannst du außerhalb des sichtbaren Bereichs des Userforms platzieren.
Gruß
Nepumuk
Textlänge in Pixel, Punkt oder ä.
02.12.2017 19:21:23
yogi
Salü Nepomuk
eine gute Idee. Werde mir das mal ansehen.
Gruss
yogi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige