Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Tabelle in UserForm einbinden | Herbers Excel-Forum


Betrifft: Tabelle in UserForm einbinden von: Karl
Geschrieben am: 12.11.2009 12:50:44

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

  

Betrifft: AW: Tabelle in UserForm einbinden von: fcs
Geschrieben am: 12.11.2009 15:57:42

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




  

Betrifft: Oder über Spreadsheet (oT) von: Jens
Geschrieben am: 12.11.2009 23:34:36




  

Betrifft: AW: Oder über Spreadsheet (oT) von: Karl
Geschrieben am: 13.11.2009 21:43:56

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


  

Betrifft: AW: Oder über Spreadsheet (oT) von: Jens
Geschrieben am: 14.11.2009 06:54:04

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


  

Betrifft: AW: Oder über Spreadsheet (oT) von: fcs
Geschrieben am: 14.11.2009 11:55:54

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


  

Betrifft: AW: Oder über Spreadsheet (oT) von: Kalr
Geschrieben am: 15.11.2009 23:33:18

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


  

Betrifft: AW: VBA Modul fehlt/funktioniert nicht von: fcs
Geschrieben am: 16.11.2009 10:16:42

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


  

Betrifft: AW: VBA Modul fehlt/funktioniert nicht von: Karl
Geschrieben am: 16.11.2009 20:11:16

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


Beiträge aus den Excel-Beispielen zum Thema "Tabelle in UserForm einbinden"