Herbers Excel-Forum - das Archiv

Userform Textbox mit Zellbereich befüllen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox TextBox UserForm
Bild

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
Bild

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

 Bild
Excel-Beispiele zum Thema "Userform Textbox mit Zellbereich befüllen"
Diagramm in Userform XL-Dateien in UserForm listen
UserForm an Excel-Fenster anpassen Fundstellen in UserForm listen
Module und UserForms austauschen In einer Schleife auf Elemente einer UserForm zugreifen
Werte in eine ComboBox einer UserForm übernehmen Zellinhalt als Label-Aufschrift in UserForm
Alle CheckBoxes einer UserForm ansprechen Wenn kein Eintrag, UserForm nicht schließen