Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Tabelle in UserForm einbinden
Karl
Hallo,
weiß zufällig einer von Euch, wie ich eine Tabelle in eine UserForm einbinden kann? Dabei wäre es gut, wenn sowohl die Anzahl der Spalten, als auch die der Zeilen variabel wären.
Vielen Dank schon mal im Voraus!!!
Gruß Karl

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabelle in UserForm einbinden
12.11.2009 15:57:42
fcs
Hallo Karl,
eine Möglichkeit besteht darin, die Tabelleninhalte als Listbox darzustellen.
Nachfolgen ein Userform-Code-Beispiel.
Die Gestaltung und Datenquelle der Listbox werden mit den Parametern der
Call ResetListbox-Anweisung
in der Userform-Initialiserungsprozedur festgelegt.
Gruß
Franz
Option Explicit
Private wksSource As Worksheet
Private Sub ResetListbox(objListbox As Control, wksQuelle As Worksheet, _
Optional Spalte1 As Long = 1, Optional Zeile1 As Long = 2, _
Optional Spalte2 As Double = 0, Optional Zeile2 As Long = 0, _
Optional FaktorSpalte As Double = 8, _
Optional bolColumnHeads As Boolean = True, _
Optional lngListstyle As Long = 1, _
Optional lngMultiselect As Long = 0)
'Spalte1 = 1. Spalte des Quellblatts, die in Listbox angezeigt werden soll
'Zeile1  = 1. Zeile des Quellblatts, die in Listbox angezeigt werden soll
'Spalte2 = wenn 0 dann ist dies die letzte Spalte die in Listbox _
angezeigt werden soll, bei 0 wird bis letzte Datenspalte angezeigt
'Zeile2  = wenn 0 dann ist dies die letzte Zeile die in Listbox _
angezeigt werden soll, bei 0 wird bis letzte Datenzeile angezeigt
'FaktorSpalte: Rechnet die Spaltenbreiten der Tabelle in SpaltenBreiten für die Listbox um
'lngListstyle:    1 = mit Optionbuttons, 0 = einfach
'lngMultiselect:  0 = Einfachauswahl, 1 = Multiselect, 2 = Multiselect extended
Dim Spalte As Long, strColumnwidths As String, strRowSource As String
Dim dblWidth As Double
With wksQuelle
With .Cells.SpecialCells(xlCellTypeLastCell)
If Spalte2 = 0 Then Spalte2 = .Column
If Zeile2 = 0 Then Zeile2 = .Row
End With
strRowSource = "'" & .Name & "'!" & .Range(.Cells(Zeile1, Spalte1), _
.Cells(Zeile2, Spalte2)).Address
strColumnwidths = ""
dblWidth = 30
For Spalte = Spalte1 To Spalte2
If strColumnwidths = "" Then
strColumnwidths = .Columns(Spalte).ColumnWidth * FaktorSpalte & "Pt"
Else
strColumnwidths = strColumnwidths & ";" _
& .Columns(Spalte).ColumnWidth * FaktorSpalte & "Pt"
End If
dblWidth = dblWidth + .Columns(Spalte).ColumnWidth * FaktorSpalte
Next
End With
With objListbox
.Width = Application.WorksheetFunction.Min(Me.Width - .Left - 15, dblWidth)
'    .Width = Application.WorksheetFunction.Min(.Width, dblWidth)'
.ListStyle = lngListstyle
.MultiSelect = lngMultiselect
.ColumnWidths = strColumnwidths
.ColumnHeads = bolColumnHeads
.ColumnCount = Spalte2 - Spalte1 + 1
.RowSource = strRowSource
End With
Me.Repaint
End Sub
Private Sub UserForm_Initialize()
Set wksSource = Worksheets("Tabelle1") 'Quelltabelle der Daten
'Spalten 1 bis 3 der Tabelle1 ab Zeile 2 als Listbox-Quelle verwenden.
Call ResetListbox(objListbox:=Me.Controls("ListBox1"), wksQuelle:=wksSource, Spalte2:=3)
End Sub

Anzeige
Oder über Spreadsheet (oT)
12.11.2009 23:34:36
Jens
AW: Oder über Spreadsheet (oT)
13.11.2009 21:43:56
Karl
Hallo Franz, hallo Jens,
vielen Dank für Eure Antworten! Ich habe das gerade mal mit deinem Code versucht Franz, es wird aber leider nur eine leere UserForm angezeigt (trotz daten in Tabelle 1 im angegebenen Bereich). Um den Code aber zu verstehen und so umzubauen, dass es hinhaut, reichen meine VBA-Kenntnisse glaube ich leider nicht aus! :-(
Wie würde so etwas denn mit einem Spreadsheet laufen?
Gruß Karl
AW: Oder über Spreadsheet (oT)
14.11.2009 06:54:04
Jens
Hallo Karl
Ein Spreadsheet ist ein optisches Abbild einer Tabelle/eines Tabellenausschnitts, welches in einer Userform dargestellt werden kann.
Auf diesem Gebiet bin ich aber auch nicht so firm.
Aber schau mal hier z.B.
http://www.office-loesung.de/ftopic300917_0_0_asc.php
oder such mal im Archiv nach "Spreadsheet"
Ich lasse die Frage aber noch offen, für andere, die sich einklinken wollen.
Gruß aus dem Sauerland
Jens
Anzeige
AW: Oder über Spreadsheet (oT)
14.11.2009 11:55:54
fcs
Hallo Karl,
hier mal eine kleine Beispieldatei mit einer Listbox und noch ein bischen Spielkram extra.
https://www.herber.de/bbs/user/65894.xls
Den Sinn des Spreadsheets in einem Excel-Userform hab ich nie verstanden. Macht zumindest in Excel für mich keinen Sinn, da man ja die Spreadsheets im Programm selber hat. Außerdem schein dies Objekt ein Auslaufmodell zu sein. Jedenfalls hab ich es in Excel 2007 nicht mehr gefunden. Der Favorit scheint jetzt wohl Listview zu sein. Mit diesem Objekt kenne ich mich aber nicht aus.
Gruß
Franz
Anzeige
AW: Oder über Spreadsheet (oT)
15.11.2009 23:33:18
Kalr
Hallo Franz, Hallo Jens,
vielen, vielen Dank nochmal. Ich habe jetzt die WebComponents installiert und bei Microsoft Office ... auch das Kreuzchen gesetzt. Bei der Datei 65894.xls bekomme ich aber immer die Fehlermeldung "Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden". Die Anzeige steht auf "Mid". Scheinbar muss ich dafür auch wieder etwas installieren?
Gruß Karl
AW: VBA Modul fehlt/funktioniert nicht
16.11.2009 10:16:42
fcs
Hallo Karl,
eigentlich sollte es funktionieren, wenn Excel/Office inklusive VBA installiert ist. Weitere Module sind dann nicht erforderlich, denn Mid ist eine der Funktionen, die VBA standardmäßig bereitstellt.
Leider weiß ich nicht genau, was man machen muss, um hier das fehlende Element wieder verfügbar zu machen, ohne gleich eine komplette Neuinstallation durchzuführen.
Gruß
Franz
Anzeige
AW: VBA Modul fehlt/funktioniert nicht
16.11.2009 20:11:16
Karl
Hallo Franz,
der Rest von VBA funktioniert aber ordnungsgemäß! Ist jetzt aber auch nicht vorrangig. Das mit dem Spreadsheet haut jetzt gut hin.
Vielen Dank nochmal für die tolle Unterstützung!
Gruß Karl

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige