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

SVerweis von Listbox und Combobox Eintrag

Forumthread: SVerweis von Listbox und Combobox Eintrag

SVerweis von Listbox und Combobox Eintrag
27.01.2025 19:14:37
Marc
Sehr geehrte Helfer

Ich habe in einer Userform 2 Listboxen und 7 Comboboxen, welche unterschiedlich und nacheinander gelistet in einer Rechnung auftauchen sollen. Die Listboxen, funktionieren soweit und die Einträge funktionieren. Nun, was muss ich an meinem bereits erstellten Code ändern, dass Combobox3 (wenn aktiviert durch Checkbox3) unter die Einträger der Listbox1 angehängt werden, in die nächste freie Zeile?
Ebenfalls sollte es möglich sein, dass ich den sverweis übernehmen könnte von Tabelle 4 (Preisliste). Das ganze funktioniert über einen CommandButton7

Der Code bisher: (ausser fett funktionierts bis dahin)

With UserForm1
Dim last As Integer
last = Worksheets("Rechnung").Activate 'Activate nur zum Test enthalten
Sheets("Rechnung").Range("A19:A27").ClearContents
Cells(15, 3).Value = TextBox10.Text
If CheckBox5.Value = True Then Cells(19, 1).Value = ComboBox1.Value
End With
Const zeile = 19
Const Spalte = 1
Dim zähler As Integer
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(zeile + zähler, Spalte) = .List(i)
zähler = zähler + 1
Range(zeile + zähler, Spalte) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("B"), 2, False)
Range(zeile + zähler, Spalte) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("C"), 3, False)

End If
Next i
With ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(zeile + zähler, Spalte) = .List(i)
zähler = zähler + 1
Cells(zeile + zähler, Spalte + 1) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("B"), 5, False)
Cells(zeile + zähler, Spalte + 2) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("C"), 6, False)

End If
Next i
With CheckBox3 'oder eben Combobox3 (Spalte A), Combobox4 ist dann die Menge, welche in Spalte E eingetragen wird
For i = 0 To 0
If CheckBox3 = True Then
Cells(zeile + zähler, Spalte) = .Value(i)
zähler = zähler + 1
Cells(zeile + zähler, Spalte + 1) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("B"), 5, False)
Cells(zeile + zähler, Spalte + 2) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("C"), 6, False)
End If
Next i

End With
End With
End With
End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVerweis von Listbox und Combobox Eintrag
27.01.2025 22:09:04
GerdL
Hallo Marc!

With UserForm1.ListBox1

For i = 0 To .ListCount - 1
If .Selected(i) Then
Worksheets("Rechnung").Cells(zeile + zähler, Spalte) = .List(i, 0)
zähler = zähler + 1
Worksheets("Rechnung").Cells(zeile + zähler, Spalte) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("B:C"), 2, False)
Worksheets("Rechnung").Cells(zeile + zähler, Spalte) = WorksheetFunction.VLookup(i, Worksheets("Preisliste").Range("C:F"), 3, False)
End If
Next i
End With


Oder willst du anstatt mit der Item-Nummer der selektierten Listboxzeilen(i) mit deren Items (.Listbox1.List(i, 0) im SVERWEIS suchen?

Gruß Gerd
Anzeige
AW: SVerweis von Listbox und Combobox Eintrag
27.01.2025 22:34:30
Marc
Guten Abend und danke schonmal
Das mit dem Vlookup(i) bereitet mir irgendwie Sorgen, das geht bei mir irgendwie gar nicht, auch schon ausprobiert, sowie verschiedene andere Möglichkeiten. Hängen geblieben, bin ich derzeit bei folgendem Code:

Private Sub CommandButton7_Click()

With UserForm1
Dim last As Integer
last = Worksheets("Rechnung").Activate 'Activate nur zum Test enthalten
Sheets("Rechnung").Range("A19:G27").ClearContents
Cells(15, 3).Value = TextBox10.Text
If CheckBox5.Value = True Then Cells(19, 1).Value = ComboBox1.Value
End With
Const zeile = 19
Const Spalte = 1, Spalte1 = 5, Spalte2 = 6
Dim zähler As Integer
Dim i As Integer

With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(zeile + zähler, Spalte) = .List(i)
Cells(zeile + zähler, Spalte1) = Application.WorksheetFunction.VLookup(.List(i), Worksheets("Preisliste").Range("A2:C15"), 2, False)
Cells(zeile + zähler, Spalte2) = Application.WorksheetFunction.VLookup(.List(i), Worksheets("Preisliste").Range("A2:C15"), 3, False)
zähler = zähler + 1
End If
Next i
With ComboBox3
For i = 0 To .ListCount - 1
If CheckBox3 = True Then
Cells(zeile + zähler, Spalte) = ComboBox2.Value
Cells(zeile + zähler, Spalte1) = ComboBox3.Value
Cells(zeile + zähler, Spalte2) = Application.WorksheetFunction.VLookup(ComboBox2.Text, Worksheets("Preisliste").Range("A16:C17"), 3, False)
End If
Next
With ComboBox4
For i = 0 To .ListCount - 1
If CheckBox4 = True Then
Cells(zeile + zähler, Spalte) = ComboBox4.Value
Cells(zeile + zähler, Spalte1) = ComboBox5.Value
Cells(zeile + zähler, Spalte2) = Application.WorksheetFunction.VLookup(ComboBox4.Text, Worksheets("Preisliste").Range("A19:C21"), 3, False)
End If
Next
With ComboBox6
For i = 0 To .ListCount - 1
If CheckBox5 = True Then
Cells(zeile + zähler, Spalte) = ComboBox6.Value
Cells(zeile + zähler, Spalte1) = ComboBox7.Value
Cells(zeile + zähler, Spalte2) = Application.WorksheetFunction.VLookup(ComboBox6.Text, Worksheets("Preisliste").Range("A19:C21"), 3, False)
End If
Next
With ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(zeile + zähler, Spalte) = .List(i)
Cells(zeile + zähler, Spalte1) = Application.WorksheetFunction.VLookup(.List(i), Worksheets("Preisliste").Range("A2:C15"), 2, False)
Cells(zeile + zähler, Spalte2) = Application.WorksheetFunction.VLookup(.List(i), Worksheets("Preisliste").Range("A2:C15"), 3, False)
zähler = zähler + 1
End If
Next i
With ComboBox8
For i = 0 To .ListCount - 1
If CheckBox6 = True Then
Cells(zeile + zähler, Spalte) = "Nagelreperatur (pro Zeh)"
Cells(zeile + zähler, Spalte1) = ComboBox8.Value
Cells(zeile + zähler, Spalte2) = Application.WorksheetFunction.VLookup("Nagelreperatur (pro Zeh)", Worksheets("Preisliste").Range("A18:C18"), 3, False)
End If
Next
End With
End With
End With
End With
End With
End With
End Sub


Was mich daran nun stört, dass die Comboboxen (sind in der richtigen Reihenfolge), nicht untereinander aufgelistet werden, sondern teils überschreiben soe die Listbox Einträge oder es kommen 8 Einträge untereinander. Eventuell gibt es auch einen viel einfacheren Code.
Grösstenteils funktioniert es so
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18