Hallo Zusammen
Ich komme nicht weiter und wäre um Hilfe froh:
Excel 365
Situation:
Ich habe eine UserForm welche folgende Objekte enthält:
1 X ComboBox
1 X TextBox
1 X ListBox
1 X CommandButton
ComboBox: Diese wird aus einem Sheet (Tabelle1) befüllt.
TextBox: Hier wird eine Zahl manuell eingegeben
Mittels CommandButton möchte ich nun die Listbox folgender massen befüllen.
Spalte eins in ListBox = Auswahl aus ComboBox
Spalte zwei in ListBox = Eingabe aus TextBox
Spalte drei in ListBox = *Preis (Siehe Beschreibung *)
* Tabelle 1 =
Spalte G (Preis/Einheit) enthält Formel =[@Einkaufspreis]/([@Einkaufsmenge]*[@Umrechnungsfaktor])
In Spalte drei soll nun folgendes ausgegeben werden (Schreibe mal den Code welchen ich verwenden möchte in normaler Sprache):
Suche in Tabelle 1 die Zeile mit eingegebenen Wert aus ComboBox.
Nimm den Wert aus Spalte (Preis/Einheit) welcher in der gefunden Zeile liegt und multipliziere den Wert mit dem eingegebenen Wert aus TextBox
Gib den Wert in Spalte 3 in ListBox wieder.
(Produkt|Menge|Preis)
Ende *
Diese ganze Abfrage möchte ich dann endlos wiederholen können. Jede Eingabe soll in der Listbox eine weitere Zeile generieren.
Am Ende sollte ich dann eine Liste erhalten mit allen eingegebenen werten.
Was ich bis jetzt geschafft habe.
Ich bringe es fertig, dass die erste Spalte (Produkt) aufgelistet wird.
Jedoch kriege ich keine zweite Zeile hin und bei der Dritten Zeile bin ich absolut ahnungslos wie anstellen.
Den Code welchen ich bis jetzt habe:
rivate Sub CommandButton1_Click()
Dim a As Range
Dim b As Range
Dim c As Range
Dim rngBereich As Range
Dim lngAnzahl As Long
Dim strFirst As String
With Sheets("Material Liste")
Set rngBereich = .Columns("A:A")
Set a = rngBereich.Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not a Is Nothing Then
strFirst = a.Address
Do
ListBox1.AddItem .Cells(a.Row, 1)
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Cells(a.Row, 1)
ListBox1.List(lngAnzahl - 1, 2) = .Cells(a.Row, 2)
ListBox1.List(lngAnzahl - 1, 3) = .Cells(a.Row, 8)
ListBox1.List(lngAnzahl - 1, 4) = .Cells(a.Row, 3)
ListBox1.List(lngAnzahl - 1, 5) = .Cells(a.Row, 74)
Set a = rngBereich.FindNext(a)
Loop While Not a Is Nothing And a.Address <> strFirst
End If
With TextBox1
Set b = rngBereich.Find(TextBox1)
If Not b Is Nothing Then
strFirst = b.Address
Do
ListBox1.AddItem .Text(b.Row, 1)
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Text(b.Row, 1)
ListBox1.List(lngAnzahl - 1, 2) = .Text(b.Row, 2)
ListBox1.List(lngAnzahl - 1, 3) = .Text(b.Row, 8)
ListBox1.List(lngAnzahl - 1, 4) = .Text(b.Row, 3)
ListBox1.List(lngAnzahl - 1, 5) = .Text(b.Row, 74)
Set b = rngBereich.FindNext(b)
Loop While Not b Is Nothing And b.Address <> strFirst
End If
End With
End With
End Sub
So wie ich mir das gedacht habe, müsste man nun Dim b und c noch befüllen um die Spalten 2 und 3 in der Listbox zu erhalten?
Bin echt ratlos.
Dim b funktioniert überhaupt nicht.
Bin froh für jegliche Hinweise.
Gruss
Demech
Ich komme nicht weiter und wäre um Hilfe froh:
Excel 365
Situation:
Ich habe eine UserForm welche folgende Objekte enthält:
1 X ComboBox
1 X TextBox
1 X ListBox
1 X CommandButton
ComboBox: Diese wird aus einem Sheet (Tabelle1) befüllt.
TextBox: Hier wird eine Zahl manuell eingegeben
Mittels CommandButton möchte ich nun die Listbox folgender massen befüllen.
Spalte eins in ListBox = Auswahl aus ComboBox
Spalte zwei in ListBox = Eingabe aus TextBox
Spalte drei in ListBox = *Preis (Siehe Beschreibung *)
* Tabelle 1 =
Spalte G (Preis/Einheit) enthält Formel =[@Einkaufspreis]/([@Einkaufsmenge]*[@Umrechnungsfaktor])
In Spalte drei soll nun folgendes ausgegeben werden (Schreibe mal den Code welchen ich verwenden möchte in normaler Sprache):
Suche in Tabelle 1 die Zeile mit eingegebenen Wert aus ComboBox.
Nimm den Wert aus Spalte (Preis/Einheit) welcher in der gefunden Zeile liegt und multipliziere den Wert mit dem eingegebenen Wert aus TextBox
Gib den Wert in Spalte 3 in ListBox wieder.
(Produkt|Menge|Preis)
Ende *
Diese ganze Abfrage möchte ich dann endlos wiederholen können. Jede Eingabe soll in der Listbox eine weitere Zeile generieren.
Am Ende sollte ich dann eine Liste erhalten mit allen eingegebenen werten.
Was ich bis jetzt geschafft habe.
Ich bringe es fertig, dass die erste Spalte (Produkt) aufgelistet wird.
Jedoch kriege ich keine zweite Zeile hin und bei der Dritten Zeile bin ich absolut ahnungslos wie anstellen.
Den Code welchen ich bis jetzt habe:
rivate Sub CommandButton1_Click()
Dim a As Range
Dim b As Range
Dim c As Range
Dim rngBereich As Range
Dim lngAnzahl As Long
Dim strFirst As String
With Sheets("Material Liste")
Set rngBereich = .Columns("A:A")
Set a = rngBereich.Find(ComboBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not a Is Nothing Then
strFirst = a.Address
Do
ListBox1.AddItem .Cells(a.Row, 1)
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Cells(a.Row, 1)
ListBox1.List(lngAnzahl - 1, 2) = .Cells(a.Row, 2)
ListBox1.List(lngAnzahl - 1, 3) = .Cells(a.Row, 8)
ListBox1.List(lngAnzahl - 1, 4) = .Cells(a.Row, 3)
ListBox1.List(lngAnzahl - 1, 5) = .Cells(a.Row, 74)
Set a = rngBereich.FindNext(a)
Loop While Not a Is Nothing And a.Address <> strFirst
End If
With TextBox1
Set b = rngBereich.Find(TextBox1)
If Not b Is Nothing Then
strFirst = b.Address
Do
ListBox1.AddItem .Text(b.Row, 1)
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Text(b.Row, 1)
ListBox1.List(lngAnzahl - 1, 2) = .Text(b.Row, 2)
ListBox1.List(lngAnzahl - 1, 3) = .Text(b.Row, 8)
ListBox1.List(lngAnzahl - 1, 4) = .Text(b.Row, 3)
ListBox1.List(lngAnzahl - 1, 5) = .Text(b.Row, 74)
Set b = rngBereich.FindNext(b)
Loop While Not b Is Nothing And b.Address <> strFirst
End If
End With
End With
End Sub
So wie ich mir das gedacht habe, müsste man nun Dim b und c noch befüllen um die Spalten 2 und 3 in der Listbox zu erhalten?
Bin echt ratlos.
Dim b funktioniert überhaupt nicht.
Bin froh für jegliche Hinweise.
Gruss
Demech