Clever-Excel-Forum

Normale Version: VBA Code verkürzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Das ist aktuell ohne die Userform das Problem.

Daher lege ich über diese unübersichtlichen Eingabeblätter die Userform, die wirklich nur das anzeigt was auch eingetragen werden soll.

Das sollte eine deutliche Vereinfachung sein.
Zudem gibt es zu den Feldern überall ControlTip Texte, die alles erläutern.
Kurze Frage zu meinem Code:

Ich versuche alle TextBoxen von TextBox148 bis TextBox208 Initial auf Visible = False zu setzen.

Code:
Private Sub TextBoxenAusblenden()
Dim i As Integer
For i = 148 To 208
   meinFormular.Controls("TextBox" & i).Visible = False
Next
End Sub
Er erzählt mir aber immer, dass das angegebene Objekt nicht gefunden werden konnte.
Egal ob mit Me oder mit meinFormular.
Wo liegt der Fehler?
Hallo Max,

ich denke mal hier: meinFormular.Controls("TextBox" & i).Visible = False, nimm mal den roten Teil raus.
Magst du vielleicht erst mal Antwort geben, ob dir mein Code gefallen hat (oder auch der von snb), bevor du die nächste Frage stellst?
(22.01.2019, 11:58)Klaus-Dieter schrieb: [ -> ]Hallo Max,

ich denke mal hier: meinFormular.Controls("TextBox" & i).Visible = False, nimm mal den roten Teil raus.

Das ändert leider nichts.

Im Debugger springt er in die For-Schleife und durchläuft diese sehr oft (nicht genau gezählt), aber ich schätze bei der letzten Wiederholung wirft er dann einen Laufzeitfehler '-2147024809 (80070057)'
Das angegebene Objekt konnte nicht gefunden werden.
(22.01.2019, 12:00)MisterBurns schrieb: [ -> ]Magst du vielleicht erst mal Antwort geben, ob dir mein Code gefallen hat (oder auch der von snb), bevor du die nächste Frage stellst?

Habe es ausprobiert - aber dort tritt der identische "Objekt nicht gefunden" Fehler auf wie bei meiner Methode.
Hallo Max,

bitte verzichte darauf, die vorangegangenen Antworten zu zitieren.

Zu deiner Frage: vielleicht gibt es die Textbox208 gar nicht?
Zitat:bitte verzichte darauf, die vorangegangenen Antworten zu zitieren.
Ok, mach ich!  :05:

Dann lade doch mal eine Beispielmappe mit identen Vorgaben wie im Original hoch, sonst raten wir hier noch 20 Posts lang.
Das Teil hat mittlerweile um die 1000 Zeilen Code. Ich denke nicht, dass nur der explizite Teil den Fehler auslöst.

Der Code sollte passen - und die TextBoxen existieren alle.

Zudem tritt der Fehler aktuell bei jeder Methode auf die ich neu hinzufüge.

Code:
Private Sub TextBoxenAusblenden()
Dim i As Integer
For i = 148 To 208
   Controls("TextBox" & i).Visible = False
Next
End Sub

Private Sub UserForm_Initialize()

TextBoxenAusblenden

End Sub
Ich sehe nicht, wieso das nicht funktionieren sollte.
Wirft laut Debugger aber am Ende der For-Schleife den Laufzeitfehler.

Sobald ich diesen Teil auskommentiere läuft wieder alles problemlos.


Was mir gerade als Problem einfällt... die Reiter für die Eingabe der Alternativen sind Initial alle ausgeblendet und werden erst während der Laufzeit eingeblendet.
Man kann soweit ich weiß nicht auf ausgeblendeten Objekten operieren im Initialize - stimmt das?
Hallo Max,

für mich deutet das darauf hin, dass es die Textbox208 nicht gibt. 1000 Zeilen Quelltext sind allerdings auch eine Hausnummer. Habe schon viel mit VBA gemacht, auch komplexe Anwendungen, aber so etwas habe ich noch nicht zusammen bekommen.
Seiten: 1 2 3 4