Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Variable nicht definiert

Begonnen von robsonlele, September 28, 2012, 09:02:40

⏪ vorheriges - nächstes ⏩

robsonlele

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

MzKlMu

#1
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.
Gruß Klaus

robsonlele

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

Jonny

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

robsonlele

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

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

robsonlele

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

DF6GL

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...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access