listbox value wird nicht übernommen

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von FloFuchs.

    listbox value wird nicht übernommen

    Hallo.

    Ich habe für ein Projekt eine Userform mit Kalender entworfen. Die einzelnen Elemente (Tag, Monat, Jahr) werden über jeweils eine listbox abgefragt.
    Nun funktioniert das alles eigentlich genauso wie es soll, nur dass beim Tag die Value leer bleibt obwohl sie festgelegt wird. Identisch zu den zwei anderen Boxen. Kann mir jemand erklären wieso, oder was ich vergesssen habe?


    Visual Basic-Quellcode

    1. For a = 1 To 31
    2. With uf_AZE.uf_AZE_lb_Tag
    3. .AddItem a
    4. End With
    5. Next a
    6. With uf_AZE.uf_AZE_lb_Tag
    7. .Value = DatePart("d", Date)
    8. .TopIndex = DatePart("d", Date) - 2
    9. End With
    10. For a = 0 To 11
    11. With uf_AZE.uf_AZE_lb_Monat
    12. .AddItem ArMonat(a)
    13. End With
    14. Next a
    15. With uf_AZE.uf_AZE_lb_Monat
    16. .Value = ArMonat(DatePart("m", Date) - 1)
    17. .TopIndex = DatePart("m", Date) - 2
    18. End With
    19. For a = 0 To 10
    20. With uf_AZE.uf_AZE_lb_Jahr
    21. .AddItem 2010 + a
    22. End With
    23. Next a
    24. With uf_AZE.uf_AZE_lb_Jahr
    25. .Value = DatePart("yyyy", Date)
    26. .TopIndex = DatePart("yyyy", Date) - 2011
    27. End With


    Es fehlt immer mal wieder einer der Werte, es sind nie alle 3 Werte vorhanden?
    Danke schon mal für die Hilfe.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FloFuchs“ ()

    Hallo
    Danke für die Hilfe. Aber das bewirkt nicht das was ich will. der .topindex is schon richtig und funktioniert auch so (die listbox is immer 3-zeilig und das aktuelle Datum in der mitte).
    Das Problem ist, dass die Listbox während der Laufzeit immer mal keinen .value hat obwohl dieser ja hier eindeutig zugewiesen wird.
    Ich nehme an Du möchstest das aktuelle Datum automatisch markieren, wenn ja dann nimm die Eigenschaft Selected().

    Zwischen das Klammernpaar schreibst Du den Parameter der markiert werden soll. Also wenn immer in der 2. Zeile das aktuelle Datum steht.

    Visual Basic-Quellcode

    1. Listbox1.Selected(1) = True '<- Markiert den Zweiten Eintrag des Indexes


    Selcted ist Boolesch und geht nach dem ListIndex der Listbox.

    Ich sehe gerade, dass Du die Monate über einen Array einfüllst. Das kannst Du auch einfacher haben:

    Visual Basic-Quellcode

    1. For a = 0 To 11
    2. ListBox1.AddItem Format(DateSerial(2000, a, 1), "mmmm")
    3. Next a


    Hab ich aus dem Kopf geschrieben, sollte aber funktionieren. Wenn nicht dann mach aus:

    Visual Basic-Quellcode

    1. For a = 0 To 11


    einfach.

    Visual Basic-Quellcode

    1. For a = 1 To 12

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Skorpion79“ ()

    Hallo.
    Vielen dank für die Hilfe.
    An und für sich funktioniert die sache prima, das Problem bleibt allerdings bestehen, er markiert die richtigen Daten, aber der .Value ist immer mal wieder bei einem der 3 doch nicht vorhanden wenn ich ihn abrufe. :cursing: ?(
    Habe die Vorselektion einfach raus genommen, die Werte sind ja immer direkt anklickbar. Ärgerlich und unverständlich trotzdem.
    :?:
    Danke für den Tip mit den Monaten, werde allerdings bei meiner Lösung bleiben, da ich dieses Array im kompletten Projekt immer wieder brauche, und die adressierung, sei es als passwort, string, etc.. so einfach leichter geht. Da ich immer genau den 3-stelligen monat brauche.
    Lass Dir mal die Value = DatePart sachen in einer MsgBox ausgeben. Vielleicht bringt Dich das der Lösung etwas näher.

    aber der .Value ist immer mal wieder bei einem der 3 doch nicht vorhanden wenn ich ihn abrufe.
    Nimm Für solche Sachen die Eigenschaft ListIndex nicht Value. Dann bist Du auf der richtigen Seite.
    Das mit der MsgBox mach ich ja, habe nachdem 1. Fehler damit angefangen. Die MsgBox ist dann einfach leer, das ist mir ja so unbegreiflich, wenn ich doch in der Codezeile kurz darüber ganz eindeutig dem Value einen Wert zuordne, ob nun direkt oder über selected.
    Werde die ganze Sache aber nochmal mit dem ListIndex testen, danke. :thumbup:
    Wobei mich die Sache mit dem Value trotzdem weiter wurmt. ;)