Feld mit Eingabeformat per VBA leeren

Hallo,

ich möchte den Text einer Textbox(die sich auf einem Formular befindet) per VBA leeren (sodass der Text = „“ ist).
Mit txtPrj.text = „“ klappt es nicht, da er das benutzerdefinierte Eingabeformat „##-###“ erwartet.
Bei txtPrj.text = „##-###“ sagt er ich würde ungültige Zeichen eingeben.
txtPrj.text = Empty klappt auch nicht.

Bin am verzweifeln!

Phil

Hallo Phil,

Bin am verzweifeln!

bevor du den Arzt rufst:

NICHTS heißt in VBA = NULL

Du willst dein Feld mit NICHTS vorbelegen, also:

me.Meinfeld = null

wenn’s denn mit einem Bindestrich sein soll, gib dem Feld was es haben will:

me.Meinfeld = " - "

Wie du sehen kannst, kein Grund zu verzweifeln :smile:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang!

Vielen Dank für deine Hilfe!
Sorry, das erst jetzt ein Feedback kommt, war übers WE weg.

NICHTS heißt in VBA = NULL

Danke, hat super geklappt!
Weis auch nicht wieso ich da nicht drauf kekommen bin… War wohl einfach zu durcheinander am Freitag…
Meinfeld.text = Null hatte ich schon und
Meinfeld = Empty auch schon.
Hat einfach immer nur Fehlermeldungen gehagelt…
Arbeite normalerweise mit VB 6, da laufen mir Null und Empty ziemlich selten über den Weg, höchstens mal ein Nothing.
Und was der Unterschied zwischen „Meinfeld = Wert“ und „Meinfeld.Text = Wert“ ist hab ich noch nicht so ganz begriffen…

Also vielen Dank nochmal, Grüße,

Phil

Grundregel: Access-VBA ist nicht VB.

Ein Access-Textfeld hat (zwar auch) die Text-Eigenschaft (Datentyp String) und die Value-Eigenschaft (Datentyp Variant). Die Text-Eigenschaft entspricht dem eingegebenen Text, die Value-Eigenschaft (zumindest nach dem Speichern und im Falle eines gebundene Textfelds) den Daten in dem jeweiligen an das Textfeld gebundenen Tabellenfeld.

Und da ein „leeres Tabellenfeld“ in aller Regel den Wert NULL enthält, sollte man auch Formularfelder immer durch Zuweisen von NULL an die Value-Eigenschaft leeren. (Man kann die Tabelle auch so einstellen, dass die Tabellenfelder Leerstrings [„leere Zeichenfolge“] aufnehmen können, davon ist aber in aller Regel abzuraten!)

Im Gegensatz zu VB ist die Value-Eigenschaft und nicht die Text-Eigenschaft die Default-Eigenschaft eines Textfelds - und auch hinsichtlich der Ereignisse und ihrer Reihenfolge unterscheiden sich Access und VB in vielen Punkten.

In aller Regel wird man in Access mit der Value-Eigenschaft und nicht mit der Text-Eigenschaft arbeiten - schon, weil die Text-Eigenschaft nur dann zur Verfügung steht, wenn das Textfeld den Fokus hat. Auch arbeitet man besser mit den BeforeUpdate- und AfterUpdate-Ereignissen (die VB gar nicht kennt).

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

Hallo Reinhard,

Danke für die Erkärung!

Grundregel: Access-VBA ist nicht VB.

Allerdings, wenn du mich fragst hat Access-VBA so seine Tücken!

In aller Regel wird man in Access mit der Value-Eigenschaft
und nicht mit der Text-Eigenschaft arbeiten - schon, weil die
Text-Eigenschaft nur dann zur Verfügung steht, wenn das
Textfeld den Fokus hat.

Danke, habe bisher fast immer die Text-Eigenschaft, die ich aus VB kenne verwendet. Hat mich schon so einige Nerven gekosstet, dass man jedes mal, wenn man darauf zugreift ein .SetFocus vorschieben muss…
Die Value Eigenschaft war mir etwas suspekt, die Sie nicht immer die aktuellen Daten enthällt. (Immer erst nach dem LostFocus-Ereigniss, wie ich jetzt weiss)
Werde mich jetzt mal ein Bischen umstellen.

Grüße aus dem Süden,

Phil