Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Endlosformular in Excel
#1
Hallo, :19:

in meiner Excel Anwendung soll ein extra Fenster aufgehen, in dem der User einen Datensatz aus einer unbestimmten Anzahl auswählen kann.
Die Datensätze haben mehrere Spalten, die mit angezeigt werden sollen, da diese für die Auswahl relevant sind.
Das Formular soll nicht jeden DS einzeln anzeigen, sondern in Listenform untereinander.
Durch einen Button oder ein Doppelklick soll ein Feld von dem DS in VBA als variable übernommen werden

Die Möglichkeit mit Gültigkeit und Liste ist nicht anwenderfreundlcih genug.

Ich hätte am liebsten so ein Endlosformular wie es auch in Access gibt.

Hat jemand eine Idee wie ich das möglichst einfach umsetzen kann?

Gruß
Klaus
Antworten Top
#2
Hi Klaus,

(26.11.2015, 15:50)Schmittklaus schrieb: Ich hätte am liebsten so ein Endlosformular wie es auch in Access gibt.

Hat jemand eine Idee wie ich das möglichst einfach umsetzen kann?

dazu kannst Du eine ListBox in einer Userform verwenden.

Die Userform wird beim Aufruf folgendermaßen initialisiert:
Code:
Private Sub UserForm_Initialize()
   Dim objWs As Worksheet
   Dim objZeile As Range
   Set objWs = ThisWorkbook.Worksheets("Kundenliste")      'Namen anpassen
   
   For Each objZeile In objWs.UsedRange.Rows
       If objZeile.Row > 1 Then
       Me.ListBox1.AddItem objZeile.Cells(1, 2)            'Listbox wird mit Inhalt der Kundenliste befüllt
       End If
   Next objZeile
   Set objWs = Nothing
   Set objZeile = Nothing
End Sub

Dazu wird das Arbeitsblatt mit dem Namen "Kundenliste" aufgerufen, in dem die Datensätze stehen. Es wird dann der komplette beschriebene Bereich verwendet.

oder so für 3 Spalten:
Code:
Private Sub UserForm_Initialize()
   With ListBox1
       .ColumnCount = 3
       .ColumnWidths = "1cm;2cm;2cm"
       .ColumnHeads = True
   ListBox1.RowSource = "Tabelle1!A2:C10"
   'oder:
   'ListBox1.RowSource = "Tabelle1!A2:C" & loletzte
   End With
End Sub
Quelle: http://ms-excel.eu/vba/vba-userform/vba-...ellen.html

Einzelheiten zur ListBox:
http://www.excelmexel.de/HTMLExcel/listbox.htm
Antworten Top
#3
Hi Klaus,

wenn du das Endlosformular im Access-Stil als beste Lösung ansiehst, dann nutze doch direkt dein Tabellenblatt, da sind alles DS als endlos Auflistung drin. Die Übernahme eine Zeile per Doppelklick kannst du selbst mal per Macrorecorder aufzeichnen. Poste dann den Code hier und man kann den dann verallgemeinern für jede beliebige Zeile.

Der Umweg das über ein Userform anzuzeigen ist doppelt gemoppelt und m.E. unnötig.
Mit freundlichen Grüßen  :)
Michael
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste