Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UF mit eigenem Aussehen bzw. Skin???

Forumthread: UF mit eigenem Aussehen bzw. Skin???

UF mit eigenem Aussehen bzw. Skin???
28.08.2003 14:39:06
ThomasJ
Hallo Forum,

gibt es eine Möglichkeit eine UF zu erstellen, die ein ganz individuelles aussehen hat, d.h. nicht nur rechteckig, sondern z.B. rund, oval, etc???

Geht das vielleicht mit VB (ohne A)?

Wie geht so etwas?

Gruß
Thomas
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 14:41:38
Hajo
Hallo Thomas

selbstverständlich geht so was in VBA und ich vermute mal dann auch in VB. Hast Du Dir aber da nicht ein wenig viel vorgenommen mit "VBA nein"

Gruß Hajo
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 14:50:18
Nayus
Hallo Hajo,
'ne runde Userform mit VBA?
Mach' mal vor - will ich sehen!
Gruß,
Nayus
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:01:24
ThomasJ
Hallo Hajo und Nayus!

Bin zwar Anfänger, lerne aber schnell und gern.

Wenn es aber zu kompliziert ist - also APi, etc. dann lass ich das natürlich (vorerst) mal. War ja nur ne Frage.

Hatte vor, eine Kennzeichenabfrage zu machen:

UF sieht aus wie ein Kfz-Kennzeichen, der User trägt das Kennz. ein und erfährt, wer das Auto wann gefahren hat (Firmenfahrzeuge). So als Gimmick halt...

Aber irgendwann werd ich das bestimmt auch noch lernen.

Vielen Dank (erstmal)

Gruß
Thomas
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:09:07
Michael Scheffler
Hi,

das kriegst Du auch mit Bordmitteln hin.

Gruß

Micha
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:15:04
ThomasJ
Hi Micha!

Wenn Du damit meinst, dass es auch funzt wenn ich die normale UF nehme, vielleicht ein Kennz. als Hintergrund mit durchsichtigen textboxes, etc. dann sieht es so ähnlich aus wie ein Kennz. (in meinem Fall).

Aber halt nur "so ähnlich". Ich dachte, man könnte solche Sachen auch mit wenig Aufwand bewerkstelligen und so perfekt machen!

Im WindowsMediaPlayer (oder irgend so ein anderer) kann man andere Skins einbinden, und zwar so, dass die gesamte Oberfläche z.B. rund wird.

Gruß
Thomas
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:48:37
Michael Scheffler
Hi,

schnapp Dir eine Digitalkamera, fotografiere ein Kennzeichen - nimm das als Hintegrund und dann kannst Du ja an den Stellen, wo Eingaben abgefragt werden,
Textboxen setzen, die kannst Du auch entsprechend der Schrift im Kennzeichen formatieren.

Und ganz am Ende nimmst Du eines der Tools aus dem Netz, um die obere Leiste der UserForm auszublenden - fertsch!

Gruß

Micha
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:01:35
Michael Scheffler
Hi,

mit API könnte es gehen, aber wozu?

Gruß

Micha
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:05:35
Hajo_Zi
Hallo Nayus

da mußt Du mal warten bis ich an meinem Homecomputer bin. (ca. 17:00 Uhr)

Gruß Hajo
hajo, wir warten alle gespannt oT
28.08.2003 15:14:04
joel
Anzeige
AW: hajo, wir warten alle gespannt oT
28.08.2003 16:49:24
Hajo_Zi
Hallo joel

GraFri hat ja schon dazu geantwortet

https://www.herber.de/forum/messages/301549.html

hier noch eine andere Variante

Option Explicit

Private Declare Function CreateRoundRectRgn Lib "gdi32" _
(ByVal X1 As Long, ByVal Y1 As Long, _
ByVal X2 As Long, ByVal Y2 As Long, _
ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" _
(ByVal hWnd As Long, ByVal hRgn As Long, _
ByVal bRedraw As Boolean) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long


Private Sub CommandButton1_Click()
Me.Hide
End Sub



Private Sub UserForm_Activate()
Dim x As Long, y As Long, n As Long, mWnd As Long
x = Me.Width
y = Me.Height
n = 1000
mWnd = FindWindow(vbNullString, Me.Name)
SetWindowRgn mWnd, CreateRoundRectRgn(0, 0, x, y, n, n), True
End Sub

'Je mehr die Userform einem Quadrat entspricht, desto kreisförmiger.
'Außerdem kann mit dem Faktor in der Variablen "n" die Krümmung beeinflusst werden.
'von Nepumuk
Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 14:49:01
GerdW
Schau mal bei www.allapi.net vorbei.

Gerd
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:03:56
Hajo
Hallo Thomas

selbstverständlich geht so was in VBA und ich vermute mal dann auch in VB. Hast Du Dir aber da nicht ein wenig viel vorgenommen mit "VBA nein"

Gruß Hajo
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:27:47
GraFri
Hallo



COLOR=#008000>' Gefunden unter: https://www.herber.de/forum/archiv/188to192/t190287.htm

Option Explicit
Private Declare Function CreateRoundRectRgn Lib "gdi32" _
(ByVal X1 As LongByVal Y1 As Long, _
ByVal X2 As LongByVal Y2 As Long, _
ByVal X3 As LongByVal Y3 As LongAs Long

Private Declare Function SetWindowRgn Lib "user32" _
(ByVal hWnd As LongByVal hRgn As Long, _
ByVal bRedraw As BooleanAs Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As StringByVal lpWindowName As StringAs Long

'CommandButton auf der Form plazieren, da das 'x' zum schließen
'nicht mehr angezeigt wird.
Private Sub cmdEnde_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
'Größe der Userform
    Me.Width = 350: Me.Height = 350
    
'Position des CommandButton zum Abbrechen
    cmdEnde.Left = (Me.Width - cmdEnde.Width) / 3
    cmdEnde.Top = Me.Height * 0.6
    
End Sub

Private Sub UserForm_Activate()
    Dim As Long, y As Long, n As Long, mWnd As Long
    x = Me.Width
    y = Me.Height
    n = 4000        'bei kleinem Wert nur abgerundete Ecken
    mWnd = FindWindow(vbNullString, Me.Name)
    SetWindowRgn mWnd, CreateRoundRectRgn(0, 0, x, y, n, n), True
End Sub


     Code eingefügt mit Syntaxhighlighter 2.4


mfg, GraFri
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:37:19
ThomasJ
Seht Ihr.... ;-))

Genau so etwas meinte ich (und auch noch mehr).
Ist doch halb so wild, der code, oder?
Zum Verständnis müsste man (ich) nur noch wissen, was die ganzen Xe und Ye und.. bedeuten!
Ansonsten begreift man das doch auch mit wenig VBA-Erfahrung.

Schwieriger wird es dann wahrscheinlich, wenn man eigene Formen machen möchte (z.B. die Umrisse eines Staates, oder Tier, oder was auch immer...).
Ich denke, dann muss man das auch mit API machen.

Aber immerhin haben jetzt einige von uns was dazugelernt! ;-)

Gruß
Thomas
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:48:38
Nayus
Hallo,
klar, mit dem API kann man die wildesten Sachen machen, aber eben nicht mit VBA-Hausmitteln. Das war m. E. die Frage.
Ein Kennzeichen, das wirklich echt aussieht kann meiner Meinung nach nur aus Bildchen
zusammengsetzt werden - die brauchst Du dann erst einmal. Und dann die Ecken des Fensters noch mit API-Mitteln abrunden usw.
Oder fotografiere doch einfach alle Kennzeichen der Firmenautos mit 'ner Digikamera und
fülle eine Imagebox in Abhängigkeit irgendwelcher Zellinhalte. Das sieht dann wirklich echt aus.

Gruß,
Nayus
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 16:12:51
Michael Scheffler
Hi,

das war ja mein Vorschlag, das geht auch mit Bodrdmitteln - nur zum Beschneiden der Leiste braucht man API.

Gruß

Micha
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 15:21:08
K.Rola
Hallo,

dazu brauchst du diese drei API- Funktionen:

Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Gruß K.Rola
Anzeige
AW: UF mit eigenem Aussehen bzw. Skin???
28.08.2003 18:30:53
Hans W. Hofmann
Ich würde mich zu diesem Zweck mal mit dem Assistenten
(Karl Klammer) beschäftigen. Damit lässt sich schon viel machen.

Für Hardcore-Zwecke wäre auch der Office Agent 2.0 brauchbar incl.
Sprachausgabe. Such mal im Netz, es gibt dutzende von Applicationen
dazu. Ein Character ist aber net einfach zu erzeugen...
Gruß HW
Anzeige
Anzeige

Infobox / Tutorial

UserForms in Excel mit abgerundeten Ecken gestalten


Schritt-für-Schritt-Anleitung

Um eine UserForm (UF) in Excel mit abgerundeten Ecken zu gestalten, folgen diese Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle eine neue UserForm:

    • Klicke mit der rechten Maustaste im Projektfenster und wähle Einfügen > UserForm.
  3. Füge den folgenden Code in das Codefenster der UserForm ein:

    Private Declare Function CreateRoundRectRgn Lib "gdi32" _
       (ByVal X1 As Long, ByVal Y1 As Long, _
        ByVal X2 As Long, ByVal Y2 As Long, _
        ByVal X3 As Long, ByVal Y3 As Long) As Long
    
    Private Declare Function SetWindowRgn Lib "user32" _
       (ByVal hWnd As Long, ByVal hRgn As Long, _
        ByVal bRedraw As Boolean) As Long
    
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
       (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Private Sub UserForm_Activate()
       Dim x As Long, y As Long, n As Long, mWnd As Long
       x = Me.Width
       y = Me.Height
       n = 1000 ' Krümmungsfaktor
       mWnd = FindWindow(vbNullString, Me.Name)
       SetWindowRgn mWnd, CreateRoundRectRgn(0, 0, x, y, n, n), True
    End Sub
  4. Teste die UserForm:

    • Führe die UserForm aus, um die abgerundeten Ecken zu sehen.

Häufige Fehler und Lösungen

  • Fehler: UserForm zeigt keine abgerundeten Ecken

    • Lösung: Stelle sicher, dass der Code im UserForm_Activate korrekt eingegeben wurde. Überprüfe auch, ob die UserForm die korrekten Maße hat.
  • Fehler: Anwendung stürzt ab

    • Lösung: Überprüfe, ob alle API-Deklarationen korrekt sind und dass sie in einem Modul oder der UserForm selbst platziert sind.

Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du auch die Standard-UserForm von Excel nutzen und folgende Tricks anwenden:

  • Hintergrundbilder verwenden: Setze ein Bild eines Kfz-Kennzeichens als Hintergrund und platziere transparente Textboxen darüber, um den Effekt von abgerundeten Ecken zu simulieren.

  • Steuerelemente anpassen: Nutze Standardsteuerelemente und passe deren Eigenschaften an, um ein individuelles Design zu erreichen.


Praktische Beispiele

Ein Beispiel für die Verwendung einer abgerundeten UserForm:

Private Sub CommandButton1_Click()
    Me.Hide ' Schließt die UserForm
End Sub

Diese einfache Funktion kann verwendet werden, um die UserForm zu schließen, wenn der Benutzer auf den Button klickt.


Tipps für Profis

  • Experimentiere mit verschiedenen Krümmungsfaktoren: Ändere den Wert von n in der UserForm_Activate()-Methode, um die Rundheit der Ecken zu beeinflussen. Kleinere Werte erzeugen abgerundete Ecken, während größere Werte die Ecken nahezu rund machen.

  • Verwende eigene Grafiken: Um das Design weiter zu individualisieren, kannst du eigene Grafiken erstellen, die den Look deiner UserForm verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die UserForm transparent machen?
Antwort: Eine vollständige Transparenz ist in VBA nicht möglich, aber du kannst die Hintergrundfarbe ändern und transparente Textboxen verwenden.

2. Funktioniert dieser Code auch in Excel 2016?
Antwort: Ja, dieser Code funktioniert in den meisten modernen Versionen von Excel, einschließlich Excel 2016.

3. Kann ich weitere Formen erstellen?
Antwort: Ja, du kannst verschiedene Formen und Designs erstellen, indem du mit den API-Funktionen experimentierst und die Parameter anpasst.

4. Was sind die Grenzen bei der Gestaltung?
Antwort: Die Gestaltungsmöglichkeiten sind durch die Funktionen von Excel und VBA begrenzt. Für komplexere Designs könnte es notwendig sein, auf andere Programmiersprachen oder Plattformen zurückzugreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige