ich komme nicht mehr weiter und benötige nochmals eure Unterstützung :-(
Was möchte ich machen?
Ich habe eine UserForm, mit mehreren Zeilen und Zahlen, die ich für eine Auswertung benötige. Organisiert ist das Ganze 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
Aktuell werden mit dem folgenden Code alle Felder auf der UF, die der Case-Anweisung entsprechen farblich markiert. Ich möchte diese Gestaltung aber je Frame (also für SBC-1, SBC-2, etc.) getrennt vornehmen können.
Private Sub UserForm_Initialize()
Dim display_panel As MSForms.Control ' Bibliotheken immer mit angeben!
' display_panel: Anzeigefeld
Dim Test As Frame
Set Test = frm_Kanaele_SBC_1.ActiveControl
For Each display_panel In Controls '
If TypeOf display_panel Is MSForms.TextBox Then
With Test
Select Case display_panel.TabIndex
Case 11, 12, 13, 14, 15, 16, 17, 18, 19
If display_panel.Value > 22400 Then
display_panel.BackColor = RGB(256, 0, 0)
End If
Case Else
End Select
End With
' Set display_panel.Font = make_font(True, False, 30, "Arial")
Else
' Set display_panel.Font = make_font(False, False, 10, "Arial")
End If
Next display_panel
End Sub
In meinem letzten Versuch (s. o.) habe ich versucht (zunächst einen) Frame über ActiveControl anzusprechen, was aber bei genauerer Betrachtung wohl ziemlicher Blödsinn ist. Frage:
Wie kann ich Objekte, die sich innerhalb eines Frames auf einer UF befinden adressieren?
Eine 2. Baustelle betrifft den eigentlichen Wertevergleich:
Mein Ziel ist es, den Vergleichswert, der z. B. in der Zeile "Capacity" steht mit dem zugehörenden Wert (gleiche Spalte) in Zeile "real" zu vergleichen. Hierfür plane ich über das Tag zu gehen (gleiche Werte in "Capacity" wie in "real") und einen Schleifenzähler zu implementieren, über den dann ein Vergleich stattfinden kann. Anders ausgedrückt: Vergleiche Wert von "Capacity" (Tag=1) mit Wert "real" (Tag=1). Wenn Wert "real" > "Capacity dann Farbe "Rot". Ich sehe hier aber schon ein Problem, da txtbox-capacity.tag(1).value = txtbox-real.tag(1).value nicht funktionieren wird?! Kann ich das so machen oder habt ihr da bessere weil einfachere Vorschläge?
Wäre toll, wenn ihr eure Antwort mit einer kleinen Erklärung ergänzen könntet, damit ich es auch verstehe ;-)
VG und 1000 Dank für eure Unterstützung
Ingo