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

Forumthread: ZOrder in einer Userform

ZOrder in einer Userform
19.08.2014 14:37:58
Peter
Hallo zusammen,
trotz längerer Suche habe ich zu meinem Problemchen keine passende Lösung gefunden :-(
Vielleicht klappt's ja hier mit Eurer Hilfe ...
In einer Userform habe ich ein Label und einen Frame.
Beim Klick auf einen Button soll das Label vor dem Frame angezeigt werden - beim erneuten Klick auf den Button dann wieder ausgeblendet werden.
Das Ein- und Ausblenden des Labels klappt auch ... jedoch gelingt es mir nicht, das Label im Vordergrund anzeigen zu lassen ... (Den Frame möchte ich nicht ausblenden bei der Anzeige des Labels)
Mein Code sieht gerade so aus:
Private Sub cbAuftragsInfo_Click()
If lbAuftragsInfo.Visible = False Then
lbAuftragsInfo.Visible = True
Frame6.ZOrder 1
lbAuftragsInfo.ZOrder 0
cbAuftragsInfo.Caption = "Info ausblenden"
ElseIf lbAuftragsInfo.Visible = True Then
lbAuftragsInfo.Visible = False
lbAuftragsInfo.ZOrder 1
Frame6.ZOrder 0
cbAuftragsInfo.Caption = "Info anzeigen"
End If
End Sub
Habt Ihr eine Idee, was ich da falsch mache?
Danke für Eure Hilfe und viele Grüße
Peter

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: ZOrder in einer Userform
19.08.2014 15:28:50
Robert
Hallo Peter,
Warum verschiebst du in der Objektansicht nicht einfach das Label in den Frame?
Dann ist es im Vordergrund, wenn eingeblendet.
Viele Grüße
robert

AW: ZOrder in einer Userform
19.08.2014 15:54:22
Peter
Hallo Robert,
danke für Deine Idee.
Im Frame gibt es ein paar Labels und eine Listbox.
Wenn ich das ein- und auszublendende Label in den Frage lege, dann kann ich ihn mit ZOrder vor die dortigen Labels legen - Er versteckt sich jedoch immer hinter der Listbox :-(
Vielleicht noch einen anderen Tipp für eine Suchrichtung?
Danke und viele Grüße
Peter

Anzeige
AW: ZOrder in einer Userform
19.08.2014 16:15:46
Robert
Nur mal interessehalber,
wie gehst du vor, wenn du es in den Vordergrund bringen willst?
benutzt du .ZOrder(msoBringToFront)?
viele Grüße
Robert

AW: ZOrder in einer Userform
19.08.2014 16:20:21
Peter
Hallo Robert,
prinzipiell ja - ich nutze nur anstelle der Texte die entsprechenden Ziffern (0 für msoBringToFront und 1 für msoSendToBack).
Gruß
Peter
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ZOrder in einer Userform mit VBA


Schritt-für-Schritt-Anleitung

Um ein Label in einer Userform vor einem Frame anzuzeigen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor in Excel (ALT + F11).

  2. Füge eine Userform hinzu und platziere ein Label (lbAuftragsInfo), einen Frame (Frame6) und einen Button (cbAuftragsInfo) darauf.

  3. Füge den folgenden VBA-Code in das Code-Fenster der Userform ein:

    Private Sub cbAuftragsInfo_Click()
       If lbAuftragsInfo.Visible = False Then
           lbAuftragsInfo.Visible = True
           lbAuftragsInfo.ZOrder 0 ' msoBringToFront
           cbAuftragsInfo.Caption = "Info ausblenden"
       Else
           lbAuftragsInfo.Visible = False
           cbAuftragsInfo.Caption = "Info anzeigen"
       End If
    End Sub
  4. Teste die Userform: Klicke auf den Button, um das Label anzuzeigen und erneut, um es auszublenden.

Verwende lbAuftragsInfo.ZOrder 0, um das Label in den Vordergrund zu bringen. Das ist der entscheidende Schritt, um die ZOrder in VBA zu nutzen.


Häufige Fehler und Lösungen

  • Problem: Das Label erscheint nicht vor dem Frame.

    • Lösung: Stelle sicher, dass du lbAuftragsInfo.ZOrder 0 verwendest, um das Label in den Vordergrund zu bringen.
  • Problem: Das Label wird immer hinter einer Listbox angezeigt.

    • Lösung: Wenn das Label im Frame ist, kann es hinter anderen Steuerelementen (wie einer Listbox) verborgen sein. Versuche, das Label außerhalb des Frames zu platzieren, um es korrekt anzuzeigen.

Alternative Methoden

Eine andere Möglichkeit, die ZOrder zu steuern, ist die Verwendung von msoBringToFront und msoSendToBack. Du kannst dies mit den entsprechenden Konstanten in VBA tun:

lbAuftragsInfo.ZOrder msoBringToFront
Frame6.ZOrder msoSendToBack

Diese Methode hat den gleichen Effekt, aber die Verwendung von Konstanten kann deinen Code verständlicher machen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die ZOrder in einer Userform mit mehreren Steuerelementen verwenden kannst:

Private Sub cbShowLabel_Click()
    lbInfo.Visible = Not lbInfo.Visible
    If lbInfo.Visible Then
        lbInfo.ZOrder 0 ' Bringt das Label in den Vordergrund
    Else
        lbInfo.ZOrder 1 ' Sendet das Label nach hinten
    End If
End Sub

In diesem Beispiel wird das Label lbInfo beim Klicken auf den Button ein- und ausgeblendet.


Tipps für Profis

  • Verwende die .Visible-Eigenschaft: Anstatt nur die ZOrder zu ändern, kannst du auch die Sichtbarkeit der Steuerelemente steuern, um das Benutzererlebnis zu verbessern.
  • Experimentiere mit Layouts: Manchmal ist es am besten, die Steuerelemente neu anzuordnen, anstatt die ZOrder zu ändern. Überlege, ob ein anderes Layout effektiver wäre.
  • Verwende Debugging: Nutze Debug.Print oder die Debugger-Funktion im VBA-Editor, um den Status von Steuerelementen während der Laufzeit zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Label immer im Vordergrund bleibt?
Verwende die ZOrder-Methode mit msoBringToFront, wenn das Label sichtbar wird.

2. Was passiert, wenn ich mehrere Steuerelemente habe?
Die ZOrder wird für jedes Steuerelement separat angewendet. Achte darauf, die Reihenfolge entsprechend anzupassen.

3. Funktioniert das auch in älteren Excel-Versionen?
Die Verwendung von ZOrder ist in allen modernen Excel-Versionen verfügbar, stelle jedoch sicher, dass du die richtige Syntax verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige