Office: Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen

Helfe beim Thema Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo liebe Leute, Ich bastle heute zum ersten Mal an einer Userform rum und weiß nicht wie ich das Problem lösen kann. Momentaner Stand ich habe... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Sunblocker, 8. Mai 2013.

  1. Sunblocker Erfahrener User

    Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen


    Hallo liebe Leute,
    Ich bastle heute zum ersten Mal an einer Userform rum und weiß nicht wie ich das Problem lösen kann.
    Momentaner Stand ich habe textboxen(unwichtig), 2 Listboxen und 1 mal Combobox erstellt. So sieht der Ausschnitt aus.

    Private Sub Userform_Initialize()

    For w = 8 To 20
    WerkListBox.AddItem ThisWorkbook.Worksheets("Vorgaben").Cells(w, 1).Value
    Next w
    For p = 3 To 9
    ProduktComboBox.AddItem ThisWorkbook.Worksheets("Vorgaben").Cells(7, p).Value
    Next p

    For t = 8 To Cells(Cells(Rows.Count, p).End(xlUp).Row + 1, p)
    TTNrListBox2.AddItem ThisWorkbook.Worksheets("Vorgaben").Cells(t, p).Value
    Next t

    Für Werklistbox und ProduktCombobox werden die jeweiligen Daten gezeigt.
    jetzt ist es so das jedes Produkt unterschiedliche Nummern haben. diese Nummern sollen dann in der TTNrListBox2 stehen. Ich hab momentan 7 Produkte mit jeweils ich sag mal 10 Nummern. Wenn ich die Nummern untereinander anlege kann ich die auch in der Liste anzeigen lassen, aber das macht ja bei der Menge schon keinen Sinn mehr.
    Mein Wunsch: Ich will die Nummern die in dieser Listbox angezeigt werden in Abhängigkeit von dem Produkt setzen.
    Mein Aufbau momentan ist auch so angelegt. Spalte C7 Produkt A und ab C8 stehen die Nummern für dieses Produkt und so weiter.

    Btw. Mein Zellenzähler funktioniert wahrscheinlich auch nicht wie es momentan steht.^^

    Wer kann mir vielleicht weiterhelfen. Falls ihr das verstanden habt. Ansonsten stehe ich euch zur Verfügung.

    Danke Gruß suny
     
    Sunblocker, 8. Mai 2013
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Suny,

    hilfreich wäre da sicher eine hochgeladene Arbeitsmappe, sodass man sich den genauen Tabellenaufbau mal anschauen kann.

    Bis später,
    Karin
     
    Beverly, 8. Mai 2013
    #2
  3. Sunblocker Erfahrener User
    Hallo,

    Mir kam es jetzt gar nicht darauf an, dass der code exakt dazu passen soll, wo ich das Ganze nur noch kopieren muss. Hätte es dann schon selber angepasst. Aber gut hier die Datei.

    Ich kann es hier auch besser erklären.
    Ich will praktisch, wenn ich das Produkt ausgewählt habe z.B. ProduktA, dann soll in der TTNr Liste nur noch die Nummern angezeigt werden, die unter Tabellenblatt "Vorgaben" unter ProduktA stehen.
     
    Zuletzt bearbeitet: 10. Mai 2013
    Sunblocker, 10. Mai 2013
    #3
  4. Beverly
    Beverly Erfahrener User

    Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen

    Hi,

    das stelle ich auch nicht in Abrede, dass du in der Lage wärest, Code an deine Bedingungen anzupassen, aber du hast die Mappe ja bereits erstellt und Zeit investiert - weshalb soll ein Helfer zusätzlich Zeit investieren und sie nachbauen?

    Definiere Namen für die einzelnen Produkte und weise sie dann durch das Change-Ereignis der ComboBox entsprechend Auswahl in der ComboBox der RowSource der ListBox zu. Die definierten Namen müssen logischerweise indentisch mit den Inhalten der ComboBox sein.

    Code:
    Private Sub ProduktComboBox_Change()
       TTNrListBox2.RowSource = ProduktComboBox
    End Sub
    
    Bis später,
    Karin
     
    Beverly, 10. Mai 2013
    #4
  5. Sunblocker Erfahrener User
    Hallo Karin,
    Erstmal du hast Recht, kein Helfer wird die Zeit haben die Form nachzubauen. Ich hab gedacht dazu gibt es eine allg. Funktion was ich dann anwenden kann.

    Hm wie kann man denn jedes einzelne Produkt definieren? Das ist ja das was ich nicht kann. Deshalb verstehe nicht genau was du meinst. Ich hab ja im Code so definiert.
    For p = 3 To 9
    ProduktComboBox.AddItem ThisWorkbook.Worksheets("Vorgaben").Cells(7, p).Value

    Und hab jetzt bei Change-Ereignis
    Private Sub ProduktComboBox_Change()
    TTNrListBox2.RowSource = "Vorgaben!C8:H14"
    End Sub

    Da zeigt mir alles an. Wie mache ich jetzt die Zuweisung auf meine Auswahl? If-Schleife ?
    hab sowas mal ausprobiert

    If ProduktComboBox.Value = ProduktA Then
    TTNrListBox2.RowSource = "Vorgaben!C8:C14"
    End If

    geht aber nicht.
     
    Zuletzt bearbeitet: 10. Mai 2013
    Sunblocker, 10. Mai 2013
    #5
  6. Beverly
    Beverly Erfahrener User
    Hi,

    Namen definieren: zu finden im Register: Formeln -> Befehlsgruppe: Definierte Namen -> Schalter: Namen definieren. Als Name gisbt du an (z.B.) ProduktA und unter Bezieht sich auf =Vorgaben!$C$8:$C$10. Das wiederholst du für alle Produktnamen. Wenn du dann den Code für das Change-Ereignis der ComboBox nach meiner Vorgabe schreibst, werden in der ListBox die TTNr. für das jeweils in der ComboBox ausgewählte Produkt aufgelistet, denn RowSource bezieht sich nun auf den entsprechenden definierten Namen(sbereich).
    Im Beispiel habe ich das nur für die ersten 3 Produkte ausgeführt)

    Noch ein Tipp: es macht sich immer gut, einer hochgeladenen Arbeitsmappe einen Namen zu geben, der mit dem Problem zu tun hat. So kann man als Helfer besser einen Bezug zum jeweiligen Thema herstellen - schließlich antowrtet man normalerweise nicht nur auf ein sondern auf mehrere Themen im Forum ;)

    Bis später,
    Karin
     
    Beverly, 10. Mai 2013
    #6
  7. Sunblocker Erfahrener User
    Hallo Karin
    danke für die schnelle Antwort. Es funktioniert so wie ich es gerne hätte. Danke schon mal dafür. Die Funktion mit Namensmanager kenn ich ( hab das bisher nur benutzt um einen Bereich einen Namen zu geben. ) Wusste gar nicht das man das in Kombination mit VBA sowas erstellen kann, super.

    TTNrListBox2.RowSource = ProduktComboBox

    Was ich nicht verstehe warum kommt da nicht ProduktComboBox.Value hin? Ich frage doch nach den Wert in der Combobox. Aber ist net so wichtig wunder mich nur.

    Hab da noch ein Problem wie ich MehrfachAuswahl einfügen soll. Code ist hier auch in der Datei. Momentan gibt mir der Code alle TTNr bei Produkt A wieder. Das muss man umschreiben (nur die Selektierten) hab auch mit Selected(i) = True versucht geht nicht.

    Sheets(ProduktComboBox.Value).Activate
    Z = WorksheetFunction.CountA(Range("A:A")) + 1
    For i = 0 To TTNrListBox2.ListCount - 1

    If TTNrListBox2.Selected(i) Then
    Cells(Z + i, 4).Value = TTNrListBox2.List(i)
    End If
    Cells(Z + i, 1).Value = Umsetzungsdatumbox
    Cells(Z + i, 2).Value = ÄScheinNrTextBox
    Cells(Z + i, 3).Value = KurzbeschreibungTextBox
    Next i

    Und als 2tes muss in dann noch die Werke hier miteinbauen was ich noch nicht gemacht habe. In der Tabelle muss am Ende alle Kombinationen von TTNr und WErk vorkommen. Sozusagen eine Matrixmultiplikation dieser beiden Auswahllisten.
    Bitte Hilfe ^^

    Gruß Suny
     
    Zuletzt bearbeitet: 10. Mai 2013
    Sunblocker, 10. Mai 2013
    #7
  8. Beverly
    Beverly Erfahrener User

    Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen

    Hi Suny,

    wenn man sich direkt auf den Inhalt eines Steuerelementes bezieht, dann reicht ProduktComboBox aus, denn Value ist die Standardeigentschaft. Wenn du dich dagegen indirekt auf den Inhalt beziehst - so wie beim folgenden Code: Worksheets(ProduktComboBox.Value), dann ist .Value erforderlich, da ein Steuerelement halt nicht nur Value als Eigenschaft besitzt und Excel dann nicht weiß, auf welche konkrete Eigenschaft du dich beziehen willst.

    Hier der Code für das Eintragen der ausgewählten Produkte und Lieferer:

    Code:
    Private Sub CommandButton1_Click()
       Dim Z As Long, i As Long, k As Long
       Dim rngZelle As Range
       If Not IsError(Evaluate(ProduktComboBox & "!A1")) Then
          With Worksheets(ProduktComboBox.Value)
             .Activate
             Z = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count) + 1
             For k = 0 To WerkListBox.ListCount - 1
                If WerkListBox.Selected(k) Then
                   For i = 0 To TTNrListBox2.ListCount - 1
                      If TTNrListBox2.Selected(i) Then
                         .Cells(Z, 4) = TTNrListBox2.List(i)
                         .Cells(Z, 5) = WerkListBox.List(k)
                         .Cells(Z, 1) = Umsetzungsdatumbox
                         .Cells(Z, 2) = ÄScheinNrTextBox
                         .Cells(Z, 3) = KurzbeschreibungTextBox
                         Z = Z + 1
                      End If
                   Next i
                End If
             Next k
          End With
       End If
    End Sub
    Bis später,
    Karin
     
    Beverly, 10. Mai 2013
    #8
  9. Sunblocker Erfahrener User
    Hallo Karin
    Hab vielen Dank für deine Hilfe. Wieder sehr toll gelöst. Wenn du noch Lust hast, kannst du mir 2 Zeilen erklären? Musst du aber nicht versteh ich wahrscheinlich eh nicht. Und danke für die Erklärung vorhin.

    Ja gut Evaluate hab ich die Erklärung nicht verstanden...

    IIf hab ich nachgeschaut: beschreibt ja beide Fälle True und False. Ich erkenne aber nicht wann was gemacht werden soll in dem Code.


    Gruß Sani
     
    Sunblocker, 10. Mai 2013
    #9
  10. Beverly
    Beverly Erfahrener User
    Hi Sani, Suny oder wie auch immer ;),

    Evaluate("Tabelle1!A1") schreibt die Zelle A1 aus dem Tabellenblatt Tabelle1 auf ein Objekt, in deinem Fall also mit Evaluate(ProduktComboBox & "!A1") Zelle A1 des in der ComboBox ausgewählten Tabellenblattes. Gibt es dieses Tabellenblatt und damit auch das Objekt Tabelle1!A1 (bzw. ausgewähltes Tabellenblatt Zelle A1) nicht, dann ergibt dieser Ausdruck einen Fehler. Wenn man nun If Not IsError(.......) Then benutzt, dann heißt das, die Zelle A1 im Tabellenblatt Tabelle1 gibt es und folglich auch das Tabellenblatt, sodass die nächstfolgenden Schritte ausgeführt werden können.

    IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count) ist das selbe wie eine WENN-Funktion und bedeutet: WENN(IstLeer(die letzte Zelle des Tabellenblattes in Spalte 4); dann erste belegte Zelle von unten nach oben in Spalte 4; sonst Anzahl Zeilen im Tabellenblatt) - oder anders ausgedrückt: wenn die letzte Zelle in Spalte 4 belegt ist, dann gib diese letzte Zeilennummer wieder, ansonsten mache von der letzten Zeile in Spalte 4 Strg+Pfeil nach oben und gib die Zeilennummer an, die als erste belegt ist.

    Ich hoffe, ich konnte "alle Klarheiten beseitigen" :p

    Bis später,
    Karin
     
    Beverly, 10. Mai 2013
    #10
  11. Sunblocker Erfahrener User
    Hallo Karin
    bin mit meinen Synonymnamen durcheinander gekommen haha... war auch spät am Freitag und schon brain afk gewesen mit den makro ausprobieren.
    aber hab das glaub ich verstanden. Vielen Dank für die Hilfe und die super Erklärung.

    Gruß Suny
     
    Sunblocker, 13. Mai 2013
    #11
Thema:

Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen

Die Seite wird geladen...
  1. Userform: der Inhalt in einer Combobox soll den Inhalt einer Listbox beeinflussen - Similar Threads - Userform Inhalt Combobox

  2. userform schliessen, Inhalt soll erhalten bleiben

    in Microsoft Excel Hilfe
    userform schliessen, Inhalt soll erhalten bleiben: Guten Morgen, ich hoffe ich kann das verständlich erklären. Ich habe zwei Userformen. Zuerst ist nur Userform1 geöffnet. Über einen CommandButton in UF1 wird dann Userform2 geöffnet. Über einen...
  3. Inhalt vom UserForm ausdrucken

    in Microsoft Excel Hilfe
    Inhalt vom UserForm ausdrucken: Nun habe ich über die Tabelle (Excel 2007 ) einen UserForm mit einige TextBox Felder mit Daten beschrieben. Diese Inhalte hätte ich gerne ausgedruckt, es gelingt mir leider nicht. Kann mich...
  4. Inhalt von Textbox auf Userform in Zahl umwandeln

    in Microsoft Excel Hilfe
    Inhalt von Textbox auf Userform in Zahl umwandeln: N´abend. Ich habe ein Problem, dass natürlich auch schon mehrfach beschrieben wurde, mich deren "Lösungen" aber leider nicht weitergebracht haben. Vielleicht hat ja jemand noch eine Idee.......
  5. Inhalt einer Zelle per Userform anzeigen und ändern

    in Microsoft Excel Hilfe
    Inhalt einer Zelle per Userform anzeigen und ändern: Hallo zusammen, ich habe folgende Herausforderung (eine kleine Beispieldatei werde ich am Besten auch noch anhängen) Ich habe ein Tabellenblatt, in dem ich per Kombinatsionfeld...
  6. Speichern unter Inhalt Textfeld Userform

    in Microsoft Excel Hilfe
    Speichern unter Inhalt Textfeld Userform: Hallo und einen schönen guten Morgen! Ich habe eine Userform, bei der hinter CommandButton1 ein Makro steht, welches meine Excel mit einem Dateinamen speichert, den sich das Makro aus einer...
  7. Excel VBA Userform Textbox Inhalt variabel

    in Microsoft Excel Hilfe
    Excel VBA Userform Textbox Inhalt variabel: Ich habe ein kleines Userform, dass mit mit folgendem Code in TextBox1 den Inhalt von Zelle D3, und in Textbox2 den Inhalt von Zelle E3 anzeigt. If [B3] = "X" Then UserForm1.CheckBox1.Value =...
  8. UserForm ComboBox zeigt Inhalt nicht an

    in Microsoft Excel Hilfe
    UserForm ComboBox zeigt Inhalt nicht an: Hallo, ich habe ein UserForm erstellt, in dem es mehrere Comboboxen gibt. Nachdem ich das UserForm exportiert und in einem Spreadsheet eingefügt habt, werden die Auswahlmöglichkeiten in den...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden