Hallo Hermdaddy,
sicher kann man hier auch ein zweites Klassenmodul verwenden. Nur wozu? Aber wenn du das schon machst, dann eher so wie von Gast68385 vorgeschlagen. Da du jedoch hinter den Events noch eine Nummer hinzugefügt hast, werden diese nicht mehr als solche erkannt und daher nicht ausgeführt.
Viel einfacher wäre es, wenn du im Userform lediglich <= 5038 durch <= 5107 ersetzt und den Rest unverändert lässt.
Den Code im Klassenmodul mytextbox baust du nun so auf:
Public WithEvents tbx As MSForms.TextBox
Private Sub tbx_Change()
On Error GoTo Ende
SABW = Sheets("Tabelle1").Cells(2, 12)
Select Case Val(Right(tbx.Name, 4))
Case 5001 To 5038
If CDbl(tbx) > 4 Or CDbl(tbx) < -4 Then
tbx.BackColor = vbRed
Else
tbx.BackColor = vbGreen
End If
Case 5089 To 5107
If CDbl(tbx) > (SABW * 2) Or CDbl(tbx) < -(SABW * 2) Then
tbx.BackColor = vbRed
Else
tbx.BackColor = vbGreen
End If
End Select
Exit Sub
Ende: tbx.BackColor = vbWhite
End Sub
PS: Wenn du es ganz genau machen willst, kannst du alternativ im Userformcode natürlich auch die Zeile
If Val(Right(ctrl.Name, 4)) >= 5001 And Val(Right(ctrl.Name, 4)) <= 5038 Then
durch die zwei Zeilen
If Val(Right(ctrl.Name, 4)) >= 5001 And Val(Right(ctrl.Name, 4)) <= 5038 _
Or Val(Right(ctrl.Name, 4)) >= 5089 And Val(Right(ctrl.Name, 4)) <= 5107 Then
ersetzen.
Gruß Mr. K.
|