Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

Suche Erklärung zu Code und Hilfe zu Fehler 424

Suche Erklärung zu Code und Hilfe zu Fehler 424
09.02.2019 11:52:40
Oliver
Hallo Leute,
ich hatte letztes Jahr im September ein Problem mit der Formatierung einer TextBox und da hat mir der User Oberschlumpf ganz toll geholfen (https://www.herber.de/forum/archiv/1644to1648/t1647116.htm) mit folgendem Code:
Private Sub TextBox1_Change()
If pboUndo = True Then
pboUndo = False
Exit Sub
End If
With TextBox1
Select Case Len(.Text)
Case 1
If Asc(.Text) >= 65 And _
Asc(.Text)  "B" And _
.Text  "C" And _
.Text  "Z" Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
Else
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
Case 2, 3
If Not IsNumeric(Right(.Text, 1)) Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
If Len(.Text) = 3 Then
pboUndo = True
.Text = .Text & "."
End If
Case 5, 6, 7
If Not IsNumeric(Right(.Text, 1)) Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
If Len(.Text) = 7 Then
pboUndo = True
.Text = .Text & "."
End If
Case 9, 10
If Not IsNumeric(Right(.Text, 1)) Then
pboUndo = True
.Text = pstrTxt
Exit Sub
End If
Case 11
pboUndo = True
.Text = pstrTxt
Exit Sub
End Select
pstrTxt = .Text
End With
End Sub

Der Code funktioniert auch und tut genau das was er soll.
Nun zu meinem Problem:
Ich habe eine Userform mit einer Multipage mit 2 Reitern und jeder dieser Reiter hat eine weitere Multipage mit 2 Reitern. Jeder Reiter hat einen Schließen Button, der die Userform schließen und bestimmte Zellen per Blattschutz schützen soll. Der User kann nach dem Schließen nur noch die Tabelle filtern.
Wenn ich die Datei starte, startet automatisch die Userform, aber wenn ich nun über das X oder einen der Schließen Button die Userform schließe kommt immer die Meldung "Laufzeitfehler 424, Objekt erforderlich".
Wenn ich allerdings die Userform erneut starte funktionieren die Button und das X so wie es angedacht ist.
Jetzt wollte ich den gesamten Code debuggen und er hält immer bei dem oben geposteten Code an und sagt pboUndo Variable nicht definiert.
Ich verstehe den Code von Oberschlumpf auch leider nicht und weiß gar nicht was dieses pboUndo ist und macht :(
Ich hoffe hier kann mir jemand helfen.
Vielen Dank schon mal im Vorraus.
Gruß Oliver

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Update
09.02.2019 12:08:43
Oliver
Update: Wenn ich den oben genannten Code zu Testzwecken auskommentiere dann läuft der Debugger ohne Probleme durch. Ich erhalte trotzdem beim erstmaligen beenden der Userform den Laufzeitfehler 424 Objekt erforderlich ...
AW: Update
09.02.2019 12:14:43
Oliver
.
AW: Suche Erklärung zu Code und Hilfe zu Fehler 424
09.02.2019 12:14:10
Matthias
Moin!
Also umn den Fehler mit dem Objekt zu finden, müsste man ggf. den Code vom X bzw. Event beim Schließen sehen.
Mal zur Variable. Das p steht für public (analog auch beim pstrText). Die ist vermutlich modulweit deklariert und sollte am Codeanfang stehen ggf. auch in einem Modul. Das bo steht für boolean. Damit will man wohl wahr oder falsch aufnehmen. Und Undo heist frei übersetzt Abbruch. Dieser Namensaufbau bewirkt aber nicht das geschriebene sondern soll nur verdeutlichen, was die Variable macht und wo sie herkommt.
In deinsem Code dient sie dazu, das Event abzubrechen. Im Event werden je nach Prüfung in die Textbox wieder Werte geschrieben. Damit springt das Change Event aber wieder an. Um das zu vermeiden, wird bei jedem Eintrag aus dem Event der "Schalter" gesetzt und beim erneuten anspringen dann ausgewertet und dieser Durchlauf abgebrochen.
Wenn du die Variable in der UF am Anfangde deklarierst, sollte die MEldung weg sein. Woher der Objektfehler kommt, kann ich so nicht erkennen.
Anzeige
AW: Suche Erklärung zu Code und Hilfe zu Fehler 424
09.02.2019 12:21:54
onur
Der obige Code ohne die Datei bringt rein gar nix, es wäre nur Herumraterei.
Poste die Datei.
Hoffe das hilft weiter
09.02.2019 12:46:02
Oliver
Viele Dank ihr beiden für eure Antwort.
Ich weiß, dass mit der Datei im Anhang alles viel einfacher wäre nur leider enthält sie so viele Daten die ich leider hier nicht posten kann :(
Für die Erklärung bin ich dankbar, jetzt verstehe ich den Code auch. Ich habe deinen Rat befolgt und habe ganz oben unter Option explicit folgendes geschrieben : Dim pboUndo As Double . Ist das so richtig oder wie muss ich die Variable deklarieren ?
Ich poste mal den Code meines Schließen Button und hoffe es hilft weiter
Private Sub HUB_NeuerEintrag_Button_Abbrechen_Click()
Dim i As Integer
For i = 1 To Sheets.Count
ActiveWorkbook.Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:= _
True, AllowFiltering:=True, Password:="7777"
Next
Unload HUB_Doku
End Sub

Anzeige
AW: Hoffe das hilft weiter
09.02.2019 12:50:55
onur
"pboUndo" scheint eine globale Flag-Variable (Boolean) zu sein, die noch in anderen Subs abgefragt wird (sonst würde es keinen Sinn machen, sie am Anfang des Codes umzuswitchen), aber (wie gesagt) ohne die Datei zu haben .......
AW: Hoffe das hilft weiter
09.02.2019 13:06:38
onur
Versuch mal am Ende statt:
Unload HUB_Doku

das:
End

Zu früh gefreut
09.02.2019 16:21:57
Oliver
Danke für deine Antwort, ich habe bei einem Schließen Button "End" eingebaut und den unload Befehl raus genommen, ich startete die Datei und siehe da ich konnte ohne Fehler 424 die Userform schließen.
Leider ging das nur dieses eine mal. Jetzt bleibt die Userform einfach offen und es passiert nichts.
Anzeige
AW: Zu früh gefreut
09.02.2019 16:23:39
onur
Mehr Ratschläge hätte ich nur, wenn ich die Datei hätte.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige