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

Transparente UserForm ohne Rahmen

Forumthread: Transparente UserForm ohne Rahmen

Transparente UserForm ohne Rahmen
03.01.2005 11:00:32
Tobias
Hallo zusammen,
Ich habe in einem Workbook eine UserForm die ich abhängig vom dem
Hintergrundbild transparent machen kann. funktioniert auch alles wunderbar,
doch der Rahmen um die UserForm bleibt bestehen...
Weiss jemand wie mein Problem zu lösen ist?
Gruss
-Tobias
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Transparente UserForm ohne Rahmen
Tobias
Hallo André
Danke für Dein Tipp, hat aber leider nichts geholfen,
muss mich vielleicht präziser ausdrücken.
Eine UserForm in VBA ist immer dreidimensional und genau
der Rahmen der die UserForm eben dreidimensional macht erscheint
dann auch, obschon alles transparent ist.
Die UserForm zweidimensional zu machen wäre eine mögliche Lösung,
oder gar der ganze "Rahmen" verschwinden zu lassen.
Gruss
Tobias
Anzeige
AW: Transparente UserForm ohne Rahmen
HerbertH
hallo Tobias,
wenn ich richtig gesehen habe,gibt es bei diesem Code
keinen Rahmen mehr...


'in das Modul der Userform
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
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
    Me.Width = 350: Me.Height = 350
    Commandbutton1.Left = (Me.Width - Commandbutton1.Width) / 3
    Commandbutton1.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 = 4
    mWnd = FindWindow(vbNullString, Me.Name)
    SetWindowRgn mWnd, CreateRoundRectRgn(2, 2, x, y, n, n), True
End Sub

     du mußt vor dem ersten Test gleich eine Schaltfläche zum
Schließen der Userform platzieren, weil das Schließkreuz
nicht mehr vorhanden ist...
gruß Herbert
Anzeige
AW: Transparente UserForm ohne Rahmen
Tobias
Besten Dank Herbert!
Das ist genau das, nachdem ich gesucht habe!!
Gruss
-Tobias
;
Anzeige
Anzeige

Infobox / Tutorial

Transparente UserForm ohne Rahmen in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine transparente UserForm ohne Rahmen in Excel VBA zu erstellen, befolge 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 Projektbereich und wähle Einfügen > UserForm.
  3. Füge den folgenden Code in das Modul der UserForm ein:

    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 UserForm_Initialize()
       Me.Width = 350
       Me.Height = 350
       CommandButton1.Left = (Me.Width - CommandButton1.Width) / 3
       CommandButton1.Top = Me.Height * 0.6
    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 = 4
       mWnd = FindWindow(vbNullString, Me.Name)
       SetWindowRgn mWnd, CreateRoundRectRgn(2, 2, x, y, n, n), True
    End Sub
    
    Private Sub CommandButton1_Click()
       Unload Me
    End Sub
  4. Füge einen Schließen-Button hinzu:

    • Platziere einen Button auf der UserForm, um diese schließen zu können, da das Schließkreuz nicht mehr vorhanden ist.
  5. Teste die UserForm:

    • Starte die UserForm, um die transparente Darstellung zu überprüfen.

Häufige Fehler und Lösungen

  • Rahmen bleibt bestehen:

    • Stelle sicher, dass der Code zur Erstellung der runden Region korrekt eingefügt ist. Wenn der Rahmen weiterhin sichtbar ist, überprüfe die Parameter in der CreateRoundRectRgn Funktion.
  • UserForm lässt sich nicht schließen:

    • Achte darauf, dass ein Schließen-Button vorhanden ist, da das Standard-Schließkreuz entfernt wurde.

Alternative Methoden

Wenn du eine alternative Methode zur Erstellung einer transparenten UserForm in Excel suchst, kannst du auch die SetLayeredWindowAttributes Funktion verwenden. Diese Methode kann ebenfalls gut funktionieren, erfordert jedoch mehr Kenntnisse über Windows API.


Praktische Beispiele

Hier ist ein Beispiel, wie du das Hintergrundbild für deine transparente UserForm festlegen kannst:

Private Sub UserForm_Initialize()
    Me.BackColor = vbWhite 'Setze die Hintergrundfarbe auf Weiß
    Me.Picture = LoadPicture("C:\path\to\your\background.jpg") 'Füge das Hintergrundbild hinzu
End Sub

Achte darauf, dass der Pfad zum Bild korrekt ist. Das Bild wird als Hintergrund angezeigt und die Transparenz der UserForm bleibt erhalten.


Tipps für Profis

  • VBA Frame transparent: Um die UserForm noch professioneller zu gestalten, experimentiere mit den Rundungen der Ecken, indem du die Werte in der CreateRoundRectRgn Funktion anpasst.
  • Hintergrundbilder: Verwende Bilder mit transparenten Bereichen, um einen besseren visuellen Effekt zu erzielen.

FAQ: Häufige Fragen

1. Wie kann ich die UserForm ohne Rahmen in einer älteren Excel-Version umsetzen? In vielen älteren Versionen funktioniert dieser Code ebenfalls, achte jedoch darauf, ob die API-Funktionen in deiner Version unterstützt werden.

2. Kann ich die Größe der UserForm dynamisch ändern? Ja, du kannst die Werte für Me.Width und Me.Height in der UserForm_Initialize Methode anpassen, um die Größe dynamisch zu ändern.

3. Was ist, wenn ich keine Schaltfläche zum Schließen der UserForm habe? In diesem Fall musst du sicherstellen, dass die UserForm nicht versehentlich geschlossen wird, da das Schließen-Kreuz nicht mehr verfügbar ist. Ein Schließen-Button ist unerlässlich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige