AW: Textfeld als Aufzählung formatieren
24.07.2007 05:05:55
fcs
Hallo Alexander,
hier mein Lösungsvorschlag. Die einzulesenden Zellen werden dabei in Arrays für Zele und Spalte festgelegt. In einer 1. Schleife kann man dann zunächst den Text zusammenfügen, wobei gleichzeitig die Position der 1. Zeichen der Zeilen in einem Array gespeichert wird. In einer 2. Schleife wird dann das 1. Zeichen jeder Zeile in Schriftart Wingdings formatiert um das Aufzählungszeichen anzuzeigen.
Gruß
Franz
Sub AufzaehlungInTextbox()
Dim wks As Worksheet, TextField1 As TextFrame, arrZeilen, arrSpalten
Dim arrBeginn(), strText$, i%
Set wks = Worksheets(1)
Set TextField1 = Worksheets(1).Shapes(1).TextFrame
arrZeilen = Array(1, 2, 3) 'Zeilennummern der Zellen
arrSpalten = Array(1, 1, 2) 'Spaltennumern der Zellen
'Feld für die Position des 1. Zeichens jeder Zeile
ReDim arrBeginn(LBound(arrZeilen) To UBound(arrZeilen))
With wks
For i = LBound(arrZeilen) To UBound(arrZeilen)
'Zeichen 108 ist "l", wird zum Bullet mit Font Wingdings
If strText = "" Then
arrBeginn(i) = 1
strText = Chr$(108) & " " & .Cells(arrZeilen(i), arrSpalten(i)).Text
Else
arrBeginn(i) = Len(strText) + 2
strText = strText & Chr$(10) & Chr$(108) & " " _
& .Cells(arrZeilen(i), arrSpalten(i)).Text
End If
Next
End With
With TextField1
.Characters.Text = strText
'Basisformatierung des Textes
With .Characters(Start:=1, Length:=Len(strText)).Font
.Name = "Arial"
.FontStyle = "Standard"
.Size = 12
.Bold = False
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
'1. Zeichen der Zeile in anderer Schriftart
For i = LBound(arrZeilen) To UBound(arrZeilen)
With .Characters(Start:=arrBeginn(i), Length:=1).Font
.Name = "Wingdings"
.Size = 8
End With
Next
End With
End Sub