VBA - Excel - Dropdownbox

wal

Erfahrenes Mitglied
Hallo.

Noch ein Problem steht wie die Steiger-Nordwand vor mir...

Bisher muss man, wenn man mein Macro startet, den Monat und das Jahr in eine Input-Box schreiben. Diese speichere ich dann weg und setze daraus dann den Namen der Sheets zusammen.

Nun denke ich ist es schicker am Anfang statt der Eingabe einen Dialog als Dropdown-Box erscheinen zu lassen, das der User dann den Monat und das Jahr aussuchen kann.

Wie müsste dies dann aussehen, würde die funktionieren?

Kann mir da jemand eine kurze Starthilfe geben ...

Ich würde dabei gerne die Monate und Jahre im Macro hinterlegen und zur Auswahl zur Verfügung stellen und nicht in einer extra Tabelle oder aus einem extra Sheet.

Vielen Dank für eure Hilfen und Bemühungen im voraus.
 
UserForm hinzufügen, dort ein ComboBox drauf.
Die Eigenschaft Style der Combobox auf "DropDownList" stellen

Im Form-Activate-Ereignis diesen Code:

Visual Basic:
For i=1 to 12

ComboBox1.AddItem Format("01." & i & ".2008", "mmmm")

Next

Den Code für das Jahr kannst du daraus ableiten.
 
Hallo Zvoni,

danke für deinen Tipp.

ich ahbe jetzt eine Userform erstellt und versuche die Daten per Schleife in die DropDownliste einzutragen. Leider funktioniert dies wohl noch nicht.

Ich liste hier mal den Code auf - für ein geübtes Auge bestimmt schnell sichtbar. Habe wohl irgendwo was vergessen:

Code:
Private Sub cmbJahr_Change()
    With cmbJahr
        .AddItem "2008"
        .AddItem "2009"
        .AddItem "2010"
        .AddItem "2011"
        End With
End Sub

Private Sub cmbMonat_Change()

    With cmbMonat
        .AddItem "Januar"
        .AddItem "Februar"
        .AddItem "März"
        .AddItem "April"
        .AddItem "Mai"
        .AddItem "Juni"
        .AddItem "Juli"
        .AddItem "August"
        .AddItem "September"
        .AddItem "Oktober"
        .AddItem "November"
        .AddItem "Dezember"
    End With
End Sub

Und noch eine weitere Frage - kann ich den globale Variablen erstellen damit ich die Ergebnisse dann auch ins Macro übertragen kann. Also aus der Private Sub raus in das Macro rein, so das ich in beiden die selbe Variable ansprechen kann.

Und noch was ... bitte nicht verzweifeln bzgl. meiner Fragen, hae zwar ein MS Press Buch neben mir liegen, aber erst vorgestern Abend angefangen mich mit VBA zu beschäftigen.

Die anderen Sachen habe ich gut hinbekommen aber dieses mit den UserFormen ... ist nicht ganz so einfach - momentan noch ... ;)

Vielen DanK für Infos und Hilfen!
 
Dein Code gehört nicht in die "Change"-Ereignisse, sondern ins Activate-Ereignis der UserForm.

Visual Basic:
Private Sub UserForm_Activate()

    With cmbMonat
        .AddItem "Januar"
        .AddItem "Februar"
        .AddItem "März"
        .AddItem "April"
        .AddItem "Mai"
        .AddItem "Juni"
        .AddItem "Juli"
        .AddItem "August"
        .AddItem "September"
        .AddItem "Oktober"
        .AddItem "November"
        .AddItem "Dezember"
    End With

    With cmbJahr
        .AddItem "2008"
        .AddItem "2009"
        .AddItem "2010"
        .AddItem "2011"
        End With

End Sub
 
Hi Zvoni,

hat super geklappt - danke dir! ;)

Eine oder zwei Fragen habe ich aber noch.

1. Gibt es einen Standard den man bei einem "Abbrechen"-Button eintragen sollte. So das weder die UserForm noch das Macro abgearbeitet wird?

2. Wenn ich den OK-Button geklickt habe, mit welchem Befehl wird dann die SUerform beendet?

Vielen Dank für die Infos im voraus.
 
Zuletzt bearbeitet:
Also den Abbruch-Button habe ich nun henbekommen ... einfach ein "End" in die Funktion setzen ... nur noch ein Schließen vom Userform sobald der OK Button gedrückt wurde und die Variablen vorher übergeben wurden.

Vielleicht weiß noch jemand Rat! ;)
 
Zurück