Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox Einträge in Tabelle übertragen

Forumthread: Listbox Einträge in Tabelle übertragen

Listbox Einträge in Tabelle übertragen
01.04.2020 16:22:59
Sven
Hallo zusammen,
ich habe eine Excel Tabelle in der ich Stunden für Projekte tracke die ich dann später in SAP übertrage.
Ich habe ein Tabellenblatt "Projekte" in den im alle relevanten Informationen für die Projekte hinterlege,
Im Monats Tabellenblatt habe ich dann eine Spalte Auswahl über die in mit Doppelklick in eine Zelle eine Userform mit Listbox aufrufe.
Die Listbox enthält die Informationen aus dem Tabellenblatt "Projekte".
Mit einem Doppelklick auf den Richtigen Eintrag sollen nun die Daten in die Zeile übertragen werden wo ich mit dem Doppelklick die Userform geöffnet habe.
Ich möchte die Informationen nicht alle nebeneinander in die Zeile schreiben sondern in unterschiedliche Spalten.
Hier der Code aus der Listbox

Private Sub UserForm_Initialize()
With ListBox1
.List = range("ProjektAuswahl").Value
.ColumnCount = 5      'Spaltenanzahl
.ColumnHeads = False                       'Tabellenüberschrift (nur bei RowSource)
'.RowSource = "ProjektAuswahl"
.ColumnWidths = "15cm;3cm;10cm;3cm;5cm"     'Spaltenbreite festlegen
End With
End Sub

Code aus der Listbox

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'hier müsste jetzt der Code zum Kopieren ins Tabellenblatt rein
UserForm1.Hide
End
https://www.herber.de/bbs/user/136326.xlsm
Danke und Gruß
Sven
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Einträge in Tabelle übertragen
01.04.2020 16:41:41
Matthias
Moin!
ALso ungetestet sollte es bspw. so gehen:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim spalte As Long
'hier müsste jetzt der Code zum Kopieren ins Tabellenblatt rein
For spalte = 1 To 5
ActiveCell.Offset(, spalte - 1) = listbox1.List(listbox1.ListIndex, spalte - 1)
Next
Userform1.Hide
End

Damit werden die ersten 5 Spalten befüllt (habe die DAtei nicht geöffnet). Falls es andere Spalten sind, müsste man noch was ändern. Bspw. die Spaltenindizes in einem Array.
VG
Anzeige
AW: Listbox Einträge in Tabelle übertragen
01.04.2020 16:52:48
Sven
Hallo Matthias,
danke für die Antwort,
Die Spalten liegen nicht neben einander.
Einträge erfolgen in
Spalte B,C,I und J aber jeweils in der gleichen Zeile.
Der Code aus dem Tabellenblat zum Öffnen der Userform sieht so aus.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As range, Cancel As Boolean)
If Not Intersect(Target, range("Auswahl")) Is Nothing Then
UserForm1.Show
End If
End Sub
Ist dann das Tabellenblatt nicht schon offen wenn ich aus diesem Tabellenblatt ja die Userform aufrufe?
MFG
Anzeige
AW: Listbox Einträge in Tabelle übertragen
01.04.2020 17:11:10
Matthias
Moin!
Das Tabellenblatt ist dann schon aktiv. Deshalb spreche ich es nicht noch extra an. Probier dann mal so. Damit werden deine 4 Spalten beschrieben.
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim spalte As Long
Dim listspalt
listspalt = Array(2, 3, 9, 10)
'hier müsste jetzt der Code zum Kopieren ins Tabellenblatt rein
For spalte = 0 To 3
Cells(ActiveCell.Row, listspalt(spalte)) = listbox1.List(listbox1.ListIndex, spalte)
Next
Userform1.Hide
End

VG
Anzeige
AW: Listbox Einträge in Tabelle übertragen
01.04.2020 17:26:04
Sven
Hallo,
es funktioniert so weit. Danke schon mal dafür
Jetzt habe ich gerade fest gestellt das ich in der Userform eine Spalte habe die nur zur Information dient und die nicht mit Übertragen werden soll.
Spalte A,B und D,E sollen übertragen werden.
Gibt es auch die Möglichkeit das ohne die Schleife zumachen so was dich per Hardcodierung
auswählen kann welche Spalte ich wohin übertragen möchte.
So das ich Später bei eventuellen Änderungen in der Tabelle recht einfach anpassen kann.
MFG
Anzeige
AW: Listbox Einträge in Tabelle übertragen
01.04.2020 18:28:30
Sven
Hallo,
habe es gelöst.
folgender Code wurde verwendet.
'### LISTBOX ###
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Cells(ActiveCell.Row, 2) = ListBox1.List(ListBox1.ListIndex, 0)     'Spalte 1 der Listbox  _
wird in Spalte B im Tabellenblatt kopiert
Cells(ActiveCell.Row, 3) = ListBox1.List(ListBox1.ListIndex, 1)     'Spalte 2 der Listbox  _
wird in Spalte C im Tabellenblatt kopiert
Cells(ActiveCell.Row, 9) = ListBox1.List(ListBox1.ListIndex, 3)     'Spalte 4 der Listbox  _
wird in Spalte I im Tabellenblatt kopiert
Cells(ActiveCell.Row, 10) = ListBox1.List(ListBox1.ListIndex, 4)    'Spalte 5 der Listbox  _
wird in Spalte J im Tabellenblatt kopiert
UserForm1.Hide
'### Beispiel für Schleife wenn die Spalten die Kopiert werden sollen neben einander stehen.
'Dim spalte As Long
'Dim listspalt
'listspalt = Array(2, 3, 9, 10)
'For spalte = 0 To 3
'    Cells(ActiveCell.Row, listspalt(spalte)) = ListBox1.List(ListBox1.ListIndex, spalte)
'Next
End Sub
Danke und mfg
Sven
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox Einträge in Tabelle übertragen


Schritt-für-Schritt-Anleitung

  1. Userform mit Listbox erstellen:

    • Erstelle eine Userform in Excel und füge eine Listbox hinzu.
    • Im Code der Userform initialisiere die Listbox mit den Daten aus deinem Tabellenblatt "Projekte":
    Private Sub UserForm_Initialize()
       With ListBox1
           .List = Range("ProjektAuswahl").Value
           .ColumnCount = 5      'Spaltenanzahl
           .ColumnHeads = False
           .ColumnWidths = "15cm;3cm;10cm;3cm;5cm" 'Spaltenbreite festlegen
       End With
    End Sub
  2. Doppelklick-Event zur Übertragung erstellen:

    • Im Doppelklick-Event der Listbox fügst du den Code ein, um die Daten in die gewünschten Spalten zu übertragen:
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       Cells(ActiveCell.Row, 2) = ListBox1.List(ListBox1.ListIndex, 0) ' Spalte 1
       Cells(ActiveCell.Row, 3) = ListBox1.List(ListBox1.ListIndex, 1) ' Spalte 2
       Cells(ActiveCell.Row, 9) = ListBox1.List(ListBox1.ListIndex, 3) ' Spalte 4
       Cells(ActiveCell.Row, 10) = ListBox1.List(ListBox1.ListIndex, 4) ' Spalte 5
       UserForm1.Hide
    End Sub
  3. Userform öffnen:

    • Verwende den folgenden Code im Tabellenblatt, um die Userform bei Doppelklick auf eine bestimmte Zelle zu öffnen:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Not Intersect(Target, Range("Auswahl")) Is Nothing Then
           UserForm1.Show
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Listbox zeigt keine Daten an:

    • Überprüfe, ob der Bereich "ProjektAuswahl" korrekt definiert ist und der Code zur Initialisierung der Listbox richtig ist.
  • Fehler: Daten werden nicht korrekt übertragen:

    • Stelle sicher, dass die Spaltenindizes in deinem Doppelklick-Ereignis mit den tatsächlichen Spalten übereinstimmen, in die du die Daten übertragen möchtest.

Alternative Methoden

  • Verwendung von Arrays:

    • Wenn deine Spalten nicht nebeneinander liegen, kannst du ein Array verwenden, um die Indizes der zu übertragenden Spalten zu definieren. Dies erleichtert spätere Änderungen im Code:
    Dim listspalt
    listspalt = Array(2, 3, 9, 10)
    For spalte = 0 To 3
      Cells(ActiveCell.Row, listspalt(spalte)) = ListBox1.List(ListBox1.ListIndex, spalte)
    Next

Praktische Beispiele

  • Beispiel für eine einfache Userform:
    • Du kannst eine Userform mit einer Listbox erstellen, die Daten aus einem Projektblatt anzeigt. Mit einem Doppelklick auf einen Listeneintrag werden die gewünschten Informationen direkt in die definierten Spalten im Monatsblatt übertragen.

Tipps für Profis

  • Verwende "abap listbox":

    • Falls du mit SAP arbeitest, kann die Integration von ABAP-Listen in Excel hilfreich sein. Achte darauf, dass du die entsprechende Verbindung und die Datenstruktur in Excel berücksichtigst.
  • Optimierung der Benutzeroberfläche:

    • Überlege, zusätzliche Funktionen wie Filter oder Suchfelder in deine Userform einzubauen, um die Benutzerfreundlichkeit zu verbessern.

FAQ: Häufige Fragen

1. Kann ich eine Listbox in Excel ohne VBA verwenden? Ja, in Excel gibt es auch Möglichkeiten, Daten in Dropdown-Listen zu integrieren, aber für komplexere Interaktionen wie Doppelklick und Übertragung ist VBA erforderlich.

2. Wie kann ich die Spaltenbreite in der Listbox ändern? Du kannst die .ColumnWidths-Eigenschaft der Listbox anpassen, um die Breite der einzelnen Spalten zu definieren, wie im Beispielcode gezeigt.

3. Funktioniert das auch in Excel Online? VBA-Code funktioniert nicht in Excel Online. Du musst die Desktop-Version von Excel verwenden, um VBA-Funktionen zu nutzen.

4. Was, wenn ich mehr als fünf Spalten übertragen möchte? Erweitere einfach die .ColumnCount-Eigenschaft in deiner Listbox und passe den Übertragungscode entsprechend an.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige