Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA Controls() auf MultiPage anwenden
23.02.2017 11:11:30
Henning
Hallo liebe Excel-Gemeinde,
folgendes Problem, bei dem Ihr mir hoffentlich helfen könnt:
Ich habe eine Userform mit einer Multipage (streng genommen sogar zwei), und je nachdem, ob ein bestimmter Haken in einer CheckBox gesetzt ist, soll eine Seite ein- oder ausgeblendet werden. Realisiert werden kann das Ganze über in diesem Fall
MultiPage2.Pages(0).Enabled = False

Ich würde das ganze aber gerne flexibel über eine Funktion machen, der ich als Argument den Namen der einzublendenden Page als String übergebe.
Privat Sub aktivieren(s as String)
Controls(s).Enabled = False
End Sub

Das ganze natürlich noch mit Fehler/If-Abfrage, aber vom Grundprinzip her so.
Schreibe ich nun in s
s="MultiPage2.Pages(0)"
kommt der Fehler "Das angegebene Objekt konnte nicht gefunden werden". Schreibe ich in s hingegen nur
s="MultiPage2"
und arbeite statt ".enabled" mit ".visible", funktioniert alles. Die Control()-Funktion scheint also nicht auf zwei Staffelungen reagieren zu können. Gibt es da von Euch aus vielleicht irgendwelche Ideen, wie man das ganze realisieren könnte?
Herzlichen Dank und beste Grüße,
Henning
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wo ist der Sinn?
23.02.2017 11:33:12
Max2
Hallo,
also wenn ich dich richtig verstehe dann möchtest du statt
den Code in die Controls zu schreiben einen Sub aufrufen
wenn ein Hacken gesetzt wurde?
Ich verstehe da den Sinn dahinter nicht, dass ist mehr Code
und umständlicher.
Zudem sind .Enabled und .Visible grundlegend verschiedene Dinge...
.Enabled = Die Page ist aktiviert, man kann etwas mit ihr machen
.Visible = Die Page ist sichtbar
Wie wird der Code denn Bitte flexibel wenn du den Namen der Page
als Variable übergibst?
So wie du es machst auf jeden fall nicht... da musst du schon durch iterieren,
ansonsten musst du ja für eine jede Page eine Variable erzeugen
Anzeige
AW: Wo ist der Sinn?
23.02.2017 12:21:30
Henning
Hi Max2,
danke für die Antwort erstmal. Der Sinn hinter dem ganzen ist, in Abhängigkeit davon, ob eben das Kontrollkästchen aktiviert ist (stellt hier ein Gegenstand dar), sollen eigenschaften des Gegenstands eingegeben werden können. Da schien mir das Anzeigen eines entsprechenden Reiters einer Multipage am geeignetsten.
Dass visible und enabled grundverschiedene Dinge sind, ist mir schon klar, es ging eher darum, dass Controls() funktioniert, wenn der String nur "MultiPage2" enthält. Macht hier auch keinen Unterschied in der Funktionalität.
Der Code wird dadurch flexibler, dass ich für jedes Element der userform, dass un-/sichtbar werden soll, die gleiche Funktion nehmen kann, die prüft, ob sichtbar gerade auf true oder false steht und entsprechend das gegenteilige Argument setzt. Ich hoffe, das wurde klar.
Besten Dank und Grüße,
Henning
Anzeige
AW: Wo ist der Sinn?
23.02.2017 12:47:45
Mullit
Hallo,
bei 'VBA gut' muß das aber flutschen ;-), Du übergibst einfach das Objekt:
Private Sub aktivieren(ByRef probjPage As MSForms.Page)
probjPage.Enabled = CheckBox1.Value
End Sub
Public Sub Aufruf()
Call aktivieren(MultiPage1.Pages(0))
End Sub

Gruß, Mullit
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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