Post by Andreas KillerBreite = Split(Replace(.ColumnWidths, "Pt", "", Compare:= _
Was macht dieser Teil und wozu wird es benötigt?
Hast Du schon mal das Überwachungsfenster zum überwachen von
Ausdrücken benutzt?
Also VBA-Editor an, Code rein und dann klickst Du auf obige Zeile und
drückst F9 um einen Haltepunkt zu setzen.
Drück F5 um die Userform zu starten und klick in die Listbox.
Der Code stoppt an der obigen Stelle mit dem Haltepunkt.
Nun klick mal auf Ansicht\Überwachungsfenster
Markiere das Wort Breite (z.B. mittels Doppelklick darauf)
Drück Shift-F9 oder klick Debuggen\Aktuellen Wert anzeigen
Klick hinzufügen.
Im Überwachungsfenster siehst Du nun das Breite den Wert "leer" hat.
Bewege den Mauscursor auf .ColumnWidths und halte still. Nach einem
Moment siehst Du einen Tooltip der Dir den Inhalt anzeigt:
"20 Pt;40 Pt" usw.
(Falls nicht markiere .ColumnWidths und drück Shift-F9, dann abbrechen)
Drück F8 um die Zeile auszuführen und schau in das
Überwachungsfenster, Breite ist nun vom Typ Variant/String(0 to 5).
Klick auf das + links neben Breite und nun kannst Du die einzelnen
Werte sehen.
Kurz gesagt: Die Zeile zerlegt alle Breiten in einzelne Werte und gibt
die so die breite jeder einzelnen Spalte zurück.
Post by Andreas KillerSpalte = LBound(Breite) To UBound(Breite)
Breite ist ja ein Array und diese können je nach "Option Base" mit 0
oder 1 anfangen, d.h. Breite könnte ein String(0 to 5) oder
String(1 to 6) sein.
Mit LBound kann man die untere Grenze und UBound die obere Grenze des
Array's zuverlässig feststellen. Wenn man's genau weiß kann man auch
for Spalte = 0 To 5 sagen.
Andreas.