Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Controls() auf MultiPage anwenden

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige