Cursor-Position speichern

Ich habe ein Endlosformular, wo ich in jeder Zeile den Gesamtpreis berechne. Es soll nun, wenn mit der linken Maustaste in irgendein Feld geklickt worden ist, der Gesamtpreis automatisch berechnet werden. Die Berechnung wird beim Drücken der Cursortasten,
der Return- und der Tab-Taste schon durchgeführt. Dadurch wird der Gesamtpreis entweder nicht berechnet oder der Cursor springt nicht in das Feld der Zeile, in dem mit der linken Maustaste geklickt worden ist.

Mit freundlichen Grüssen

Heiko Geiß

Hallo Heiko,

verrate uns doch erst mal, von welcher Programmiersprache Du redest. Ich vermute Excel-VBA, bin aber nicht sicher.

Wenn Du dann auch noch den Code, den Du schon fertig hast, mit postest, kann Jemand, der es versteht den Fehler finden, oder sehen, was Du bisher vergessen hast.

Gruß, Rainer

Ich programmiere in Access-VBA. Als Datenquele fürs Endlosformular habe ich eine Tabelle. Wenn man den Wert in der Zelle ändert und dann mit der Maustaste in eine andere Zeile springt, soll der Gesamtpreis automatisch berechnet werden, und dann soll in die Zeile reingesprungen werden, in die mit der linken Maustatse geklickt worden
ist.

Code:

private sub berechnen()
Dim rundung As Double
Dim letzt As String \* 1
Dim komma As Long
Dim rest1 As String
Dim rest2 As Long
Dim rest3 As Long

If feh5 = 0 Then
 feh5 = 2
 On Error GoTo we4
 DoCmd.GoToRecord , , acNext
 DoCmd.GoToRecord , , acPrevious

we4:

 Set db1 = CurrentProject.Connection
 rst1.Open "abfetikettenkunde" & benutzerid, db1, adOpenStatic, adLockPessimistic
 If rst1.EOF = False Then rst1.MoveFirst

 While rst1.EOF = False
 daten.Value = rst1!ETI\_id
 DoEvents

 rst1!epreisk = rst1!vkbrutto / (100 + rst1!mwst) \* 100

 rundung = Round(rst1!epreisk, 2)

 If rst1!mwst = 7 Then rundung = rundung \* (100 + rst1!mwst) / 100
 If rst1!mwst \> 7 Then rundung = rundung \* (100 + rst1!mwst) / 100
 If rst1!mwst = 0 Then rundung = rundung

 rundung = Round(rundung, 2)
 letzt = Mid(CStr(rundung), Len(CStr(rundung)), 1)
 komma = 0
 komma = InStr(1, CStr(rundung), ",")

 If komma = Len(CStr(rundung)) - 2 And komma \> 0 Then

 If letzt 5 Then
 rest1 = Mid(CStr(rundung), 1, Len(CStr(rundung)) - 2)
 rest2 = CLng(Mid(CStr(rundung), Len(CStr(rundung)) - 1, 1))

 If rest2 0 Then rst1!Aufschlag = Round(((rst1!epreisk - rst1!epreis) \* 100 / rst1!epreis), 0)
 rst1!rohertrag = (rst1!epreis + (rst1!Aufschlag \* rst1!epreis / 100)) - rst1!epreis

 rst1!eknettog = Round(rst1!Menge \* rst1!epreis, 2)
 rst1!vknettog = Round(rst1!Menge \* rst1!epreisk, 2)
 rst1!vkbruttog = Round(rst1!Menge \* rst1!vkbrutto, 2)

 rst1.Update
 rst1.MoveNext
 Wend

 rst1.Filter = ""
 rst1.Close
 db1.Close

 ID = ETI\_id.Value

 DoCmd.Requery

 Set db1 = CurrentProject.Connection
 rst1.Open "abfetikettenkunde" & benutzerid, db1, adOpenStatic, adLockPessimistic
 'rst1.Filter = "aktiv = 1"
 rst1.Sort = "bezeichnung, Topf, Höhe, Artikeltext"
 'Öffnen der Tabelle

 If rst1.EOF = False Then rst1.MoveFirst

 DoCmd.GoToRecord , , acFirst
 aid = 0

 Do
 aid = aid + 1
 If rst1!ETI\_id = ID Then Exit Do
 rst1.MoveNext
 Loop Until rst1.EOF = True
 'ID des Datensatzes ermitteln

 DoCmd.GoToRecord , , acGoTo, aid
 'Zum ausgewählten Artikel gehen

 GoTo we8

 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acPrevious
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext
 If ETI\_id.Value Val(ID) Then DoCmd.GoToRecord , , acNext

we8:
 rst1.Sort = ""
 rst1.Close
 db1.Close
 'Schliessen der Tabelle und der Datenbank

 Set db1 = CurrentProject.Connection
 rst1.Open "abfetikettenkundesummep" & benutzerid, db1, adOpenStatic, adLockPessimistic
 'Öffnen der Summenabfrage

 summeeknetto.Value = 0
 summevknetto.Value = 0
 summevkbrutto.Value = 0
 summerohertrag.Value = 0

 If rst1.EOF = False Then
 summeeknetto.Value = Round(rst1!eknettog, 2)
 summevknetto.Value = Round(rst1!vknettog, 2)
 summevkbrutto.Value = Round(rst1!vkbruttog, 2)
 summerohertrag.Value = Round(rst1!vknettog - rst1!eknettog, 2)
 End If
 'Holen der Summen

 rst1.Close
 db1.Close
 'Schliessen der Summenabfrage und der Datenbank

feh5 = 0

 On Error GoTo fehler

 If feh5 = 0 Then
 If feh9 2 Then
 'If feh9 = 6 Then Exit Sub

 DoCmd.GoToRecord , , acNext
 Else
 DoCmd.GoToRecord , , acFirst
 feh9 = 0
 Aufschlagg.SetFocus
 Exit Sub
 End If

 Aufschlag.SetFocus
 End If

End If

Exit Sub

fehler:
Aufschlagg.SetFocus

end sub

[MOD] Pre-Tags eingefügt.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]