Category Archives: Userforms

Von der Veranlagung her bin ich schlank. Ich lebe es aber nicht aus.

Nicht aufgepasst. Da habe ich einfach nicht aufgepasst!

Ich fülle eine Userform mit Daten. In einem Listenfeld werden Informationen angezeigt.

Beim Klicken auf einen Eintrag wird der erste Teil in einem Textfeld angezeigt, der zweite Teil im Kombinationsfeld, dessen Eigenschaft Style auf 2: fmStyleDropDownList gestellt wurde. Das Ergebnis: der Eintrag wurde nicht gefunden …

… und mit der Fehlermeldung „Eigenschaft Value konnte nicht gesetzt werden. Ungültiger Eigenschaftswert“ quittiert.

Also: immer gut aufpassen, was man wo reinschreibt!

Wer zuletzt lacht, denkt zu langsam!

Wir haben heute lange gesucht!

Heute habe ich mit einem Kunden zusammen in VBA einige Dinge programmiert. Er zeigte mir die Sachen, die nicht funktionieren – beispielsweise die Schaltfläche, die per Programmierung ein Formular füllt, das anschließend angezeigt wird. Es wurde aber nicht angezeigt. Wir haben eine Weile gesucht. Wo hat es sich nur versteckt? Bis wir dahinter kamen, dass der Kunde vor Kurzem mit seinem Laptop mit zwei Bildschirmen gearbeitet hatte. Windows hatte den zweiten Bildschirm noch gespeichert – und dort – für uns nicht sichtbar! – wurde das Formular angezeigt. Böses Versteck!

Also: die StartUpPosition der Userform auf „Fenstermitte“ gestellt – und schon klappte es wieder!

Lächle – du kannst sie nicht alle töten!

Liebe VBA-User: Ist euch das schon aufgefallen:

Ich erstelle in Excel 2016 eine UserForm. Auf der UserForm befindet sich eine Befehlsschaltfläche mit folgenden zwei Codezeilen:

Workbooks.Add
Unload Me

In dem Projekt befindet sich ein Makro:

Sub MaskeStart()
UserForm1.Show
End Sub

Dieses Makro wird an eine Schaltfläche auf dem Zeichenblatt gebunden (dabei ist es egal, ob es sich um ein Formularsteuerelement oder ein Active-X-Steuerelement handelt.

Ich „mache das Steuerelement scharf“, klicke darauf, die Maske startet, eine neue Datei wird geöffnet, in der ich allerdings keine Registerkarte aktivieren kann. Das war doch in älteren Excelversionen nicht der Fall, oder irre ich mich?

 

Die Liste wird kleiner – und das kurz vor Weihnachten!

Amüsant. Heute in der VBA-Schulung. Wir basteln eine dynamische UserForm. Bei der Auswahl „ein Verkäufer“ kann ein Verkäufer ausgewählt werden, bei der Auswahl „alle Verkäufer“ wird das Listenfeld inaktiv.

Der Code:

Private Sub optAlleVerkäufer_Click()
Me.lstVerkäufer.BackColor = &H8000000F
Me.lstVerkäufer.Enabled = False
Me.lstVerkäufer.BorderStyle = fmBorderStyleSingle
End Sub

Private Sub optEinVerkäufer_Click()
Me.lstVerkäufer.BackColor = &H8000000E
Me.lstVerkäufer.Enabled = True
Me.lstVerkäufer.BorderStyle = fmBorderStyleNone
End Sub

So sieht es nach der Initialisierung aus:

20161312rand01

Neun Mal wechseln zwischen alle und ein Verkäufer:

20161312rand02

Nach 17 Mal wechseln:

20161312rand03

Nach 22 Mal:

20161312rand04

Amüsant ?!? Das Listenfeld wird immer kleiner. Man muss gar nicht das Listenfeld inaktiv (Enabled = False) setzen. Es genügt die Eigenschaft BorderStyle zu ändern. Ein paar Mal. Nach zehn bis 20 Klicks schrumpft das Listenfeld bedenklich:

Private Sub optAlleVerkäufer_Click()
Me.lstVerkäufer.BorderStyle = fmBorderStyleSingle
End Sub

Private Sub optEinVerkäufer_Click()
Me.lstVerkäufer.BorderStyle = fmBorderStyleNone
End Sub

Eine neue Liebe ist wie ein neues Leben

Ich liebe VBA. Vielleicht weil ich diese Sprache so gut kann und deshalb schnell programmieren kann.

Ich hasse VBA. Manchmal. Vor allem, wenn ich nicht verstehe warum Dinge passieren:

Ein Listenfeld wird mit Werten gefüllt. Per Programmierung selektiere ich einen der Einträge. Dabei ist es gleichgültig, ob ich die Eigenschaft Value verwende oder von der Sammlung Selected den Wert k auf True setze. In der nächsten Zeile zeigt die Überprüfung, dass der Value der Listbox = „“.

 

Value = "" ???

20160526Liste02

 

Dann hasse ich VBA sehr! Vor allem: bei den übrigen Listenfeldern funktioniert es – lediglich bei einem nicht.

Trotzdem: in der Liste ist er ausgewählt. Verstehe ich das? Nein!

Trotzdem: in der Liste ist er ausgewählt. Verstehe ich das? Nein!

Du sollst dir kein Bildnis machen

Hallo zusammen, liebe VBA-Gemeinde,

Ist das schon einmal jemandem aufgefallen? Auf einer UserForm wird dynamisch ein Bild angezeigt:

Me.imgBild.Picture = LoadPicture(strPfad & strBilder(i))

Damit kann man eine kleine Bilderschau erzeugen.

Bild20160210

Jedoch: Klickt man auf das Bild, funktioniert der LoadPicture-Befehl nicht mehr … Okay, okay … DAMIT kann ich leben!

Listenfelder – nicht konsequent

Wenn Sie in VBA programmiert haben und wenn Sie dort Listenfelder und Kombinationsfelder erstellt habe, haben Sie sicherlich schon entdeckt, dass beide über die Sammlung Column und Row verfügen, die Listenfelder auch über die Sammlung Selected. Das erstaunt, weil Sammlungen eigentlich immer ein Plural-s besitzen: Rows, Worksheets, Workbooks, Cells, Charts, …

Ebenso erstaunt, dass die Zählung der Elemente bei 0 beginnt und nicht bei 1 wie bei allen anderen Sammlungen. Auch das Hinzufügen eines neuen Elementes heißt AddItem und nicht Add.

Ich vermute, dass diese beiden Steuerlemente von einem Drittanbieter hinzugekauft wurden, der etwas andere Konventionen verwendet hat.

Ein Kombinatonsfeld

Ein Kombinatonsfeld