Userform Bild in Kopfzeile einfügen (mit der Windows API) | Excel VBA

preview_player
Показать описание
Wir möchten ein Bild in die Titelleiste unserer UserForm hinzufügen. Das verbessert nicht nur das Design unserer UserForm, sondern erlaubt es uns auch mit der Windows API zu arbeiten. Das ist die Schnittstelle zu Windows und damit können wir aus VBA heraus Windows Elemente ansprechen.

Je mehr Kontrolle wir über die Windows API haben, desto besser können wir unsere UserFormen designen und desto Benutzerfreundlicher können wir diese auch gestalten.

Dieses Video ist der optimale Ausgangspunkt, um zum ersten mal mit der Windows API zu arbeiten.

________

LINK zum Video

________

Timestamps
0:00 Ziel des Videos
0:50 UserForm erstellen
1:23 UserForm Initialize
2:04 Bild in UserForm anzeigen
7:07 Windows API
9:28 Windows API Zugriff
10:33 FindWindowA
11:36 Bild in UserForm Titelleiste laden
13:56 Bild ausblenden
14:18 Pfad der aktuellen Datei auslesen
15:45 Unterprogramm aufrufen
Рекомендации по теме
Комментарии
Автор

Auf die Gefahr hin, daß ich mich wiederhole: Du erklärst das alles so genial und verständlich; dafür gebührt Dir großer Respekt! Deine Videos sind mir wunderbare "online-Kurse". Vieles davon kann ich wirklich gut gebrauchen.

tobiasdegner
Автор

Natürlich kann man sagen: braucht man nicht, zu viel Aufwand. Aber selbst dann ist dieses Video sehr nützlich, da es die Interaktion von VBA-Code mit der Windows-API sehr eingängig und klar darstellt. 100%iges Daumen-hoch... :-)

peterxxl
Автор

Das Mikrofon war anscheinend aus😅 Trotzdem sehr hilfreich😊 Danke für den tollen Beitrag!👍 #beste

illphill
Автор

Super Tipp 👍, vielen Dank dafür. Endlich hast du auch einmal einem Modul eine Bezeichnung verpasst 😉, dass finde ich nämlich sehr wichtig. Ich mache das beinahe immer, so kann ich bei meinen Projekten auch viel schneller Änderungen oder Erweiterungen vornehmen.

MaRi-jfcl
Автор

Danke, lieber Kai! Wieder was gelernt. 🙏
Noch 'ne FRAGE: In meiner Userform wird das Logo in der Titelleiste als Standard-Icon angezeigt. Das Image in der Userform zeigt jedoch das korrekt geladenen Bild [Me.Controls.Add( ... True)]. Trotz ByVal in der Übergabe des Image-Handles funktioniert das Update nicht: Call SendMessageA(hdlUfrm, &H80, 0&, ByVal hdlImg). Irgend ne Idee, was schief läuft? 🥴

ttekogni
Автор

Also ich verfolge gerade jedes Deiner Videos und in der Regel klappt auch alles, allerdings hier bekomme ich kein Bild in die Titelleiste. Kann es sein, dass sich was am Code in den letzten Monaten geändert hat? Ich habe wirklich alle möglichen Größen und icon verwendet. Ich bekomme es nicht hin. Nur ein Standartsymbol wird in der Titelleiste angezeigt. Danke für Dein Video dennoch. Ich hätte gerne mehr solcher "speziellen" Sachen.

Ich würde gerne Deinen Kurs buchen. Erhält man auch Unterstützung während des Kurses bei dem Projekt und eventuell Hilfe bei der Verwirklichung seines eigenen Projektes? Danke für ein kurzes Feedback. LG

cologneorange
Автор

Eine Frage habe ich dazu... Muss das Bild spezielle Anforderungen erfüllen? Bei mir funktioniert es mit einer 128x128 Pxl Ico Datei super. Aber mit einem Gif oder einen Jpg in der gleichen Größe funktioniert es nicht. Auch nicht wenn ich daraus via Paint Ico Dateien mache.

SorrowClown
Автор

Hallo Kai, grundsätzlich erst einmal vielen Dank für deine lehrreichen Videos :) kann es sein, dass sich die Userform von eckig auf rund mit der Umstellung von Windows 10 auf 11 geändert hat, bin schon länger am suchen warum bei dir bei gleichem Code die Form anders dargestellt wird.

LG Sebastian

SebastianKörner-ep
Автор

Ich kann auch kein Jpg hinzufügen, woran kann das liegen?

Ichbinzualt
Автор

hallo. ich komme gerade nicht weiter. ich bastel mir gerade mit Excel etwas für csgo. Das Feld ist auf 0 gelb - dann habe ich kleiner als 0 rot und größer als 0 grün.
Nun möchte ich das er mir gewinn oder Verlust m selben Feld anzeigt bzw. ausrechnet. Sprich grün 20 € plus oder rot - 20 €. Danke 🤘

gkshasser
Автор

Hallo Kai ich habe den ganzen Spaß gerade mal nach gebaut sowie geht alles super bis zu dem Punkt wo man ByVal einfügt ab da bekomme ich immer einen Fehler. (Falsche DLL-Aufrufkonvention Laufzeitfehler 49)
Vielleicht kannst du mir weiterhelfen wäre echt super

cheffy.official