VBA Monat auswählen

Registriert
März 2023
Beiträge
21
Hallo Forum.

In einer Excel-Tabelle mit VBA benötige ich gelegentlich die Information, in welchem Monat eine Aktion starten soll. Bisher habe ich dazu "InputBox" benutzt. Wie könnte ich - möglichst ohne Userform - den Anwender aus eine Liste mit den Monatsnamen den passenden Monat auswählen lassen? Der Tag und das Jahr sind für die Auswahl unerheblich.

Wer hat eine Idee - möglichst mit Code-Vorschlag?
 
Weil man bei der Eingabe viele Fehler machen kann. Und die muss ich alle abfangen. Beispiel: 10,5
 
Liste geht wohl nur mit Userform. Wenn das nicht gewünscht ist, würde ich um die Inputbox eine Schleife bauen und prüfen, ob der Wert eine ganze Zahle zwischen 1-12 ist.
 
Mach eine Combobox und lade nur möglich Monate
 
Quasi.
Von mir aus auch ein DropDown im Ribbon mit Button daneben der dann deine Aktion startet.
Es geht jetzt halt nicht sauber aus der Aufgabenstellung hervor, wie da der Nutzer für was in welcher Abfolge geführt werden soll.
 
Combobox? DorpDown? Ribbon? Das ist für mich als Hobby-Excel-Nutzer ohne Beispiel zu hoch?

Welche Abfolge? Was könnte wohl eine InputBox ersetzen?
Anwender sind meine Familie!
 
morcego schrieb:
ein DropDown im Ribbon mit Button daneben
Wie geht das denn? Nie gehört bisher.

GeheimnisExcel schrieb:
Combobox? DorpDown?
Google erklärt das besser als ich 😇.

Mir würde je nach Komfort die InputBox reichen, Fehler abzufangen ist einfach; VAL, ist <> 0, ist 1 bis 12, was die Eingabe einfach hielte.
Oder eben eine UserForm wo 12 Monate noch mit OptionButtons taugt, Monatstage eher per SpinUp/SpinDown (incl. Direkteingabe). Nur ausgerechnet ComboBoxen oder einfache DropDowns - die wären absolut nichts für mich weil mir die Handhabung nicht zusagt (mindestens der Aufklapp-Klick zu viel).

CN8
 
@GeheimnisExcel
Da du überhaupt keine Vorgabe machst, wie du dir das ganze vorstellst, mach doch einfach eine Zelle als "Liste" (ein DropDown-Menü):
  1. Du erstellst z.B. ein 2. Blatt (Tabelle2), trägst von A1 bis A12 die Monate mit vollem Namen ein.
  2. Im 1. Blatt (Tabelle1) wählst du eine Zelle aus, welche das DropDown-Menü haben soll.
  3. Ribbon "Daten" -> Symbol "Datenüberprüfung"
  4. Die "Datenüberprüfung" wie folgt einstellen:
    1682707072982.png
  5. Im Reiter "Eingabemeldung" das Häkchen entfernen.
  6. Im Reiter "Fehlermeldung" eine schöne Fehlermeldung schreiben.
  7. Das Fenster mit OK schließen. Und schon kann der Anwender in der gewünschten Zelle nur die Monate von Tabelle 2 -> Zellen A1 bis A12 auswählen.

Das war's. Wenn das nicht für dich ausreichend ist, dann musst du schon genau beschreiben, was du genau willst, was der Anwender sieht und wie der Arbeitsablauf des Anwenders aussieht.

Wenn du unbedingt mit InputBox arbeiten möchtest, könnte man auch mit der Variante von @Wizard of Wor arbeiten. Das ganze in einer Do-Loop-Schleife packen und mit "Select Case" die Eingaben 1-12 prüfen, eine/mehrere Variablen füllen und mit "Exit Do" aus der Do-Loop-Schleife ausbrechen. Das wäre zumindest eine spontane Lösung, die mir als VBA-Anfänger einfallen würde.
 
cumulonimbus8 schrieb:
Wie geht das denn? Nie gehört bisher.
Naja, für dich sind Ribbons und neues Zeug sowieso immer Teufelszeug. Nicht verwunderlich. schulterzuck
https://imaginado.de/downloads/
Da das alte VBA runterladen, in der dotm finde sich ein Ribbon Modul und dort wiederum diverse Sachen zu Abbreviation (Abkürzungsfunktion des AddIns). Die füllen das zugehörige DropDown/Gallery Item im Ribbon.
https://imaginado.de/2020/05/ribbon-fuer-vba-oberflaeche-basteln/
Und da kannste dir angucken wie du in´s Ribbon kommst.

GeheimnisExcel schrieb:
Ich habe mich entschlossen, diese Vorhaben einzustellen.

Danke!
schade, war doch ne spannende Sache die eigenen Fähigkeiten zu erweitern. Wobei ich persönlich VBA nicht mehr so toll finde. Wenn man da mehr möchte ist C# VSTO eigentlich netter, auch wenn es anspruchsvoller ist.
 
cumulonimbus8 schrieb:
Nur ausgerechnet ComboBoxen oder einfache DropDowns - die wären absolut nichts für mich weil mir die Handhabung nicht zusagt (mindestens der Aufklapp-Klick zu viel).
Dann könntest Du ja eine Listbox nehmen, da wird nicht geklappt. ;)
Die Monatsnamen (lang) bekommt man in einem Rutsch hinein:
Code:
ListBox1.List = Application.GetCustomListContents(8)
Wenn man die Monatszahl daraus braucht, nimmt man den .Listindex -1
-1, weil die Auflistung nullbasiert ist.

Und gerade für "Aufklapp-Klick-Muffel" gilt:
In einem Userform sollte man (als ernsthafter Anwender) niemals klicken.
Schließlich gibt es die Tabulatortaste (Stichwort Aktivier-Reihenfolge).
Und Aufklappen geht entweder mittels Alt + ↓
(gilt sowohl für ein Dropdown im Userform als auch für die Datengültigkeit, Liste in einem Worksheet)
oder mittels .MatchEntry = 1 (dann reicht N für November).
 
Zuletzt bearbeitet:
Zurück
Oben