Registriert seit: 05.10.2017
Version(en): Exel 2010
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.
Registriert seit: 25.11.2021
Version(en): 2019, 365
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
Registriert seit: 05.10.2017
Version(en): Exel 2010
05.11.2024, 10:54
(Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2024, 10:55 von Xenon85.)
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
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 25.11.2021
Version(en): 2019, 365
05.11.2024, 11:18
(Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2024, 11:18 von Ralf A.)
(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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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.
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)
Registriert seit: 26.09.2022
Version(en): 2019
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