VBA-Beispiele > Excel > Makros: Userform

Hinweis:
Wenn Sie mit Ihren Anwendungen ohne Outlook, SendMail & Co. E-Mails versenden möchten, kann ich Ihnen helfen. Nehmen Sie bitte einfach Kontakt zu mir auf.

Tipp 568: Während der Laufzeit einer Userform für jeden Tag eines Monats eine Checkbox hinzufügen

Wie kann ich während der Laufzeit einer Userform für jeden Tag eines Monats eine Checkbox hinzufügen?


Die Eigenschaften der neu erstellten Steuerelemente kann man z. B. wie folgt aufrufen:

[Einzellink]

Tipp 74: Excel 2000: Kalender-Steuerelement ist verschwunden

Ich habe in der Userform aus den weiteren Steuerelementen das Kalenderelement 9.0 eingebaut. War auch prima. Jetzt habe ich Excel neu gestartet und plötzlich steht da: Klasse nicht registriert. Das Kalenderobjekt ist auch ganz verschwunden. In der Liste ist es allerdings weiter angehakt. Hat da jemand einen Rat?


Zuerst sollte man sich vergewissern, daß C:\Programme\Microsoft Office\Office\Mscal.ocx vorhanden ist (Pfad kann etwas abweichen). Wenn ja, kann man die Datei mit dem folgenden Makro registrieren lassen:

Das Makro muß dabei ganz oben in einem allgemeinen Modul stehen. Sollte das nicht funktionieren, kopiert man die mscal.ocx in das Windows/System-Verzeichnis und führt das Makro erneut aus. In jedem Fall muß zumindest Excel nach dem Registrieren neu gestartet werden, wenn nicht gar Windows.

Wichtig: Man sollte damit aber vorsichtig sein, wenn man VBA-Anwendungen für Andere erstellt. Denn dort ist die ocx erstmal nicht vorhanden und muß demzufolge erstellt werden. D. h., wenn man den Kalender verwendet, muß er auf anderen Computern nicht unbedingt laufen.


Hinweis:

Falls Sie unabhängig von den vorgegebenen Steuerelementen sein möchten, können Sie sich auch das Angebot Kalender für VBA ansehen. Dort gibt es einen Kalender, der in VBA erstellt wurde und der sehr leicht in eigene Projekte eingebaut werden kann.

[Einzellink]

Tipp 86: Anleitung: Übergabe von einer Userform-Textbox in eine Zelle

Wie kann man Werte von einer Userform-Textbox an eine Zelle übergeben?


Hier ist eine kleine Anleitung zum Probieren:
Nimm Dir am besten eine neue Mappe und vollziehe die folgenden Schritte nach.

  1. Wechsle mit Alt + F11 in den VBA-Editor und klicke dort im Projektexplorer (normalerweise oben links) in Deine Mappe.
  2. Wähle jetzt Einfügen - Userform. Zeichne in diese Userform oben eine Textbox (Textfeld). Die Eingaben in dieses Textfeld sollen dann sofort in die Zelle A2 der aktiven Tabelle übernommen werden.
  3. Klicke doppelt auf die Textbox. Daraufhin erscheint das Klassenmodul der Userform, in das die Prozeduren eingetragen werden, die bei der Arbeit mit den Userform-Elementen ausgeführt werden sollen.
  4. Jetzt siehst Du auch schon zwei Zeilen, die Du so vervollständigst: Diese Prozedur ist dafür zuständig, daß die Eingaben in die Textbox sofort in A2 der aktiven Tabelle übernommen werden sollen.
  5. Wechsle nun über das Menü Fenster oder mit der Tastenkombination Strg + F6 wieder zur Userform. Zeichne dort eine weitere Textbox und eine Schaltfläche unter dieser Textbox.
  6. Doppelklicke jetzt auf die Schaltfläche und Du landest wieder im Klassenmodul.
  7. Es sind zwei neue Zeilen hinzugekommen, die Du so ergänzt: Der zweiten Textbox ist diesmal keine Prozedur zugeordnet, also passiert beim Eintragen erstmal nichts. Der Inhalt dieser Textbox wird erst beim Klick auf die Schaltfläche in A3 übernommen.
  8. Eigentlich ist die Userform jetzt schon zur Arbeit bereit. Was wäre aber ein Dialogfeld ohne Schließen-Schaltfläche? Also basteln wir schnell noch eine. Deshalb - wieder zurück zur Userform (Fenster oder Strg + F6).
  9. Male nun unten in die Userform eine Schaltfläche und doppelklicke darauf.
  10. Die Prozedur müßte diesmal so vervollständigt werden: Sie ist dafür zuständig, daß die Userform geschlossen wird.
  11. Die Beschriftungen der Schaltflächen kannst Du noch ändern, indem Du wieder zur Userform zurückkehrst und zweimal auf die Schaltfläche klickst (kein Doppelklick!).
  12. So, jetzt müssen wir noch für den Aufruf sorgen, denn ein Anwender soll ja nicht jedesmal in den Editor wechseln, um die Userform aufzurufen. Die Prozedur dafür schreibt man normalerweise in ein allgemeines Modul - also wähle Einfügen - Modul.
  13. In das leere Modul schreibst Du:
  14. Wechsle nun wieder zu Excel und zeichne aus der Formular-Symbolleiste eine Schaltfläche auf das Blatt (moderner wäre eine Schaltfläche aus der Steuerelemente-Toolbox, aber wir wollen es ja am Anfang nicht so schwer machen). Jetzt öffnet sich ein Dialogfeld, in dem Du der Schaltfläche ein Makro zuweisen kannst - also Doppelklick auf Aufruf - denn so hatten wir das Makro ja benannt.
  15. Das wars. Jetzt kannst Du auf die Schaltfläche klicken, die Userform erscheint und Du wirst sehen, daß Eintragungen in die erste Textbox sofort übernommen werden, Eintragungen in die zweite Textbox erst beim Klick auf die Schaltfläche.

Zusammenfassung:

In Deiner Mappe hast Du jetzt

  • ein Modul, auf dem die Prozedur zum Aufruf der Userform enthalten ist,
  • eine Userform mit zwei Textboxen und zwei Schaltflächen (Commandbuttons),
  • das Klassenmodul der Userform, auf dem die Routinen enthalten sind, die bei der Arbeit mit den Userform-Elementen aufgerufen werden.

Und nochmal der Tip: Im Editor kann man ganz einfach mit Strg + F6 zwischen den einzelnen Komponenten wechseln. Mit Strg + Tab ist es zwar auch möglich, bereitet aber Probleme, wenn Multipage-Elemente enthalten sind.

Viele Beispiele zur Arbeit mit Userformen sind in den Beispieldateien enthalten.

[Einzellink]

Tipp 85: Schließen-Button entschärfen

Ist es möglich, bei einer UserForm den oberen rechten X - Button zu deaktivieren?


Dazu wird der X-Button zwar nicht ausgeblendet, aber das Dialogfeld läßt sich darüber nicht schließen. Übrigens ist damit auch Alt + F4 entschärft. Das Makro bei den Userform-Ereignissen einfügen (Doppelklick auf Userform im Editor).

[Einzellink]

Tipp 75: UserForm an Excel-Fenster anpassen

Wie kann ich die UserForm so an das Excel-Fenster anpassen, daß dieses überlagert wird?


[Einzellink]

Tipp 76: Zelldaten in Userform und zurück

Wie kann ich die Daten aus Zellen in eine Userform-Listbox einlesen lassen, die zugehörigen Angaben beim Klick auf die Listbox in Textboxen anzeigen lassen und Änderungen in der Userform in die Zellen schreiben lassen?


In der userform.zip befinden sich vier Dateien, die diese Schritte enthalten. Erläuterungen sind als Kommentare bei den Makros zu finden.

[Einzellink]

Tipp 77: Daten aus geschlossener Mappe in Userform einlesen

Wie kann ich Daten aus einer Arbeitsmappe in eine UserForm-ComboBox einlesen, ohne die Mappe zu öffnen?


Hinweise:
Im Beispiel wird in A1 durch das Makro eine Formel eingefügt. Ist A1 nicht leer, kann jede beliebige Zelle verwendet werden. Die Quelldaten befinden sich im Bereich C1 bis C20.

[Einzellink]

Tipp 78: Datum in einer Textbox mit denen einer Spalte vergleichen

Wie kann man das Datum aus dem Textfeld einer Userform mit einem Datum in der Spalte A eines Tabellenblattes vergleichen? Stimmt das Datum einer Zeile in Spalte A mit dem Textfeld in der Userform überein, sollen in dieser Zeile in den nächsten Spalten Werte aus einem zweitem Textfeld der Userform eingetragen werden.


[Einzellink]

Tipp 79: Datum per Drehfeld auswählen

Wie kann man ein Datum per Drehfeld in einer Userform auswählen?


Folgendes in die Ereignisprozeduren der Forms eintragen, man findet sie, wenn man z. B. auf die Textbox doppelklickt. Die Userform enthält ein Textfeld, in der das Datum angezeigt wird, und ein Drehfeld.

[Einzellink]

Tipp 80: Datum in einer Combobox auswählen, ohne daß dafür extra eine Tabelle hinterlegt ist

Wie kann man ein Datum aus einer Combobox wählen, ohne dass man dafür erst eine Datumstabelle anlegen muss?


Folgendes in die Initialize-Ereignisprozedur der Userform eintragen, man findet sie, wenn man auf die Userform doppelklickt.

[Einzellink]

Tipp 81: UserForm drei Sekunden zeigen

Ist es möglich, sowas wie eine MsgBox zu erzeugen, die für eine bestimmte Zeit sichtbar ist und dann ohne Klicken wieder verschwindet?


Nein. Aber dafür könnte eine UserForm genutzt werden. Userform erstellen, dann Doppelklick darauf (im Editor) und dann die folgende Ereignisprozedur eingeben:

[Einzellink]

Tipp 83: Titelleiste der UserForm ändern

Wie ändert man die Aufschrift der UserForm-Titelleiste?


Im VBA-Editor die UserForm anklicken, dann im Eigenschaftenfenster hinter Caption klicken und den Text eingeben, der in der Titelleiste erscheinen soll. Oder

[Einzellink]

Tipp 84: Trotz gezeigter Userform in Zelle arbeiten

Kann man trotz gezeigter Userform in Excel 97 in einer Zelle arbeiten?


Offiziell geht es nicht. Mit dem folgenden Code ist es aber trotzdem machbar, auch wenn es nicht gerade elegant ist.

Das erste Dialogfeld ermöglicht die Eingabe in eine Zelle, das zweite das Bedienen der Symbolleisten.

In neueren Excel-Versionen kann durch die Eigenschaft ShowModal = True dieser Effekt erreicht werden.

[Einzellink]

Tipp 87: Checkboxes in Schleife

Wie kann man alle CheckBoxes einer UserForm in eine For/Next-Schleife einbinden?


[Einzellink]

Tipp 88: Combobox mit Monaten füllen

Wie kann man eine ComboBox in einer UserForm mit den Monatsnamen eines Jahres füllen?


[Einzellink]

Tipp 89: ListBox-Einträge auswechseln

Wie kann man über die AddItem-Methode eingefügte Einträge in einer ListBox gegen neue Begriffe austauschen?


[Einzellink]

Tipp 90: In einer Schleife auf Elemente einer UserForm zugreifen

Wie kann man auf einzelne, vorher durch VBA-Code erzeugte Label zugreifen und deren Caption neu festlegen?


[Einzellink]

 

Das Chemtrailhandbuch von Jörg Lorenz mit einem Vorwort von Jörg Kachelmann

Susanne Hammann-Sayilir - Modedesign  Modeillustration