Office: 4 Fragen zu DropDown in UserForm

Helfe beim Thema 4 Fragen zu DropDown in UserForm in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Quasi Fortsetzung von: http://www.office-hilfe.com/support/topic,13445,-eingabemaske-erzeugt-bei-jeder-eingabe-eine-neue-datenzeile.html Ich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fette Elfe, 19. Dezember 2009.

  1. fette Elfe Erfahrener User

    4 Fragen zu DropDown in UserForm


    Quasi Fortsetzung von:
    http://www.office-hilfe.com/support...t-bei-jeder-eingabe-eine-neue-datenzeile.html



    Ich benutze Office2007 und XP.
    Meine Datei nimmt so langsam Formen an, ist aber noch lange nicht fertig.
    Inzwischen habe ich mich mit UserForm auseinandergesetzt, einige kleine Anfänge von Makro gelernt und so nebenbei noch einige andere Dinge entdeckt.
    Sehr interessant das alles.

    Im Internet habe ich bereits ne Menge Beispiele und Tutorials gefunden die mir bei meinen Lösungen geholfen haben.
    Leider komme ich bei einigen Sachen absolut nicht weiter.
    ich hoffe das Ihr mir da helfen könnt.
    Besonders problematisch für mich ist, das es für die gleiche Lösung manchmal verschiedene Schreibweisen gibt (mit Komma, mit Semikolon, Englisch, Deutsch.....) und ich immer erst herausfinden muss welche bei mir angenommen wird.
    Besonders ärgerlich ist, wenn ich 2 oder 3 Schreibweisen ausprobiert habe, und immernoch keine angenommen wird.
    Leider komme ich bei einigen Sachen absolut nicht weiter.
    ich hoffe das Ihr mir da helfen könnt.


    1. Ich möchte gerne das die DropDowns in den UserFormen die ganzen leeren Zeilen/Zellen nicht mehr mit anzeigen.
    Bisher waren die angezeigten Bereiche komplette Spalten (z.Bsp. $A:$A).
    Dadurch wurden die DDs natürlich arg lahm.
    Im Moment habe ich sie auf bestimmte Zahlen in den Spalten begrenzt (z.Bsp. $A$1:$A$10).
    Genau DAS möchte ich aber vermeiden, denn die Datei soll später flexibel sein und sich Veränderungen anpassen können.
    Ich habe verschiedenes ausprobiert:
    - im Makro versucht die Auswahl auf die ausgefüllten Zeilen zu beschränken (mit Select gespielt, mit Formula gespielt, xlEnd usw.)
    - im Namenseditor mit BEREICH.VERSCHIEBEN(Tabellenname!$A:$A;;;ANZAHL2(Tabellenname!$A:$A)) den Bereich variabel anzupassen
    ...
    nix funktioniert.
    Irgendwo kommt immer irgendeine Fehlermeldung, oder es passiert nicht das was passieren soll.


    2. Das erste DD in UserForm1 enthält Datumsangaben. Später beim arbeiten mit dieser Datei wird man mehrmals das gleiche Datum benötigen, bzw. danach halt immer den nächsten Tag.
    Deshalb wäre es extrem praktisch wenn sich das DD "merken" würde welche Auswahl als letztes getroffen wurde, und diese auch als oberstes anzeigt, bzw. direkt entsprechend ausgefüllt ist.
    (Habe gerade das automatische Löschen in diesem feld deaktiviert, jetzt bleibt die letzte Eingabe stehen, aber die Scrollbar fängt immer noch ganz am Anfang an, und sobald Excel geschlossen ist, ist auch diese Eingabe futsch).
    Sollte man tatsächlich noch einmal ein älteres Datum benötigen, kann man ja immernoch hochscrollen.
    Falls es bei der Lösung hilfreich ist, könnte auch ein Bezug auf Palettenbewegungen!$A$7 gesetzt werden, denn dort findet sich immer das zuletzt eingegebene Datum.


    3. kann man diese DDs irgendwie so einrichten, das man nicht rechts den Scrollbalken anfassen muss, sondern ganz normal hineinklickt und mit dem Mausrad scrollt?

    4. Ich kenne eine Acces-basierte Anwendung in unserer Firma, wo bei manueller Eingabe in ein DD ab dem ersten Zeichen quasi ein "Autovervollständigen" aktiv ist. Klickt man dann auf den Scrollbalken, werden auch die Inhalte entsprechend der bereits eingegebenen Buchstaben angezeigt.
    Wie kann man denn das "anschalten"?
    Natürlich müssen die Inhalte dafür in den Stammdaten alphabetisch sortiert sein. Das kommt bei mir noch.



    Ich hoffe ich habe mich verständlich ausgedrückt.
    Noch mehr hoffe ich auf Tipps und Lösungsvorschläge, falls sich die Sachen überhaupt realisieren lassen.


    Komplette Datei findet Ihr im Anhang.
     
    fette Elfe, 19. Dezember 2009
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    ad 1)
    Beispielhaft am Fall der Speditions-Combo führe ich die List-Bereich-Ermittlung an:
    Code:
    Private Sub ComboBoxSpedition_DropButtonClick()
      Dim Rg As Range
      Set Rg = Sheets("Stammdaten").Range("Spedition")
      ComboBoxSpedition.List = Rg.Resize(Rg.End(xlDown).Row).Value
    End Sub
    ad 2)
    Es besitzen nicht bloß die Steuerelemente einer Userform Ereignisse, sondern auch die Userform selbt. Das Activate-Event wird zum Beispiel erzeugt, wenn die Userform mit der .Show-Methode sichtbar gemacht wird:
    Code:
    Private Sub UserForm_Activate()
      ComboBoxDatum.Value = Sheets("Palettenbewegungen").Range("A7").Value
    End Sub
    ad 3)
    Bezüglich Mausradsteuerung weiß ich nichts.

    ad 4)
    Die Combo-Felder, die Textinhalt aufweisen, besitzen diese Eigenschaft ohnehin. Zuständig ist die .MatchEntry-Eigenschaft, die 3 verschiendene Einstellungen besitzen kann, wovon 2 (0=fmMatchEntryFirstLetter, 1=fmMatchEntryComplete) zwei verschiedene Varianten dieser Eigenschaft ermöglichen, die 3. (2=fmMatchEntryNone) deaktiviert diese Eigenschaft.
     
    Exl121150, 19. Dezember 2009
    #2
  3. fette Elfe Erfahrener User
    Ich bin baff!

    ganz lieben Dank Exl121150.
    Du hast mir nicht nur sehr weiter geholfen indem Du mir Fragen beantwortet und Lösungen gezeigt hast, Du hast sie auch noch direkt in die Liste eingebaut und "so nebenher" noch andere "Kleinigkeiten" verbessert.
    Das ist echt mehr als man sich in einem Forum erhoffen darf.


    Nur eine einzige Sache funktioniert nicht:
    in UF1 bei der ComboBoxLieferantEmpfänger kommt immer eine Fehlermeldung sobald ich das DD ausklappen will.
    Aber das dürfte daran liegen das ich:

    Case Else
    ... (noch nicht definiert)
    End Select
    ComboBoxLieferantEmpfänger.List = Rg.Resize(Rg.End(xlDown).Row).Value

    noch nicht definiert habe.
    Da sollen die Werte von mehreren Bereichen aufgelistet werden.
    Hab schon ne Menge dazu gelesen, aber noch keinen lauffähigen Text hinbekommen.
    Naja, wird auch noch klappen.

    Danke nochmal, echt super!

    Gruß Achim

    Und sorry, bin erst jetzt zum Antworten gekommen.
     
    fette Elfe, 22. Dezember 2009
    #3
  4. Exl121150 Erfahrener User

    4 Fragen zu DropDown in UserForm

    Hallo Achim,

    das aufgetretene Problem ist mir auch schon aufgefallen und hängt damit zusammen, dass man auf diese Combo erst klicken darf, wenn die Bereichsvariable Rg einen Bereich in sich beherbergt - und das ist erst dann der Fall, wenn im CASE-Statement einer der 3 Bereiche Lieferant/Empfänger/Spedition der Variablen Rg zugewiesen wurden, d.h. diese Problem-Combo darf man erst dann betätigen, wenn zuerst in der Combobox VorgangAbkürzung (Combo mit Beschriftung "Vorgang") ein entsprechender Wert ausgewählt ist.
    Das Problem kannst Du umgehen, in dem Du im ELSE-Zweig des SELECT-Statements einen Default-Bereich festlegst für die Rg-Variable.
    Oder aber, Du fragst die Rg-Variable auf NOTHING ab, und falls sie diesen Wert hat, einen Warnhinweis ("Fehlende Eingabe in Vorgang") ausgibst anstelle der Zuweisung an die List-Eigenschaft der Combo.
     
    Exl121150, 22. Dezember 2009
    #4
  5. fette Elfe Erfahrener User
    Hallo Exl121150,

    ich bin mal so vermessen zu sagen:
    ich glaube nicht das mir eine Abfrage auf NOTHING helfen würde

    Denn:
    eigentlich sollten in den Fällen von keiner Eingabe in Combo mit Beschriftung "Vorgang", bzw. dort einer Eingabe die nicht in der Liste vorkommt, alle drei Bereiche zusammen aufgelistet werden.

    Ich werde das aber jetzt ganz anders machen:
    in Combo mit Beschriftung "Vorgang" wird eine Eingabe aus der Liste zwingend verlangt.
    Damit hätte ich dieses Problem gelöst und kann den Case Else löschen.

    Evtl. würde es aber trotzdem Sinn machen einen Default-Bereich festzulegen, für den Fall das später noch andere "Vorgänge" in die Liste aufgenommen werden.
    Oder ich bekomme es hin die dann dementsprechend zu zu ordnen.
    Mal schauen.

    Gruß Achim


    Achso, ganz anderes Problem:

    Wenn ich die UF1 aufrufe und mit TAB durchklicke, sollen die DDs direkt aufklappen.
    Das funktioniert mithilfe von

    Private Sub ComboBoxNamederCB_Enter()
    Me.ComboBoxNamederCB.DropDown
    End Sub

    für jede CB.

    Leider funktioniert es nicht immer, nicht bei jeder, und irgendwie auch nicht bei jedem Durchlauf.
    Scheint unzuverlässig zu sein, obwohl der CB-Wechsel mittels TAB-Taste als Enter erkannt wird.

    Jemand ne Idee?
     
    fette Elfe, 22. Dezember 2009
    #5
  6. Exl121150 Erfahrener User
    Hallo,
    folgender Code verknüpft die Listenbereiche, falls keine Vorauswahl eingestellt ist:
    Code:
    Private Sub ComboBoxLieferantEmpfänger_DropButtonClick()
    'je nach Auswahl in Vorgang nur bestimmte Auflistung in Lieferant_Empfänger
      Dim RgL As Range, RgE As Range, RgS As Range, Rg As Range
      With Sheets("Stammdaten")
        Select Case ComboBoxVorgangAbkürzung
        Case "WE", "Ret. WA", "Pal. Abh. Lief."
          Set Rg = .Range("Lieferant"): Set Rg = Rg.Resize(Rg.End(xlDown).Row)
        Case "WA", "Ret. WE", "Pal. Anl. Empf."
          Set Rg = .Range("Empfänger"): Set Rg = Rg.Resize(Rg.End(xlDown).Row)
        Case "Pal. Anl. Sped.", "Pal. Abh. Sped."
          Set Rg = .Range("Spedition"): Set Rg = Rg.Resize(Rg.End(xlDown).Row)
        Case Else
        'ComboBoxLieferantEmpfänger.List = Sheets("Stammdaten").Range("Lieferant & Empfänger & Spedition").Value
          Set Rg = .Range("Lieferant"): Set Rg = Rg.Resize(Rg.End(xlDown).Row)
          Set RgE = .Range("Empfänger"): Set RgE = RgE.Resize(RgE.End(xlDown).Row)
          Set RgS = .Range("Spedition"): Set RgS = RgS.Resize(RgS.End(xlDown).Row)
          Set RgL = Application.Union(RgE, RgS)
        End Select
      End With
      With ComboBoxLieferantEmpfänger
        .List = Rg.Value
        If Not RgL Is Nothing Then
          For Each Rg In RgL.Cells
            .AddItem Rg.Value
          Next Rg
        End If
      End With
    End Sub
    Sind mehrere Combos hintereinander, bleibt mit der TAB-Taste jede 2. Combo inaktiv, was das Listenanzeigen betrifft.
    Macht man das Gleiche mit der ENTER-Taste, tritt dieses Phänomen nicht auf.
    Notfalls kann man auch die F4-Taste drücken, damit die Liste angezeigt wird.
     
    Exl121150, 22. Dezember 2009
    #6
  7. fette Elfe Erfahrener User
    Hallo Exl121150,

    Dein Code zum auflisten der drei Bereiche hintereinander funktioniert super.
    Ich hab inzwischen bestimmt 20 verschiedene Lösungen ausprobiert und es nicht hinbekommen.
    Vermutlich hat immer irgendwas gefehlt, oder die Vorlagen waren für andere Basic-Versionen....


    Die Geschichte mit dem Aufklappen der DDs habe ich gelöst:

    Private Sub ComboBoxVorgangAbkürzung_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Me.ComboBoxVorgangAbkürzung.DropDown
    End Sub


    Das für jede CB, funzt super, auch mit der TAB-Taste.
    Jetzt kann die UF eigentlich mit der Tab-Taste und Buchstaben (linke Hand) und dem Zahlenblock + den Cursor-Tasten (rechte Hand) ausgefüllt werden.
    Ich hoffe das bringt genug "Arbeitsgeschwindigkeit" das die Lösung in der Firma akzeptiert wird.


    Wünsch Dir erstmal schöne Feiertage
    Bis die Tage mal
    wirst bestimmt noch von mir lesen, bin ja noch nicht fertig
    *lach*

    Gruß Achim
     
    fette Elfe, 22. Dezember 2009
    #7
  8. fette Elfe Erfahrener User

    4 Fragen zu DropDown in UserForm

    Hallo Exl121150,

    da Du mir ja so engagiert geholfen hast, dachte ich, vielleicht wirds Dich interessieren.

    Die Geschichte von Punkt 2 in meinem Eröffnungspost habe ich (jetzt hoffentlich) gelöst.
    Sprich:
    wenn die UserForm.ComboBoxDatum geöffnet wird, wird immer schon das Datum aus der letzten Eintragung angezeigt UND dieser Listeneintrag ist im Listenfeld schon angewählt.
    Dadurch entfällt langes scrollen.

    Dafür habe ich mir zwei Hilfszellen gemacht:
    - in der einen wird der DATWERT der letzten Eintragung ausgegeben
    - in der anderen wird der RANG dieses Wertes innerhalb des Listenbereiches ausgegeben

    Somit kann ich beim Öffnen der UF den ListIndex mittels Zellbezug direkt darauf setzen.
    Allerdings musste ich für die erste Hilfszelle BEREICH.VERSCHIEBEN in der Formel benutzen, da ja bei mir vor jeder neuen Eintragung alle Zeilen ab 7 um eine nach unten verschoben werden. Zellbezug $A$7 hat nicht gereicht, ist mit nach unten gewandert.

    Damit der von mir gesetzte ListIndex nicht die Auswahl von anderen Listeninhalten sperrt, habe ich das Setzen dieses Indexes in: Private Sub UserForm_Activate()

    in: Private Sub ComboBoxDatum_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    habe ich:
    If ComboBoxDatum.Value = 0 Then
    .ListIndex = Sheets("Palettenbewegungen").Range("N2").Value - 1
    End If

    Damit das ausgeklappte DD nach Beenden der UF nicht noch über dem Blatt "hängt" musste ich in: Private Sub CommandButtonPalBewBeenden_Click()
    With ComboBoxDatum
    .ListIndex = -1
    End With

    einfügen.

    Und damit die anderen CBOs auch machen was sie sollen, habe ich die Events: _DropButtonClick()
    alle gelöscht und den kompletten Code in: KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Jetzt klappts auch mit der Nachbarin... und mit der TAB-Taste.

    Nur wenn ich ohne irgendetwas einzutragen mit der TAB-Taste "durchtabse" kommt ab und zu ein Fehler.
    Die CBOs stehen auf "Match required" und anscheinend wird manchmal ein Klick zuviel gezählt. Denn eigentlich funktioniert alles super, auch wenn ich nichts auswähle.
    Aber das ist nebensächlich, denn das wird in der Praxis eigentlich nicht vorkommen, und ist (falls doch) auch mit 2 Mausklicks zu beheben.

    Nur die CBODatum kann ich leider nicht auf "Match required" stellen, eben wegen jenem Fehler.
    Aber auch das soll nebensächlich sein.
    Niemand wird das Datum von Hand eingeben wollen wenn es viel komfortabler geht.

    Gruß Achim
     
    fette Elfe, 24. Dezember 2009
    #8
Thema:

4 Fragen zu DropDown in UserForm

Die Seite wird geladen...
  1. 4 Fragen zu DropDown in UserForm - Similar Threads - Fragen DropDown UserForm

  2. Outlook Neuling - Fragen

    in Microsoft Outlook Hilfe
    Outlook Neuling - Fragen: Hallo ihr Wissenden, fange gerade mit Outlook an und es hakt etwas. Konfiguration: Outlook im Firefoxbrowser, bisher wurden die Mails mit Thunderbird abgerufen Outlook lokal aus dem Officepaket....
  3. Outlook: Mailinglisten erstellen und andere Fragen

    in Microsoft Outlook Hilfe
    Outlook: Mailinglisten erstellen und andere Fragen: Ich habe mal ein paar Fragen zu Outlook. Ich nutze es zu Hause und auf der Arbeit. An beiden Geräten habe ich "Office 365", bzw. auf Arbeit "Office 365 ProPlus". Allerdings habe ich immer so das...
  4. FRAGE: Wenn(oder ; Wenns

    in Microsoft Excel Hilfe
    FRAGE: Wenn(oder ; Wenns: Hallo liebe Excel Legenden. Ich zerbreche mir jetzt schon seit Stunden den Kopf. Folgende Situation: Spalte A Tätigkeit Spalte B Anzahl Max Spalte C Anzahl Min Wenn ich jetzt bei Tätigkeit in...
  5. Frage zu Wenn Formel

    in Microsoft Excel Hilfe
    Frage zu Wenn Formel: Hallo, ich habe eine Liste bei der ich, wenn in einer Zelle die Meldung Net Price steht, dann nicht gerechnet werden soll. Allerdings ist bei mir diese Zeile nicht die eigentliche in der...
  6. Doofe Frage zu Power Query

    in Microsoft Excel Hilfe
    Doofe Frage zu Power Query: Hallo zusammen, habe ein doofe Frage. Ich habe über den Weg -Daten-Daten abrufen-aus Datei-aus Arbeitsmappe eine Tabelle in eine andere Mappe importiert. Wenn ich nun in der Quelldatei was ändere...
  7. Frage zu: Tutorial "Excel - (abhängige) DropDown-Menüs"

    in Microsoft Excel Hilfe
    Frage zu: Tutorial "Excel - (abhängige) DropDown-Menüs": Hallo Excel Fans, viele Dank für das tolle Tutorial zum Thema "Excel - (abhängige) DropDown-Menüs" von silex1. Es funktioniert in meinem selbst erstellten Haushaltsbuch hervorragend. Was...
  8. Excel Fragen, Bereichsnamen erweitern, Dropdown mit Makro

    in Microsoft Excel Hilfe
    Excel Fragen, Bereichsnamen erweitern, Dropdown mit Makro: Hi Leute ich habe leider einige Schwierigkeiten eine Reparaturauflistung in Excel zu erstellen. Bis jetzt habe ich schon ein Dropdown menü erstellt,in dem verschiedene Maschinen, die ich...
  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