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

OOP mit LZ-Fehler 424

OOP mit LZ-Fehler 424
27.07.2017 16:43:28
Ingo
Hallo liebe VBA Spezialisten,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OOP mit LZ-Fehler 424 - Ergänzung
27.07.2017 16:50:58
Ingo
Hallo noch einmal...
Vielleicht noch eine Ergänzug:
Der Fehler tritt in der Zeile "Set display_panel.BackColor = 6" auf. Also die OOP Definition scheint soweit OK zu sein?!
Nochmals beste Grüße
Ingo
Ungetestet
27.07.2017 17:21:35
RPP63
Lass mal das Set = weg.
Mit Set setzt Du eine Objektvariable.
Du willst aber lediglich eine Eigenschaft ändern:
display_panel.BackColor = 6

Dass der Farb-Long-Wert 6 von schwarz nicht zu unterscheiden ist, weißt Du sicherlich.
Oder verwechselst Du da etwas mit dem .ColorIndex?
Den kann ich Dir nicht empfehlen, nutze besser die Zuweisung per RGB()-Funktion.
Gruß Ralf
Anzeige
AW: OOP mit LZ-Fehler 424 - Ergänzung
27.07.2017 17:24:38
Mullit
Hallo,
..ohne Set..
If display_panel.Value > 1400 Then
display_panel.BackColor = 6
End If

Gruß, Mullit
Vielen Dank!!!
27.07.2017 18:40:29
Ingo
Vielen Dank Euch beiden für die schnelle Hilfe! Das Script läuft :-))
Ich hatte noch eine fehlerhafte Deklaration und da hat er mir ein "Typen unverträglich" ausgegeben, aber das ist nun auch behoben :-)
VG und noch einmal besten Dank!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige