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.

Listbox zeigt ganze Spalte an - Doppelte Werte sollen nicht angezeigt werden
#1
Hallo Community,

ich bin durch Google auf dieses Forum gestoßen. Nachdem ich im MOF keine Lösung gefunden habe (Thread wurde als erledigt markiert), hoffe ich das ich damit dem "Crossposting" aus dem Wege gehe und hoffe hier eine Unterstützung zu bekommen.


Ich habe eine Userform die aus einem Dropdown und mehrere ListBoxen besteht. Diese funktionierte auch einwandfrei. Nun musste ich jedoch eine Listbox erweitern, weil ich in der Tabelle eine weitere Spalte hinzugefügt habe.

Hier mal ein Bild der Listbox mit dem Ist und Soll Zustand:

   

In den ersten beiden Drowndown / Listbox (Produktgruppe und Unterproduktgruppe) werden alle Einträge aus den Spalten nicht mehrfach angezeigt, sondern zusammengefasst.

Mein Problem liegt in der Listbox Produktliste2 Hier werden die Werte aus der Spalte C mehrfach und nicht zusammengefasst aufgelistet.

Ich finde leider nicht den Fehler und komme einfach nicht weiter :( Ich würde mich freuen wenn mich jemand hierzu unterstützen könnte.

Ich vermute den Fehler in der Private Sub produktliste_Click() diese füllt die Produktliste2 Listbox.

Vielen lieben Dank im Voraus und viele Grüße

tyron


.xlsm   Userform Einbauteile.xlsm (Größe: 33,86 KB / Downloads: 4)
Antworten Top
#2
Hallo, :19:

probiere es mal so: :21:

.xlsm   Userform Einbauteile.xlsm (Größe: 31,29 KB / Downloads: 7)
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • tyr0n
Antworten Top
#3
OMG! Es funktioniert. Vielen vielen Dank für die sooooo rasche Hilfe. Ich bin begeistert und muss gleich prüfen an was es lag.

Hallo Case,

einen kleinen Fehler habe ich noch. Wenn das Tabellenblatt (Einbauteile) mit den Daten nicht aktiv ist, dann Zeigt er mir in der Listbox "Nennweite und 1000" an.
Es könnte aber sein, das die Userform auf einem anderen Tabellenblatt geöffnet wird.

Ich habe auch schon versucht ein Worksheets("Einbauteile") vor deine .Range zu setzen um das Tabelltenblatt direkt anzusprechen. Funktioniert allerdings nicht :(


Dein Code funktioniert einwandfrei wenn die Tabelle "Einbauteile" aktiv ist.
Antworten Top
#4
Hallo, :19:

mein Fehler. Habe noch einen Punkt vor Cells vergessen: :21:

Code:
arrBereich = .Range("C2:C" & .Cells(Rows.Count, 3).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • tyr0n
Antworten Top
#5
:100:   :15:

!! Reicht das als Dankeschön?? Ich bin begeistert! Ich versuche mich mal weiter und werde deine Vorgehensweise für das befüllen der anderen Listboxen verwenden.
Antworten Top
#6
Hallo, ich noch einmal,

aktuell fülle ich die Daten aus der Listbox in Zellen. Das funktioniert auch ganz gut mit:


Code:
Private Sub hoehe_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim lngZeile As Long
    With ActiveSheet
  lngZeile = .Cells(13, 1).End(xlUp).Row
    If lngZeile = 12 Then
        MsgBox "Kein platz mehr!"
        Exit Sub
    Else
        lngZeile = IIf(lngZeile < 3, 3, lngZeile + 1)
            Cells(lngZeile, 1).Value = gruppe.Value
            Cells(lngZeile, 2).Value = produktliste.Value
            Cells(lngZeile, 3).Value = Produktliste2.Value
            Cells(lngZeile, 4).Value = hoehe.Value
            Cells(lngZeile, 6).Value = Evaluate("=lookup(2,1/(Einbauteile!C2:C1000&Einbauteile!D2:D1000= """ & Produktliste2 & """ & """ & hoehe.Value & """),Einbauteile!$F$2:$F$1000)")
    End If
End With
End Sub


Allerdings bin ich mit der lookup formel noch nicht ganz zufrieden. Ich würde gerne auch noch die gruppe.Value abfragen, bekomme das aber nicht hin.

Mein Versuch war schon:

Code:
Cells(lngZeile, 6).Value = Evaluate("=lookup(2,1/(Einbauteile!A2:A1000&Einbauteile!C2:C1000&Einbauteile!D2:D1000= """ & gruppe & """ & Produktliste2 & """ & hoehe.Value & """),Einbauteile!$F$2:$F$1000)")

Leider bekomme ich eine #NV als Rückmeldung.
Anbei auch noch einmal die Datei.

Könnte nochmal jemand drüber schauen? Vielen Dank!


.xlsm   Userform Einbauteile NEU.xlsm (Größe: 36,73 KB / Downloads: 2)
Antworten Top
#7
Noch eine kurze Ergänzung zu meiner Anfrage aus dem letzten Post.

im Grunde genommen soll aus dem "Einbauteile" Tabellenblatt folgende Zeile gesucht werden die mit:

dem Value aus der Listbox

gruppe.value (Einbauteile!A2:A1000)
produktliste.value (Einbauteile!B2:B1000)
produktliste2.value (Einbauteile!C2:C1000)
hoehe.value (Einbauteile!D2:D1000)

übereinstimmt und aus der Zeile dann die Spalte F eingetragen werden.

Vielen Dank im Voraus.

Viele Grüße tyron
Antworten Top
#8
Hallo, :19:

so: :21:

.xlsm   Userform Einbauteile NEU.xlsm (Größe: 33,55 KB / Downloads: 6)

Du kannst das natürlich auch evaluieren. Dodgy
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • tyr0n
Antworten Top
#9
Verzichte auf additm zum befuòllen einer Listbox/Combobox.

Statt

Code:
Private Sub UserForm_Initialize()
   Dim Zei As Long
   With Preise.gruppe
    For Zei = 2 To Sheets("Einbauteile").Range("A65536").End(xlUp).Row
        If Application.WorksheetFunction.CountIf(Sheets("Einbauteile").Range("A2:A" & Zei), Sheets("Einbauteile").Range("A" & Zei)) = 1 Then .AddItem Sheets("Einbauteile").Range("A" & Zei)
    Next Zei
    .ListRows = .ListCount + 1
'End With
End Sub


verwende
Code:
Private Sub UserForm_Initialize()
  Tabelle6.Cells(1).currentregion.columns(1).AdvancedFilter 2, , Tabelle6.Cells(1, 30), True
  gruppe.List = Tabelle6.Cells(1, 30).CurrentRegion.Value
  Tabelle6.Cells(1, 30).CurrentRegion.ClearContents
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
(10.12.2020, 17:36)Case schrieb: Hallo, :19:

so: :21:


Du kannst das natürlich auch evaluieren. Dodgy

Guten Morgen Case, vielen Dank für deine tolle Unterstützung bislang. Deine Variante funktioniert - keine Frage!
Ich habe jedoch das Problem, dass ich bei meinem Vorhaben (anders als hier in der Vorlagen Exceldatei) die Gruppe, Unterproduktgruppe nicht in die Tabelle eintragen werde.
Somit kann er die Zellen 1,2,3 aus der Reihe nicht mit der Einbauteile vergleichen. Gibt es eine Möglichkeit die Values aus der Listbox mit der Zeile aus der Einbauteile Tabelle zu vergleichen/filtern ohne diese irgendwo schreiben zu müssen?

Cells(lngZeile, 6).Value = Evaluate("=lookup(2,1/(Einbauteile!C2:C1000&Einbauteile!D2:D1000= """ & Produktliste2 & """ & """ & hoehe.Value & """),Einbauteile!$F$2:$F$1000)")

das funktioniert soweit, allerdings benötige ich noch die 3. Abfrage aus der gruppe combibox um das Ergebnis exakt zu erhalten. Ein Filtern nur nach Produktliste2 und hoehe.Value hat zuviele Ergebnisse in der Einbauteile Tabelle.

Ich hoffe ich habe mich verständlich ausgedrückt. Das hier ist alles nicht so einfach für mich :)


EDIT:// ich habe es!! zwischen Produktliste2 haben noch """ und & gefehlt! :)

Vielen Dank für Eure bisherige Unterstützung!!
Antworten Top


Gehe zu:


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