Hallo an alle,
ich überarbeite zur Zeit ein Formular und möchte, dass wenn ein bestimmter Wert für das Feld Unter-/Überboten wird, sich die Textfarbe rot färbt und sonst schwarz bleibt.
Hab dafür in VBA ein kurzes Programm geschrieben:
Private Sub gem_BH__mm__AfterUpdate()
Dim gem_BH_mm As Long
If [gem_BH_(mm)] = 297.5 And 302.5 Then
.gem_BH_mm.BackColor = RGB(255, 0, 0)
Else
.gem_BH_mm.BackColor = RGB(255, 255, 255)
End If
End Sub
Gebe ich jetzt im Formular einen Wert ein, kommt die Meldung Fehler beim Kompilieren, die Variable mm ist nicht definiert.
Das verstehe ich nicht, habe doch das Feld als Zahl definiert mit dem Dim ... As Long? oder doch nicht?
Danke im Voraus für eure Hilfe
Mfg Robby
Hallo,
Du hast die Variable in der If Zeile auch falsch geschrieben, Du hast da Klammern um mm. Die Deklaration ist aber überflüssig, das ist ja ein Formularfeld. Formularfelder werden mit Me. angesprochen.Außerdem ist die Bedingung falsch.
297.5 Und (And) gleichzeitig 302.5 kann ja nicht sein.
Was willst Du genau machen?
PS:
Long ist eine Ganzahl und würde für eine Kommazahl ohnehin nicht funktionieren.
hallo,
erstmal danke für die raschen Antwort.
Also das Feld ist für die Vermessung der Bauhöhe eines Heizkörpers.
Ich möchte, dass sich der Text im Feld rot markiert wenn ein Wert die Schwelle unter-/überschreitet, damit man sofort sehen kann dass der Wert unter der Schwelle ist.
Quasi, wenn der Heizkörper kleiner als 297,9 oder größer als 302,1 ist, dann soll das Feld rot werden. Bei gemessener Bauhöhe zwischen den beiden Werten soll der Text schwarz bleiben.
Gruß Robby
Hallo Robby,
so müsste es funktionieren:
Private Sub gem_BH__mm__AfterUpdate()
'Dim gem_BH_mm As Long
If me![gem_BH_mm] <297.5 or me![gem_BH_mm] > 302.5 Then
me!gem_BH_mm.BackColor = RGB(255, 0, 0)
Else
me!gem_BH_mm.BackColor = RGB(255, 255, 255)
End If
End Sub
Gruß
Johann
Hallo Johann,
erstmal danke für deine Antwort.
Leider funktioniert das auch nicht so richtig, jetzt kommt zwar nicht mehr "Fehler beim Kompilieren" sondern Laufzeitfehler 2465 "Microsoft Access kann das von Ihnen angesprochene Feld "gem_BH_mm nicht finden.
Gruß Robby
Hallo,
vermutlich lauten die Namen der Felder nicht so, wie Du sie schreibst...
gem_BH_ mm.
"Private Sub gem_BH__mm__AfterUpdate()"
lässt auf einen Namen schliessen, der
gem_BH_.mm.
oder
gem_BH_ mm.
heißen könnte.
Heißt das Feld [gem_BH_mm] (Eckklammern hier nur zur Verdeutlichung) , dann sollte sowas funktionieren:
Private Sub gem_BH_mm_AfterUpdate()
If Me![gem_BH_mm] < 297.5 or Me![gem_BH_mm] > 302.5 Then
Me![gem_BH_mm].BackColor = RGB(255, 0, 0) 'oder auch vbRed
Else
Me![gem_BH_mm].BackColor = RGB(255, 255, 255) oder auch vbWhite
End If
End Sub
Hallo Franz,
danke für deine Hilfe. Mit deiner Lösung bekomme ich jetzt keine Fehler mehr angezeigt, aber irgendwie verfärbt es die Werte noch nicht wenn sie außerhalb der Toleranz liegen. Hast du einen Ansatz woran das liegen könnte, bzw. wie man das jetzt noch hinbekommt???
Danke im Voraus
Robby
Hallo,
wird die Funktion überhaupt aufgerufen?
Setz einen Haltepunkt an den Anfang des Codes und ändere mal den Inhalt des Feldes, bzw. gebe einen ein..
Wenn die Funktion nicht aufgerufen wird, dürfte die Textfeld-Eigenschaft "Nach Aktualisierung" nicht den Eintrag "[Ereignisprozedur]" aufweisen, oder die Namen sind immer noch nicht korrekt...