Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Multipages erst füllen wenn aktiviert
#1
Guten Morgen, 

ich habe ein Userform mit mehreren Multipages.

die sollen sich aber erst befüllen wenn ich diese aktiviere.


Code:
Private Sub MultiPage3_Change()
me.bla bla 
me.bla bla
usw
End Sub




Funktioniert leider nicht.
Antworten Top
#2
Moin,

me ist die Form, das kann also nicht klappen. Und was meinst Du mit "auffüllen"? Sollen da erst die Objekte auf den Pages erstellt oder beschriftet werden?
Egal, anbei mal ein Beispiel für eine Multipage: 

Code:
Private Sub CommandButton2_Click()
MultiPage1.Pages(0).Controls(0).Text = Format(Now(), "hh:mm:ss")
End Sub

Private Sub MultiPage1_Change()

With MultiPage1.Pages(MultiPage1.SelectedItem.Index)
    MsgBox "Beschriftung: " & .Caption & vbCrLf & "Anzahl Controls: " & .Controls.Count
End With

  If MultiPage1.SelectedItem.Index = 1 Then
    ListBox1.AddItem Format(Now(), "hh:mm:ss")
  End If
End Sub
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
normal wird ja die komplette Userform mit 



Code:
Private Sub Userform_Initialize()
Me.Textbox usw
Me.Label usw
End Sub

 beim Start mit werten aus Excel gefüllt

Ich möchte aber nicht das komplette Userform beim starten füllen. Sondern immer nur die jeweilige Multipage wenn ich eben auf diese wechsle.

Code:
Private Sub Userform_Initialize()
Me.Textbox usw
Me.Label usw
End Sub

Private Sub Multipage2_Change()
Me.Textbox1 usw.
Me.Label2 usw.
End Sub

mit dem Code gehts nicht
Antworten Top
#4
Hallo,

magst du mal verraten, was du dir davon versprchst?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
(05.11.2024, 10:54)Xenon85 schrieb: Ich möchte aber nicht das komplette Userform beim starten füllen. Sondern immer nur die jeweilige Multipage wenn ich eben auf diese wechsle.

Und welchen Vorteil versprichst Du Dir davon? Spätestens nach dem 1. "Auffüllen" sind die Objekte dauerhaft vorhanden. Und wenn Du sie nicht wieder "entsettest", bleiben sie da auch. Außer mehr Verwaltungsaufwand so gut wie kein erkennbarer Nutzen.
Zumal Du ja ein Multipageobjekt nutzt, dass mit seinen jeweils einzelnen Pages auf unterschiedliche Bedingungen von Haus aus angepasst werden kann.

Wenn Du auch da z. Bsp. eine flexible weil von Zeilenanzahl abhängige Anzahl von Textboxen abzielst, solltest Du über Alternativen nachdenken. Z. Bsp. Dich mit Klassenprogrammierung beschäftigen oder statt mehrerer Textboxen vielleicht eine Listbox verwenden. Das hat aber alles nix mit der Multipage zu tun. Das ist eine Konzeptfrage...

Hast Du mein Beispiel von oben denn schon mal getestet?
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#6
Hallöchen,

also, ich könnte mir vorstellen, dass eine page in Abhängigkeit von Eingaben und/oder einer anderen page oder weiteren Feldern des UF (oder der page) gefüllt werden soll und auch nur, wenn's gebraucht wird. Huh ich hatte mal ein UF mit 13 Pages und jede mit Datenbankabfragen ...

Wann die Pages gefüllt werden, legst doch letztendlich Du fest, z.B. auch so:
Code:
Private Sub MultiPage1_Change()
Select Case MultiPage1.Value
  Case 0
    'Me.Textbox1 usw.
    'Me.Label2 usw.
  Case 1
    'Me.Textbox99 usw.
    'Me.Label77 usw.
End Select
End Sub
Du kannst da auch das Leeren einbeziehen
Code:
Private Sub MultiPage1_Change()
Select Case MultiPage1.Value
  Case 0
    'Me.Textbox1 usw.
    'Me.Label2 usw.
    'Me.Textbox99 usw. = ""
    'Me.Label77 usw. = ""
  Case 1
    'Me.Textbox99 usw.
    'Me.Label77 usw.
    'Me.Textbox1 usw. = ""
    'Me.Label2 usw. = ""
End Select
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Moin,

die Steuerelemente auf einer Multipage bleiben auch im Me-Namensraum verfügbar. Es ist also kein Problem, über das Me-Schlüsselwort auf die Controls zuzugreifen. Wenn explizit die Steuerelemente auf einer einzelnen Page angesprochen werden sollen, lassen sich diese wie von Ralf beschrieben über die Controls-Auflistung des Page-Objekts erreichen:
Code:
Option Explicit

Private Sub MultiPage1_Change()
    With MultiPage1.Pages(MultiPage1.Value).Controls(0)
        Debug.Print .Name
        .Caption = Time
    End With
End Sub

Dein Code sollte also grundsätzlich funktionieren. Allerdings solltest du mal darstellen, was du mit "geht nicht" meinst, wie sich das konkret darstellt, und wo deine Erwartung vom Verhalten der UserForm abweicht. Fehlermeldungen?

Viele Grüße
derHöpp
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste