AW: Userform Textbox mit Zellbereich befüllen
14.12.2006 12:17:36
fcs
Hallo Emanuel,
du muss dann eine entsprechende Initialize- oder Activate-Prozedur für das Userform erstellen, die vor der Anzeige des Userforms die Daten in die Textbox schreibt. Allerdings ist es insgesamt einfacher so einen Tabellenausschnitt in einer Listbox darzustellen.
Gruss
Franz
Hier ein Beispiel-Code: Damit die Spalten sauber ausgerichtet werden muss für den Font der Textbox eine nicht-proportionale Schrift festgelegt werden. Die Texte in den Spalten werden jeweils mit Leerzeichen aufgefüllt. Als kleine Hilfe hab ich auch den entsprechenden Code zu Initialisierung einer Listbox eingefügt.
Private Sub UserForm_Initialize()
Dim DatenTextBox As Range, wks As Worksheet, SpalteZeichen(1 To 5) As Integer
Set wks = ActiveWorkbook.Worksheets("Tabelle1") 'Tabelle mit Daten
'Textboxvariante
Set DatenTextBox = wks.Range("I37:M44") 'Bereich mit Daten ohne Spaltentitel
Me.TextBox1.MultiLine = True
Me.TextBox1.Font.Name = "Courier New" 'oder nicht proportionale Schrift
Me.TextBox1.Value = ""
'Max Zeichen je Spalte ermitteln
For J = 1 To DatenTextBox.Columns.Count
For I = 1 To DatenTextBox.Rows.Count
SpalteZeichen(J) = IIf(Len(DatenTextBox(I, J)) > SpalteZeichen(J), _
Len(DatenTextBox(I, J)), SpalteZeichen(J))
Next
Next
'Text eintragen
For I = 1 To DatenTextBox.Rows.Count
If I <> 1 Then Me.TextBox1.Value = Me.TextBox1.Value & vbLf
For J = 1 To DatenTextBox.Columns.Count
If J = 1 Then
Me.TextBox1.Value = Me.TextBox1.Value & DatenTextBox(I, J)
Else
Me.TextBox1.Value = Me.TextBox1.Value & String(SpalteZeichen(J - 1) - _
Len(DatenTextBox(I, J - 1)), " ") & "|" & DatenTextBox(I, J)
End If
Next
Next
'Listboxvariante
Set DatenTextBox = wks.Range("I38:M44") 'Bereich mit Daten ohne Spaltentitel
Me.ListBox1.ColumnHeads = True
Me.ListBox1.ColumnCount = 5
Me.ListBox1.RowSource = "'" & wks.Name & "'!" & DatenTextBox.Address
End Sub