Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MultiPage
BildScreenshot zu MultiPage MultiPage-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema SpinButton
BildScreenshot zu SpinButton SpinButton-Seite mit Beispielarbeitsmappe aufrufen

Label von einem Frame in anderen verschieben


Betrifft: Label von einem Frame in anderen verschieben von: Ludmila
Geschrieben am: 22.06.2019 15:20:58

Hallo Spezialisten,

besteht die Möglichkeit, dass ich das Label "lbl_Zeit" das im Frame "Frm_Jahr" befindet in den Frame "Frm_Übersicht" verschiebe und wieder zurück.

Ich habe in einer UF verschiedene Frame's. Diese werden immer so groß wie die UF selbst. Nun zeigt mir das Label "lbl_Zeit" die aktuelle Uhrzeit an. Wenn ich nun einen anderen Frame öffne sollte das Label in diesem Frame erscheinen. Beim verlassen des Frames soll das Label im neuen Frame erscheinen.

Danke!
Gruß
Ludmila

  

Betrifft: AW: Label von einem Frame in anderen verschieben von: Daniel
Geschrieben am: 22.06.2019 15:32:58

Hi
schwierig.
die Frage ist, warum du mehrere Frames verwendest.
Wenns nur dazu dient, dass du in der Userform mehrere Ansicht mit unterschiedlichen Steuerelementen hast, dann könntest du auch so vorgehen:
erstelle eine Multipage mit so vielen Seiten wie du Frames hast.
platziere die Steuerelemente jedes Frames auf eine Multipageseite.
blende die Tab-Leiste der Mulitpage aus. dann kann der Anwender nicht mehr selbstständig umblättern, sondern das geht nur per Code (wie bei deinen Frames)
mache die Multipage etwas kleiner als die Userform und platziere die Steuerelemente, die immer sichtbar sein sollen in der freien Fläche.

oder wenns nur um die Uhrzeit geht: schreibe die Uhrzeit doch in Caption der der Userform.

Gruß Daniel


  

Betrifft: AW: Label von einem Frame in anderen verschieben von: Ludmila
Geschrieben am: 22.06.2019 15:51:59

Hallo Daniel,

Danke für Deine Antwort.
Das mit dem Verkleinern der Frame's oder in eine MultiPage zu packen geht nicht bei mir.
Zum einen habe ich in den verschiedenen je eine Multipage.
Auch habe ich den Style der MultiPage ausgeblendet und eigene CommandButton zum wechseln der Seite.
Ich könnte in jeden Frame ein Label für die Zeit einfügen, jedoch müsste ich diese bei jedem Aufruf des Frame ein und danach wieder ausschalten.
Das ist mir dann doch zu umständlich.
Auch das die Zeit im Caption der Userform anzeigen lasse habe ich versucht, bzw. wird dann das Programm sehr langsam und alle Steuerelemente wie ComboBox nur verzögert, bei MsgBox wird dann kein Text mehr angezeigt.
Derzeit aktive ich mein Label wie folgt:

Private Sub UserForm_Activate()
    bol = True
        Do Until bol = False
            DoEvents
            With UF1
                .lblStart_Zeit.Caption = sUHRTag & " " & Format(Date, "DD. MMMM YYYY") & vbLf &  _
funcKW(Date) & ". Kalenderwoche" & vbLf & Time
            End With
        Loop
End Sub
sUhrTag gibt Mo, Di usw an.

Wie könnte ich es anders bewerkstelligen?

Gruß
Ludmila


  

Betrifft: AW: Label von einem Frame in anderen verschieben von: Daniel
Geschrieben am: 22.06.2019 16:19:51

Hi
naja, stellt sich überhaupt erstmal die Frage, warum man in der Userform eine Information anzeigen muss, die sowieso in den meisten Fällen permanent auf dem Bildschirm sichtbar ist.
alles andere ändert sich ja sowieso nicht und es reicht, wenn man es einmal beim Start der Userform aktiviert.

Generell sollest du dir überlegen, ob du die Uhrzeitaktualisierung wirklich über eine Endlosschleife machen willst, sondern nicht besser über ein Makro, welches du mit Application.Ontime im Sekunden oder ggf auch im Minutentakt aufrufen kannst, so dass das viel weniger Performance benötigt als ein permanenter Update.

wenn du nicht tiefer in deinen Aufbau eingreifen willst, könntest du folgendes tun.

1. erstelle auf jedem Frame ein Label für die Uhrzeit.
2. deklariere eine Userform-weit gültige Objektvariable vom Typ Control, dh im Modul der Userform, oberhalb der Makros:

Option Explicit
Dim lblZeit as Control

3. erstelle für jeden Frame das ENTER-Event und weise dort das label, in welches die Uhrzeit geschrieben werden soll, der Variablen zu:
Private Sub Frame1_Enter()
Set lblZeit = uf1.lblStart_Zeit_Frame1
End Sub
Private Sub Frame2_Enter()
Set lblZeit = uf1.lblStart_Zeit_Frame2
End Sub

4. verwende in deiner Do-Schleife die Objektvariable
 Do Until bol = False
    ...
    if not lblZeit is nothing then lblZeit.Caption = ....
  Loop

Gruß Daniel


  

Betrifft: AW: Label von einem Frame in anderen verschieben von: Ludmila
Geschrieben am: 22.06.2019 16:51:38

Hallo Daniel,
echt super!
Danke!
Gruß
Ludmila


Beiträge aus dem Excel-Forum zum Thema "Label von einem Frame in anderen verschieben"