Office: Cbo - ich kann nur die ersten beiden Einträge auswählen

Helfe beim Thema Cbo - ich kann nur die ersten beiden Einträge auswählen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, auf einem Arbeitsblatt habe ich verschiedene AktiveX-Steuerelemente. Über 2 Comboboxen lasse ich Lagerorte anzeigen, bzw. hat man dort die... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von fette Elfe, 15. Januar 2011.

  1. fette Elfe Erfahrener User

    Cbo - ich kann nur die ersten beiden Einträge auswählen


    Hallo,

    auf einem Arbeitsblatt habe ich verschiedene AktiveX-Steuerelemente.
    Über 2 Comboboxen lasse ich Lagerorte anzeigen, bzw. hat man dort die Möglichkeit Lagerorte einzugeben.

    Die Boxen listen schön brav alles was sie listen sollen, nur...
    Erhält eine der Boxen den Fokus, so klappt die Liste auf, und mit den Pfeiltasten (rauf/runter) wähle ich einen Eintrag.
    Leider kann ich dabei immer nur die ersten beiden Einträge auswählen.
    Drücke ich beim 2. nochmal auf "runter", so leert sich die Box und der dritte Eintrag wird auch nicht markiert. Drücke ich dann noch einmal nach unten, so wähle ich den ersten Eintrag.

    Mit der Maus kann ich in die aufgeklappte Liste klicken und auch den dritten Eintrag auswählen, alles ganz normal.
    Ist aber nicht Sinn und Zweck, denn eigentlich sollen die Hände an der Tastatur bleiben...

    Im Code habe ich nichts gefunden was die Auswahl einschränken könnte.
    Und damit Ihr die Einstellungen sehen könnt, habe ich ein Jpeg angehängt.

    Ich hoffe jemand hat eine Idee oder kennt so ein Verhalten.
     
    fette Elfe, 15. Januar 2011
    #1
  2. fette Elfe Erfahrener User
    Edit:

    Leider zu früh gefreut.
    Siehe nächster Post.
     
    fette Elfe, 18. Januar 2011
    #2
  3. fette Elfe Erfahrener User
    Hallo,

    leider habe ich mich zu früh gefreut.
    Direkt am nächsten Morgen in der Firma hatte ich wieder das gleiche Problem, komme aber erst jetzt dazu, hier zu schreiben.

    Es scheint nicht am Firmenrechner zu liegen, denn es macht nicht wirklich einen Unterschied ob ichs da probiere oder zu Hause.

    Manchmal klappt alles wie es soll, meistens nicht.
    Ich habe noch keine reproduzierbare Regel darin gefunden.

    Die Eigenschaften der Boxen habt Ihr ja weiter oben.
    Hier bekommt Ihr noch den kompletten Source-Code einer der Boxen (ist bei beiden gleich), obwohl ich der Meinung bin, dort steht nichts drinn was so ein Verhalten erklären könnte.
    Und zum besseren Verständnis hänge ich noch ein Bild drunter, welches die Abläufe zeigt.


    Vielleicht hat ja doch jemand eine Idee.



    Befüllen der Box mit Werten, durch Aufruf eines Sub beim Verlassen einer anderen Box.
    Dieses Sub befindet sich im Modul des Blattes:
    Code:
    Private Sub ComboBox4_ArtikelNummer_LostFocus()
        
        Call ArtikelLagerorteListen
        
    End Sub

    Befüllen der Box mit Werten.
    Dieses Sub befindet sich in einem extra Modul:
    Code:
    Public Sub ArtikelLagerorteListen()
        
        wkb1 = ("Lagerliste.xlsm")
        wkb2 = ("Artikel.xlsx")
        wks1 = ("Hauptblatt")
        tbName = Workbooks(wkb1).Worksheets(wks1).ComboBox4_Artikelnummer.Value
        
        With Workbooks(wkb1).Worksheets(wks1)
            'Abfrage ob Artikel bereits existiert
            If .Cells(25, 8).Value <> "noch kein Wareneingang gebucht" Then
                Set rg = Workbooks(wkb2).Worksheets(tbName).Range("H2:H9")
                'LagerortZugang
                If .ComboBox6_LagerortZugang.Enabled = True Then
                    .ComboBox6_LagerortZugang.List = rg.Resize(rg.End(xlDown).Row - 1).Value
                End If
                'LagerortAbgang
                If .ComboBox7_LagerortAbgang.Enabled = True Then
                    .ComboBox7_LagerortAbgang.List = rg.Resize(rg.End(xlDown).Row - 1).Value
                End If
            Else
                'Lagerortlisten in CBOs löschen
                .ComboBox6_LagerortZugang.Clear
                .ComboBox7_LagerortAbgang.Clear
            End If
        End With
        
    End Sub

    Zusätzlich wird die Box noch beim betätigen eines Buttons aktiviert bzw. deaktiviert, je nach Bedarf.
    Dieses Sub befindet sich in einem extra Modul:
    Code:
    (...)
    .ComboBox6_LagerortZugang.Enabled = True
    (...)
    .ComboBox6_LagerortZugang.Enabled = False
    (...)

    Der weitere Code kann meiner Meinung nach, eigentlich nichts mit dem Problem zu tun haben, ich poste ihn aber der vollständig halber (mehr Code mit Bezug auf die Box habe ich nicht).
    Folgende Subs befinden sich alle im Modul des Blattes:

    Hier gehts darum ein, bzw. zwei Standard-Lagerorte aufzulisten, wenn ein neuer Artikel eingegeben wird, da dieser dann ja noch kein Artikelblatt und keinen Lagerort hat. Dies dient als Eingabehilfe:
    Code:
    Private Sub ComboBox6_LagerortZugang_GotFocus()
        
        ListenEintrag = "E1"                   'wird bei allen Buchungen angezeigt
        ListenEintrag2 = "TV-01-01-08-01"       'wird bei Buchungen der 99er Artikelgruppe angezeigt
        a = 0
        
        If Me.Cells(25, 8).Value = "noch kein Wareneingang gebucht" Then
            'Abfrage ob cbo.value in Liste enthalten
            For i = 0 To Me.ComboBox6_LagerortZugang.ListCount - 1
                If Me.ComboBox6_LagerortZugang.List(i) <> ListenEintrag Then
                    a = 0
                Else
                    a = 1
                    Exit For
                End If
            Next i
            If a = 0 Then
                Me.ComboBox6_LagerortZugang.AddItem ListenEintrag
            End If
            a = 0
            If Me.ComboBox4_Artikelnummer.Value = "9900001" Then
                For i = 0 To Me.ComboBox6_LagerortZugang.ListCount - 1
                    If Me.ComboBox6_LagerortZugang.List(i) <> ListenEintrag2 Then
                        a = 0
                    Else
                        a = 1
                        Exit For
                    End If
                Next i
                If a = 0 Then
                    Me.ComboBox6_LagerortZugang.AddItem ListenEintrag2
                End If
            End If
            a = 0
        End If
        
        Me.ComboBox6_LagerortZugang.DropDown
        
    End Sub

    Hier wird das Verhalten der Box bei der Eingabe vorgegeben.
    Mit der Tab-Taste wird zur nächsten Box gesprungen, bei jeder anderen Taste werden Bedingungen abgefragt die die Eingabe beeinflussen:
    Code:
    Private Sub ComboBox6_LagerortZugang_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        
        'mit TAB-Taste zur nächsten Box springen
        If KeyCode = 9 Then
            If Me.ComboBox7_LagerortAbgang.Enabled = True Then
                Me.ComboBox7_LagerortAbgang.Activate
            Else
                Me.TextBox2_Menge.Activate
            End If
        Else
            If Me.ComboBox6_LagerortZugang.MaxLength = 14 And Len(Me.ComboBox6_LagerortZugang) = 14 Then
                KeyCode = 0
                Me.ComboBox6_LagerortZugang = ""
            Else
                If Me.ComboBox6_LagerortZugang.MaxLength = 8 And Len(Me.ComboBox6_LagerortZugang) = 8 Then
                    KeyCode = 0
                    Me.ComboBox6_LagerortZugang = ""
                End If
            End If
        End If
    
    End Sub


    Auch hier wird die Eingabe manipuliert, um Tippfehler bei den Lagerorten zu vermeiden, bzw. die Eingabe zu erleichtern:
    Code:
    Private Sub ComboBox6_LagerortZugang_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    
        'Abfrage ob 1. Stelle ein Buchstabe oder eine Zahl
        If Len(Me.ComboBox6_LagerortZugang) = 0 Then
            Select Case KeyAscii
                Case 48 To 57   'Zahlen
                    Me.ComboBox6_LagerortZugang.MaxLength = 8
                    b = 0
                Case 116, 84        't,T
                    Me.ComboBox6_LagerortZugang.MaxLength = 14
                    b = 1
                    Me.ComboBox6_LagerortZugang.Value = "TV"
                Case 101, 69    'e,E
                    Me.ComboBox6_LagerortZugang.MaxLength = 2
                    Me.ComboBox6_LagerortZugang.Value = "E1"
                Case Else
                    KeyAscii = 0
            End Select
        End If
        
        'wenn 1. Stelle ein Buchstabe, dann 2. Stelle auch und sonst nichts
        If Len(Me.ComboBox6_LagerortZugang) = 1 And b = 1 Then
            If Me.ComboBox6_LagerortZugang.Value = "T" Then
                Me.ComboBox6_LagerortZugang.Value = "TV"
            Else
                If Me.ComboBox6_LagerortZugang.Value = "E" Then
                    Me.ComboBox6_LagerortZugang.Value = "E1"
                End If
            End If
        End If
        
        'wenn 1. Stelle eine Zahl, dann 2. Stelle auch
        If Len(Me.ComboBox6_LagerortZugang) = 1 And b = 0 Then
            Select Case KeyAscii
                Case 48 To 57   'Zahlen
                Case Else
                    KeyAscii = 0
            End Select
        End If
        
        'nach der 2. Stelle nur noch Zahlen erlauben
        If Len(ComboBox6_LagerortZugang) >= 2 Then
            Select Case KeyAscii
                Case 48 To 57   'Zahlen
                Case Else
                    KeyAscii = 0
            End Select
        End If
        
        'nach jeder 2. Stelle ein "-" einfügen
        If Me.ComboBox6_LagerortZugang.MaxLength = 8 Then
            If Len(Application.Substitute(Me.ComboBox6_LagerortZugang, "-", "")) Mod 2 = 0 And Len(Me.ComboBox6_LagerortZugang) <> 0 And Len(Me.ComboBox6_LagerortZugang) < 8 Then
                Me.ComboBox6_LagerortZugang = Me.ComboBox6_LagerortZugang & "-"
            End If
        Else
            If Me.ComboBox6_LagerortZugang.MaxLength = 14 Then
                'verhindern das nach dem 2. Buchstaben durch drücken weiterer Buchstaben "-" eingefügt wird
                If Len(Me.ComboBox6_LagerortZugang) = 2 Then
                    Select Case KeyAscii
                        Case 48 To 57   'Zahlen
                            If Len(Application.Substitute(Me.ComboBox6_LagerortZugang, "-", "")) Mod 2 = 0 And Len(Me.ComboBox6_LagerortZugang) <> 0 And Len(Me.ComboBox6_LagerortZugang) < 14 Then
                                Me.ComboBox6_LagerortZugang = Me.ComboBox6_LagerortZugang & "-"
                            End If
                    End Select
                Else
                    If Len(Me.ComboBox6_LagerortZugang) > 2 Then
                        If Len(Application.Substitute(Me.ComboBox6_LagerortZugang, "-", "")) Mod 2 = 0 And Len(Me.ComboBox6_LagerortZugang) <> 0 And Len(Me.ComboBox6_LagerortZugang) < 14 Then
                            Me.ComboBox6_LagerortZugang = Me.ComboBox6_LagerortZugang & "-"
                        End If
                    End If
                End If
            End If
        End If
        
    End Sub

    Hier wird beim verlassen der Box überprüft ob sie den Vorgaben entsprechend ausgefüllt ist, und hinterher wird noch geprüft ob die vorgegebene Höchstanzahl der Lagerorte überschritten wird. Dieser zweite Teil hat aber eigentlich garnichts mit der Box selber zu tun.
    Und im ersten Teil wird auch nur der Fokus wieder zurück auf die Box gesetzt, damit man die Eingabe korrigieren kann:
    Code:
    Private Sub ComboBox6_LagerortZugang_LostFocus()
            
        If Me.ComboBox6_LagerortZugang.MaxLength = 2 Then
            If Len(Me.ComboBox6_LagerortZugang) <> 0 And Me.ComboBox6_LagerortZugang.Value <> "E1" Then
                MsgBox ("Bitte die Schreibweise des Lagerortes überprüfen")
                Me.ComboBox6_LagerortZugang.Activate
            End If
        Else
            If Me.ComboBox6_LagerortZugang.MaxLength = 8 Then
                If Len(Me.ComboBox6_LagerortZugang) <> 0 And Len(Me.ComboBox6_LagerortZugang) < 8 And Me.ComboBox6_LagerortZugang.Value <> "E1" Then
                    MsgBox ("Bitte die Schreibweise des Lagerortes überprüfen")
                    Me.ComboBox6_LagerortZugang.Activate
                End If
            End If
            If Me.ComboBox6_LagerortZugang.MaxLength = 14 Then
                If Len(Me.ComboBox6_LagerortZugang) <> 0 And Len(Me.ComboBox6_LagerortZugang) < 14 And Me.ComboBox6_LagerortZugang.Value <> "E1" Then
                    MsgBox ("Bitte die Schreibweise des Lagerortes überprüfen")
                    Me.ComboBox6_LagerortZugang.Activate
                End If
            End If
        End If
            
        'wenn ComboBox6_LagerortZugang <> ""
        If Me.ComboBox6_LagerortZugang.Value <> "" Then
            'Abfrage ob Artikel schon auf diesem Lagerort
            For i = 24 To 31
                If Me.Cells(i, 13).Value <> "" And Me.Cells(i, 13).Value <> Me.ComboBox6_LagerortZugang.Value Then
                    If i = 31 Then
                        MsgBox "Es sind pro Artikel nur 8 Lagerorte vorgesehen." & Chr(13) & Chr(13) & "Bitte entsprechend ein- bzw. umlagern.", , "Lagerortanzahl überschritten"
                        Me.ComboBox6_LagerortZugang.Activate
                        i = ""
                        Exit Sub
                    End If
                Else
                    Exit For
                End If
            Next i
        End If
        
    End Sub
     
    fette Elfe, 20. Januar 2011
    #3
  4. miriki Erfahrener User

    Cbo - ich kann nur die ersten beiden Einträge auswählen

    [Achtung: Eher Brainstorming als konkrete Lösungsansätze...]

    Ich wundere mich dort ein bißchen über die Einstellung "enabled: false"

    Vielleicht ist "HideSelection: true" auch problematisch?

    "LinkedCell" kann man leer lassen, aber "ListFillRange"... Irgendwoher muß die ComboBox ja ihre Werte beziehen...

    "MatchEntry" und "MatchRequired" sind vielleicht auch noch ein Punkt für Finetuning...

    Ist jetzt 'n bißchen hart, den ganzen VBA-Source durchzuflözen, erst recht ohne des direkt nachzubauen. Und mein x2000 würde sich vielleicht eh anders verhalten als Dein x2007. Aber...

    Wenn ich das recht verstehe, setzt Du den Listeninhalt über die .List Eigenschaft. Wieso nicht über .ListFillRange? Oder ist .List die Eigenschaft ListFillRange? Weiß ich jetzt so aus'm Kopp nich...

    Was macht "Me.ComboBox6_LagerortZugang.MaxLength = 2"? Das beschränkt doch nicht zufällig die Listenlänge auf 2 Zeilen? Nein, begrenzt nur die Textlänge, oder? Und wenn's mal auf 2 begrenzt wurde, wo und wie wird es ggf. wieder hoch gesetzt?

    Die Zeile direkt darüber scheint mir etwas verhackstückt. Hast Du "HTML deaktivieren" beim Posting nicht angekreuzt?

    Ok, ist jetzt alles ein bißchen wildes Herumgestocher, weil ich das jetzt nicht nachgebaut habe. Aber vielleicht ist irgendwas dabei, was in die richtige Richtung geht...

    Um den Code etwas übersichtlicher zu gestalten, würde ich dringendst empfehlen:

    Lies am Anfang den Wert aus der ComboBox in eine lokale Variable aus und mach alle Tests und Bearbeitungen mit der. Setz den ComboBox-Wert dann am Ende mit dieser Variablen. Quer durch den Code immer wieder "Me.ComboBox6_LagerortZugang.Value" zu lesen, verursacht auf Dauer Augenkrebs. ;-)

    Und wenn Du dann auch noch z.B. "set cbx=Me.ComboBox6_LagerortZugang" und entsprechend dann "cbx" im Code verwendest, wäre es die Königsklasse. ;-)

    Gruß, Michael
     
  5. fette Elfe Erfahrener User
    Erstmal vielleicht noch zur Erklärung:
    in meinen Augen ist an diesen Boxen nichts anders, als ich es sonst, in den verschiedenen Variationen, auch benutze.
    Und sonst habe ich solche Probleme nicht.
    Ich vermute deshalb entweder einen Excel-Fehler (hoffentlich nicht), oder irgendeine Kleinigkeit, die ich wegen Betriebsblindheit übersehe.




    Hallo Michael,

    ich habe alle Deine Gedanken verfolgt und ausprobiert.
    Egal ob ich mir davon etwas versprach oder nicht.
    Ich gehe Deine Antwort mal scheibchenweise durch:


    Das ist beabsichtigt, habe den Screenshot nur im falschen Zustand gemacht.
    Mein Fehler.
    Die Box ist standardmäßig deaktiviert.
    Sie wird nur durch drücken eines Buttons, also nur bei Bedarf, aktiviert.


    Das beeinflusst eigentlich nur die Anzeige.
    Setzt man diesen Wert auf "true", so wird die Selektion grau hinterlegt.
    Das ist meines Wissens nach alles und hat auch sonst keinen Unterschied gebracht.


    Die Werte werden im "Public Sub ArtikelLagerorteListen() " übergeben (2. von Oben).
    Da die Box auf über 200 Tabellenblätter zugreift, und die dortigen Werte sich bei jeder Buchung ändern können, muss ich sie immer aktuell neu raus suchen lassen.
    Da habe ich nichts ausprobiert, da ich nicht wüste was oder wie...


    Mit dem ersten kann man einstellen ob und in wie weit die Box einem die passendsten Einträge als Vorschlag direkt anzeigt, bzw. sich selber ausfüllt. (Scheiß Satz, ich hoffe Ihr wisst was ich meine?).
    Mit dem zweiten kann man festlegen ob nur Einträge aus der Liste ausgewählt, oder auch ganz frei etwas anderes eingetragen werden darf.
    Habe ich aber trotzdem beides probiert.


    Mit "ListFillRange" bekomme ich nur Fehlermeldungen.
    Falls es das im Source so gibt, habe ich die richtige Syntax nicht gefunden.
    Allerdings hatte ich mit "List" auch noch nie Probleme. Benutze ich sonst auch immer.
    Wenn hierzu jemand einen Verbesserungsvorschlag hat, bitte immer her damit.


    Da wird die Textlänge begrenzt. Entweder auf 2, 8 oder 14 Zeichen, je nach erfüllter Bedingung.
    Die wird auch immer neu, halt so wie sie gerade gebraucht wird, begrenzt.
    Auch dies habe ich ausprobiert (zeitweise deaktiviert), ohne Ergebnis.


    Wahrscheinlich vergessen, vielleicht auch beim rumkopieren Mist gebaut...
    Mea culpa.
    Ich werd aber gleich den Beitrag mit dem Code überarbeiten, und auch zu den einzelnen Abschnitten eine kurze Erklärung geben.


    Da haben wir an anderer Stelle ja schon drüber gesprochen.
    Jetzt siehst Du warum ich die Schreibweise mit Variablen gerne benutzen würde.
    Werde ich ändern sobald ich mich damit eingehend auseinander gesetzt habe, denn diese Datei ist im täglichen Gebrauch und muss zuverlässig funktionieren.
    Die kann ich mir durch Umbaumaßnahmen nicht zerschießen.
    Zudem habe ich noch ein anderes Projekt, welches ich vorrangig fertig bekommen muss.
    Aber aufgeschoben ist nicht aufgehoben, das Thema werde ich verfolgen.


    Lieben Dank für Dein Brainstorming.
    Bin trotzdem leider genauso ratlos wie zuvor.
     
    fette Elfe, 20. Januar 2011
    #5
  6. miriki Erfahrener User
    Hmmm... Nachdem ich da jetzt mal was nachbauen wollte, bin ich verwirrt...

    Also... Ich hatte bislang noch nicht oft per Code an ComboBoxen herumgedreht, deswegen war ich mir da auch nicht sicher. Aber jetzt hab ich mal 3 RadioButtons über 3 Listen gepackt und steuere damit den Inhalt einer ComboBox.

    Der Ansatz über "ListFillRange" ist simpel: Man setzt den "range" einfach direkt als String - also keine Umwandlung in eine Range-Objekt!
    Code:
    s = "a2:a10"
    o1.ListFillRange = s
    Dafür krieg ich es mit "List" nicht hin, weil dafür die Syntax irgendwie eklatant anders ist, als Du sie in Deinem Code hast.
    Code:
    s = "a2:a10"
    Set r = s1.Range(s)
    o1.List = r
    Laufzeitfehler 381: Eigenschaft konnte nicht gesetzt werden. Index des Eigsnschaftenfeld ungültig.

    Aber auch:
    Code:
    set o1.List = r
    Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht.

    Laut Online-Hilfe braucht es dafür 2 (und ggf. einen 3. optionalen) Parameter, mit dem ein Array angegeben wird. Also einfach ein Range-Objekt übergeben, wie Du es machst, klappt hier nicht. Die Online-Hilfe sagt dazu u.a.:
    Interessanterweise zeigt mir die Online-Hilfe zu "ComboBox" in den "Eigenschaften" irgendwie nicht "ListFillRange" an, dafür aber "List". Suche ich in der OH nach "ListFillRange", sehe ich unter "Betrifft" dann u.a. das "OLEObject". Bei dem finde ich in den Eigenschaften dann das "ListFillRange", aber wiederum nicht "List"... *nörgel*

    Eigentlich ist das auch nicht kriegsentscheidend, denn das Füllen der ComboBox6 wird ja vom "LostFocus" der ComboBox4 gesteuert. Wenn es nur dann aufgerufen wird, kann sich der Listeninhalt ja nicht mehr ändern, solange ComboBox6 den Focus hat.

    Ich krieg's also noch nicht so nachgebaut, daß ich das merkwürdige Verhalten, was du beschreibst, irgendwie nachvollziehen kann. Aber von der Logik her würde ich den Fehler, wenn es denn einer im VBA-Code ist, am ehesten im "KeyDown"-Ereignis suchen. Denn wenn es auftritt, wenn man per Cursor-down in die 3. Zeile der Liste wechselt, dann hat die ComboBox schon lange vorher den Fokus bekommen. "GotFocus" ist dann also aus dem Schneider.

    Probier mal bitte folgendes aus: Geh in die ComboBox und dann mit Cursor-down runter. Wenn der Effekt auftritt, daß der Cursor unerwartet wieder in der 1. Zeile steht, statt in der 3. (oder war's die 4.?), dann schau mal mit der Maus über die ScrollBar, ob da die restlichen Einträge überhaupt noch in der Liste drin sind.

    Wenn Du 2 Monitore hast oder Tabelle und Source sonstwie nebeneinander auf den Schirm kriegst, wäre es ansonsten vielleicht auch mal keine schlechte Idee, das "KeyDown" im Single-Step zu durchlaufen, also einen Breakpoint an den Anfang der Routine zu setzen und dann mit F8 tracen. Dann könntest Du vielleicht sehen, wann genau der Zeilen-Cursor in der Liste plötzlich nach oben hüpft.

    Gruß, Michael
     
  7. fette Elfe Erfahrener User
    Hallo Michael,

    ganz lieben Dank, Du hast mich auf die richtige Spur gebracht.
    Ich habs gefunden.
    Ich sach ja: "betriebsblind"

    Dieser Teil des KeyDown-Ereignisses fängt alle Tasten (außer der Tab-Taste) ab, wenn die Box mit der maximal erlaubten Zeichenmenge gefüllt ist.
    Nunja, wenn ich einen bestehenden Lagerort auswähle, IST die Box maximal gefüllt.
    Und wenn ich dann nicht die Ausnahme der Pfeil-rauf-runter-Tasten setze, dann tut das Makro genau das was es eigentlich soll: es leert die Box.
    *inne Tischkante beiß*
    Code:
    Else
            If Me.ComboBox6_LagerortZugang.MaxLength = 14 And Len(Me.ComboBox6_LagerortZugang) = 14 Then
                KeyCode = 0
                Me.ComboBox6_LagerortZugang = ""
            Else
                If Me.ComboBox6_LagerortZugang.MaxLength = 8 And Len(Me.ComboBox6_LagerortZugang) = 8 Then
                    KeyCode = 0
                    Me.ComboBox6_LagerortZugang = ""
                End If
            End If 

    mit dieser zusätzlichen Bedingung nach dem ersten "Else" klappts bisher wunderbar:
    Code:
    If Not KeyCode = 38 And Not KeyCode = 40 Then    '38 = Pfeil rauf, 40 = Pfeil runter


    zu dem anderen Thema:
    Wenn "ListFillRange" über "String" und nicht "Range" funktioniert, kann ich natürlich lange probieren...
    Die Schreibweise mit "List" habe ich für mein erstes Projekt irgendwo im Internet gefunden.
    Und seitdem funktioniert sie (eigentlich) problemlos.
    Deshalb habe ich mir nie weiter Gedanken darüber gemacht.

    Du schreibst immer von der Online-Hilfe...
    Meinst Du die Hilfe, die übers Menü aufgerufen wird?
    Oder gibt es da eine extra Seite wo man auch über den Browser drauf zugreifen kann.
    In diesem Fall würd ich Dich mal auf den Link anbetteln.
    Denn bei mir funktioniert die Office-Hilfe leider nicht.
    habe schon verschiedenes probiert, ist wohl massiv bei der Installation was schief gelaufen.
    Ich muss mal endlich das OS neu aufsetzen, komme nur nie dazu...


    Ich finds übrigens sehr nett wieviel Mühe (nachbauen etc.) Du Dir mit meinen Fragen so machst.
    Gerade Nachbauen kann und würde ich nie erwarten.
    Andererseits ist es leider auch nicht ganz so einfach selber ein Beispiel zu posten.
    Einerseits wegen Dateigröße, andererseits wegen Firmendaten...

    Auf jeden Fall ist Brainstorming mit Dir eine fruchtbare Sache. ;O)
     
    fette Elfe, 21. Januar 2011
    #7
  8. miriki Erfahrener User

    Cbo - ich kann nur die ersten beiden Einträge auswählen

    Oh, prima! Freut mich, daß es dann irgendwie geholfen hat.

    Ne, schon die "eingebaute" Online-Hilfe, aber nicht dieser blöde "Assistent", also die Büroklammer und Konsorten. Diese ist für mich eigentlich immer die primäre Referenz, auch wenn ich weiß, daß sie an einigen Stellen auch mal fehlerhaft ist. Aber eine "Notiz"-Funktion ist da ja leider nicht so recht vorhanden.

    Zusätzlich schau ich ggf. auch mal bei einigen externen Quellen rein. Aber auch bei denen ist wieder Microsoft meine primäre Quelle: "MSDN - Das Microsoft Developer Network"

    Wenn's um Lösungen und weniger um Referenz geht, dann ist das VB-Archiv auch eine ganz nette Quelle.

    Wie man in den Wald hineinruft usw. ;-)

    Gruß, Michael
     
Thema:

Cbo - ich kann nur die ersten beiden Einträge auswählen

Die Seite wird geladen...
  1. Cbo - ich kann nur die ersten beiden Einträge auswählen - Similar Threads - Cbo Einträge auswählen

  2. Falscher / übrig gebliebener Add-in Oulook Eintrag

    in Microsoft Outlook Hilfe
    Falscher / übrig gebliebener Add-in Oulook Eintrag: Hallo, kann man aus Outlook 2010 angeblich vorhandene Add-ins überhaupt noch entfernen, wenn geleugnet wird, dass man ohnedies Systemverwalter ist? Auf einem Rechner konnte ich durch...
  3. Zähle Einträge die in einen Uhrzeitbereich liegen

    in Microsoft Excel Hilfe
    Zähle Einträge die in einen Uhrzeitbereich liegen: Hallo zusammen, ich bin in excel absoluter beginner. ich habe mir für die steuerberechnung eine kleine tabelle angefertigt die diverse inhalte berechnet und ich diese zur abgabe an das finanzamt...
  4. Felder in Abhängigkeit von cbo Sperren

    in Microsoft Access Hilfe
    Felder in Abhängigkeit von cbo Sperren: Hallo liebe Forengemeinde, wie in der Überschrift schon angedeutet, suche ich nach einer Möglichkeit, Textboxen in einem Form zu sperren, je nach dem was in einem cbo ausgewählt wurde (gleiches...
  5. Abfragekriterium durch CBO

    in Microsoft Access Hilfe
    Abfragekriterium durch CBO: Hallo Gemeinde, ich versuche mich grad an einer Abfrage und bekomme es leider nicht gebacken..... Folgender Sachverhalt : Ich habe eine Tabelle mit verschiedenen Daten. Allen ist gleich, das...
  6. CBO in UF - AddItem und List

    in Microsoft Excel Hilfe
    CBO in UF - AddItem und List: Hallo Forum, in einer Datei habe ich bisher eine CBO beim Verlassen der vorherigen CBO folgendermaßen gefüllt (select case auf eins verkürzt): Private Sub ComboBoxKunde_Exit(ByVal Cancel As...
  7. VBA - CBO - Eingabe nur in festgelegtem Format ermöglichen

    in Microsoft Excel Hilfe
    VBA - CBO - Eingabe nur in festgelegtem Format ermöglichen: Hallo, ich habe mal wieder keinen blassen Schimmer, und im WWW finde ich auch keinen Zündfunken. Was ich möchte ist bestimmt möglich, nur wie aufwändig wird das ganze? Wenn jemand die Lösung...
  8. je nach Bedingung nur Auswahl aus Bereich in CBO listen

    in Microsoft Excel Hilfe
    je nach Bedingung nur Auswahl aus Bereich in CBO listen: Hallo, an diesem Problem knabbere ich schon seit mehreren Wochen und bekomme es nicht hin. gegeben: 1. Blatt > Datenliste 2. Blatt > Stammdaten, Datentypen sind Spaltenweise angeordnet...
  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