Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

A00 VBA: Value-Eigenschaft wird einfach ignoriert

22 views
Skip to first unread message

Matthias Becker

unread,
Oct 22, 2004, 3:54:34 PM10/22/04
to
Hallo NG!

Habe folgenden Code eingegeben:

Option Compare Database
Option Explicit

Private Sub Form_Load() ' Beim Laden
Me.Caption = "Einführungsbeispiel in Access Basic" ' Beschriftung
Me.RecordSource = "Personen" ' Datenherkunft
Me.ScrollBars = 0 ' Bildlaufleisten
Me.RecordSelectors = False ' Datensatzmarkierer
Me.DividingLines = False ' Trennlinien
Text0.ControlSource = "Nachname" ' Steuerelementinhalt
Text1.ControlSource = "Vorname" ' dto.
Text2.ControlSource = "Geburtsdatum" ' dto.
Text2.Format = "dd/mm/yyyy" ' Format-Eigenschaft
Text3.ControlSource = "Monatsgehalt" ' Steuerelementinhalt
Text3.Format = "Currency" ' Format
Text4.ControlSource = "=Year(Date())-Year([Geburtsdatum])" '
Steuerelementinhalt
Text5.ControlSource = "=12*[Monatsgehalt]" '
Steuerelementinhalt
Text5.Format = "Currency" ' Format
End Sub

Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung
If Text3.Value > 10000 Then Beep
MsgBox "Gehalt überprüfen!"
End Sub

Private Sub Befehl0_Click() ' Beim Klicken
DoCmd.Close
End Sub

Egal welchen Wert ich im Text3 Feld eingegeben habe - es erscheint immer die
Messagebox und nicht wie vorgegeben erst ab > 10000.

Ich kann keinen Fehler erkennen, könnt Ihr was entdecken?

Freundliche Grüße aus München

Matthias


Mark Doerbandt

unread,
Oct 22, 2004, 4:00:49 PM10/22/04
to
Hallo, Matthias,

* Matthias Becker (Fr, 22 Okt 2004 19:54:34 GMT):

> Private Sub Text3_BeforeUpdate(Cancel As Integer)

> If Text3.Value > 10000 Then Beep
> MsgBox "Gehalt überprüfen!"
> End Sub

> Egal welchen Wert ich im Text3 Feld eingegeben habe - es


> erscheint immer die Messagebox und nicht wie vorgegeben erst ab
> > 10000.

Schau Dir mal in der Online-Hilfe das Stichwort "Value" genau an.
Da steht unter anderem:

Die Eigenschaft Text gibt die formatierte Zeichenfolge zurück.
Die
Einstellung dieser Eigenschaft kann sich von der Einstellung der
Eigenschaft Value für ein Textfeld-Steuerelement unterscheiden.
Die
Eigenschaft Text entspricht dem aktuellen Inhalt des
Steuerelements.
Die Eigenschaft Value entspricht dem gespeicherten Wert des
Textfeld-Steuerelements.

Da Du BeforeUpdate bist, ist das Feld /noch nicht/ gespeichert.

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beiträge senden.

Peter Linke

unread,
Oct 22, 2004, 3:58:05 PM10/22/04
to
Hallo Matthias,
versuche es doch mal so,

If Text3.Value > 10000 Then
Beep
MsgBox "Gehalt überprüfen!"

endif

Gruß Peter


"Matthias Becker" <matt...@msn.com> schrieb im Newsbeitrag
news:41796577$0$22616$9b4e...@newsread4.arcor-online.net...

Matthias Becker

unread,
Oct 22, 2004, 4:15:43 PM10/22/04
to
Hallo Peter

> versuche es doch mal so,
>
> If Text3.Value > 10000 Then
> Beep
> MsgBox "Gehalt überprüfen!"
> endif

End If erzeugt hier den Fehler "End If ohne If-Block" :-(

Grüße

Matthias


Matthias Becker

unread,
Oct 22, 2004, 4:20:38 PM10/22/04
to
Hallo Mark,

> Da Du BeforeUpdate bist, ist das Feld /noch nicht/ gespeichert.

Wenn ich im Eigenschaften-Fenster im Ereignis "Vor Aktualisierung" ein Makro
einsetze:

Bedingung: [Monatsgehalt]>10000
Aktion: Meldung
Meldung: Gehalt überprüfen

funktioniert das ganze tadellos.

Wenn ich Dich richtig verstanden habe, muss ich also bei der VBA-Lösung
einen anderen Eventhandler verwenden?

Grüße

Matthias


Mark Doerbandt

unread,
Oct 22, 2004, 4:25:23 PM10/22/04
to
Hallo, Matthias,

* Matthias Becker (Fr, 22 Okt 2004 20:20:38 GMT):

> Wenn ich Dich richtig verstanden habe, muss ich also bei der
> VBA-Lösung einen anderen Eventhandler verwenden?

Nein, nimm .Text ...

Matthias Becker

unread,
Oct 22, 2004, 4:33:43 PM10/22/04
to
Hallo Mark,

> Nein, nimm .Text ...

Ich wünschte, ich könnte was Anderes berichten, aber das Problem bleibt auch
nach dieser Änderung (If Text3.Text > 10000 Then Beep) bestehen.

Das gibt's doch gar nicht, oder?

Grüße

Matthias


Josef Poetzl

unread,
Oct 22, 2004, 4:49:00 PM10/22/04
to
Hallo!

Mark Doerbandt schrieb:


> * Matthias Becker (Fr, 22 Okt 2004 19:54:34 GMT):
>> Private Sub Text3_BeforeUpdate(Cancel As Integer)
>> If Text3.Value > 10000 Then Beep
>> MsgBox "Gehalt überprüfen!"
>> End Sub

<F1> If

=>
If <Bedingung> Then
Anweisung 1
Anweisung 2
End If

> Da Du BeforeUpdate bist, ist das Feld /noch nicht/ gespeichert.

Hast Du das ausprobiert?
Bei mir kommt der zuvor eingetragene Wert schon im
BeforeUpdate-Ereignis.
(.Value = .Text)

mfg
Josef

--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Mark Doerbandt

unread,
Oct 22, 2004, 6:43:00 PM10/22/04
to
Hallo, Josef,

* Josef Poetzl (Fr, 22 Okt 2004 20:49:00 GMT):

> <F1> If

Ja, aber das hatte Matthias ja schon angemerkt.

> Hast Du das ausprobiert?
> Bei mir kommt der zuvor eingetragene Wert schon im
> BeforeUpdate-Ereignis.
> (.Value = .Text)

Aechz. Ja, Du hast Recht. In /Change/ ist es wie von mir, in
BeforeUpdate so wie von Dir beschrieben (ich gehe jetzt lieber
schlafen).

Matthias Becker

unread,
Oct 23, 2004, 5:58:17 AM10/23/04
to
Hallo zusammen,

Danke nochmal für Eure Unterstützung!

Habe das Problem gefixt, wenn mir die Hintergründe auch nicht ganz klar
sind:

Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung

If Text3.Value > 10000 Then MsgBox "Gehalt überprüfen!"
End Sub

D.h. ich habe das "Beep" gelöscht und die Zeile mit der MsgBox eine Zeile
höher rangehängt.

Jetzt funktioniert's, auch wenn's für mich total unsinnig ist, aber gut
:-)

Grüße

Matthias


Thomas Möller

unread,
Oct 23, 2004, 6:25:08 AM10/23/04
to
Hallo Matthias,

Matthias Becker <matt...@msn.com> schrieb:


>> Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung

>> If Text3.Value > 10000 Then Beep


>> MsgBox "Gehalt überprüfen!"
>> End Sub

> Habe das Problem gefixt, wenn mir die Hintergründe auch nicht ganz
> klar sind:
> Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor
> Aktualisierung If Text3.Value > 10000 Then MsgBox "Gehalt
> überprüfen!"
> End Sub
> D.h. ich habe das "Beep" gelöscht und die Zeile mit der MsgBox eine
> Zeile höher rangehängt.

das lag an Deiner Bedingung. So wie Du es zuerst formulierst hattest, wurde,
wenn Gehalt größer 10000, ein Beep ausgelöst. Die Zeile mit der MsgBox war
unabhängig von der Bedingung und wurde auf jeden Fall ausgeführt.
Du könntest Deine Code wie folgt ändern:

Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung
If Text3.Value > 10000 Then

Beep
MsgBox "Gehalt überprüfen!"
End If
End Sub

HTH
--
Thomas

Homepage: www.team-moeller.de

TM-VBAZeilenNummerieren: Version 1.20 (seit 20.09.04)
Add-In: Fügt Zeilennummern in VBA-Code ein.


Matthias Becker

unread,
Oct 23, 2004, 6:48:58 AM10/23/04
to
Hallo Thomas,

>das lag an Deiner Bedingung. So wie Du es zuerst formulierst hattest,
>wurde,
>wenn Gehalt größer 10000, ein Beep ausgelöst. Die Zeile mit der MsgBox war
>unabhängig von der Bedingung und wurde auf jeden Fall ausgeführt.

Danke für die Erklärung - hab ich gleich mal ausprobiert und jetzt hab ich
das auch richtig verstanden und wieder was dazugelernt :-)

Gruß

Matthias


0 new messages