Herbers Excel-Forum - das Archiv
Userform Textbox mit Zellbereich befüllen
Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Betrifft: Userform Textbox mit Zellbereich befüllen
von: Emanuel
Geschrieben am: 13.12.2006 17:28:39
Hallo Makro-Profis,
folgendes Problem habe ich. Und zwar habe ich auf einem Tabellenblatt einen Zellbereich identifiziert und den möchte ich in einer Textbox in einen Formular anzeigen lassen. Der Zellbereich sieht etwa so aus, dass in der ersten Zeile die Bezeichnung der Spalten steht und in den unteren Zeilen die Werte. Wie kann ich die Textbox dazu kriegen, in der ersten Zeile die Bezeichnung anzuzeigen und darunter die Werte. Der Zellbereich ist 5 Spalten breit.
Vielen Dank schon mal im Voraus.
MFG
Emanuel
Betrifft: AW: Userform Textbox mit Zellbereich befüllen
von: fcs
Geschrieben am: 14.12.2006 12:17:36
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

|