OOP mit LZ-Fehler 424
27.07.2017 16:43:28
Ingo
ich benötige mal wieder eure Hilfe für ein OOP Problem:
Was möchte ich machen?
Ich habe eine UserForm, in der habe ich mehrere Zeilen mit Zahlen, die ich für eine Auswertung benötige. Organisiert ist dasGanze in Frames. In der ersten Reihe eines jeden Frames stehen die Grenzwerte drin (z. B. 1400). Die Grenzwerte sind editierbar, die Anzeigefelder nur in Sonderfällen (Entscheidung zur Laufzeit). Dies aber nur nebenbei, spielt für meinen konkreten Fall keine Rolle. Zu Testzwecken habe ich hier in einem ersten Schritt einen Grenzwert (1400) hart codiert.
Aktueller Status:
Ich habe ein Objekt auf Basis einer TextBox erstellt (Display_panel). Alle Anzeigefelder haben spezifische, fortlaufende TabIndexe, so dass ich sie jederzeit zuordnen und auswerten kann. Das Ganze wiederholt sich in der gleichen UF für mehrere Frames (innerhalb der Frames haben alle Textfelder die gleiche TabIndex-Struktur). Zur Veranschaulichung hier noch ein Link zu einer leeren Beispieldatei:
https://www.herber.de/bbs/user/115082.xlsm
Der Fehler tritt interessanter Weise auch im leeren Zustand auf.
Problem:
Ich bekomme einen Laufzeitfehler 424 "Objekt erforderlich". Ich habe bislang in OOP noch nicht viel Erfahrung und beiße mir nun die Zähne aus. Ich wäre dankbar wenn ihr euren Vorschlag mit etwas Begleittext versehen könntet, damit ich nicht nur abtippe, sondern es auch verstehe.
Meine Vermutung:
Könnte das etwas mit den Frames zu tun haben?
Vielen Dank vorab für Eure Unterstützung :-)
Hier mein Versuch als Code:
Private Sub UserForm_Initialize()
Dim display_panel As MSForms.Control
' display_panel: Anzeigefelder
For Each display_panel In Controls
If TypeOf display_panel Is MSForms.TextBox Then
Select Case display_panel.TabIndex
Case 11, 12, 13, 14, 15, 16, 17, 18, 19
If display_panel.Value > 1400 Then
Set display_panel.BackColor = 6
End If
Case ""
End Select
End If
Next display_panel
End Sub
VG
Ingo