Zellen addieren, Wert in 'J' löschen

Hallo VBA Spezialisten,
hänge im Moment fest.

Laufzeitfehler ‚1004‘:
Die Methode ‚Range‘ für das Objekt_‚Worksheet‘ ist fehlgeschlagen.

Das Makro lief 3 bis 4 mal, dann nicht mehr. und jetzt noch
Laufzeitfehler. Rätselhaft!!

Weiss jemand die Lösung?
Mit Dank im Voraus.
Gruß Skaletti!

hier der Code:

Private Sub Worksheet\_Change(ByVal Target As Range)
With Target
 If .Count = 1 Then
 If Not Intersect(.Cells, Range("J2:J35,J37:J70,J72:J105,J107:J140")) Is Nothing Then
 Application.EnableEvents = False
 On Error Resume Next
 .Offset(0, -2).Value = .Offset(0, -4).Value - .Offset(0, -3).Value + .Value
 .Offset(0, -3).Value = .Offset(0, -3).Value - .Value
 .ClearContents
 On Error GoTo 0
 Application.EnableEvents = True
 End If
 End If
End With
End Sub

Laufzeitfehler ‚1004‘:
Die Methode ‚Range‘ für das Objekt_‚Worksheet‘ ist
fehlgeschlagen.

Das Makro lief 3 bis 4 mal, dann nicht mehr. und jetzt noch
Laufzeitfehler. Rätselhaft!!

hallo Skaletti,

K.A., bei mir lief der Code.

Referenziere mal genauer, also nicht
.Count
sondern .Cells.Count

Und nicht
If Not Intersect(.Cells,Range(…
sondern
If Not Intersect(Target,Range(…

So oder so, am besten kann ich helfen wenn du eine Beispielmappe hättest in der der Fehler wenn du dies das tust auftritt.
Wenn der Fehler jedesmal auftritt wenn du dies das tust, dann lade die mappe hoch und sage mir was „dies und das“ genau bedeutet, Step by Step.

Sporadische Fehler sind viel schwieriger zu lösen.

Ich habe deinen Code getestet mit Zahlen, Text und Fehlermeldungen wie Division durch Null in Jx, er klappte.

Gruß
Reinhard

Hallo Reinhard du Nachtschwärmer,
Danke für deine Antwort.
Habe das Makro geändert wie du vorgeschlagen hast. Es läuft aber
nicht.
Wenn es mal läuft, kommt der Laufzeitfehler wenn ich in den Spalten
F,G oder J eine Zahl eingeben möchte. Sehr Rätselhaft.
Habe dir hier eine Testmappe hochgeladen, vielleicht findest du des Rätsels Lösung.
Gruß Skaletti!

http://www.hostarea.de/server-10/Oktober-5ed41dd762.xls

Hallo Skaletti,

Habe das Makro geändert wie du vorgeschlagen hast. Es läuft
aber nicht.

du hast Punkte falsch gesetzt.

Wenn es mal läuft, kommt der Laufzeitfehler wenn ich in den
Spalten
F,G oder J eine Zahl eingeben möchte.

Glaub ich nicht, bei Eingaben inF,G kommt das Makro bis zum zweiten If, dann kommt gleich End If, End Sub.
Bei Eingaben in J klappt es bei mir.

http://www.hostarea.de/server-10/Oktober-5ed41dd762.xls

Private Sub Worksheet\_Change(ByVal Target As Range)
With Target
 If .Cells.Count = 1 Then
 If Not Intersect(Target, Range("J2:J35,J37:J70,J72:J105,J107:J140")) Is Nothing Then
 Application.EnableEvents = False
 On Error Resume Next
 .Offset(0, -2).Value = .Offset(0, -4).Value - .Offset(0, -3).Value + .Value
 .Offset(0, -3).Value = .Offset(0, -3).Value - .Value
 .ClearContents
 On Error GoTo 0
 Application.EnableEvents = True
 End If
 End If
End With
End Sub

Gruß
Reinhard

Hi Reinhard,
Vielen Dank für deine Hilfe.
Das Makro läuft jetzt.
Habe aber noch einen Denkfehler drin.
F= Wareneingang minus G= Warenausgang ergibt H=Bestand.
Diese Rechnung muss zuerst erfolgen,ohne J.
Wenn jetzt in F oder G hinzugefügt wird, muss wieder der
H = Bestand ausgerechnet werden,ohne J.
Der Rücklauf in Spalte J wird meistens 1 bis 2 Tage später
eingegeben, und muss dann bei H hinzugerechnet und bei G
abgezogen werden.
Ist das mit diesem Code überhaupt möglich? Ich hexe da als
Anfänger schon etwas länger mit rum.
Ist mit Formeln einfacher, aber ich kenne die Anwender die
diese Tabelle bedienen müssen, die löschen bestimmt immer
mal wieder eine Formel.Deshalb VBA.
Gruß Skaletti!

Hallo Skaletti,

F= Wareneingang minus G= Warenausgang ergibt H=Bestand.
Diese Rechnung muss zuerst erfolgen,ohne J.
Wenn jetzt in F oder G hinzugefügt wird, muss wieder der
H = Bestand ausgerechnet werden,ohne J.
Der Rücklauf in Spalte J wird meistens 1 bis 2 Tage später
eingegeben, und muss dann bei H hinzugerechnet und bei G
abgezogen werden.

Da sehe ich große Gefahren drin, da fehlt doch jedwede Möglichkeit nachzuprüfen ob die Daten stimmen. Ruckzuck hat man in J was Flasches eingegebn und zack ist es abgebucht und aus J verschwunden.

Wenn müßte man das anders angehen. Also ein Blatt wo man 4 Spalten hat,
Datum J G H
Dort gibt man chronologisch untereinader alle Buchungen ein. Im anderen Blatt, was schreibgeschützt ist, errechnet dann Vba die Mengen von G H.

Ist das mit diesem Code überhaupt möglich?

K.A., ich habe mir die anderen Codes nicht angeschaut.

Ist mit Formeln einfacher, aber ich kenne die Anwender die
diese Tabelle bedienen müssen, die löschen bestimmt immer
mal wieder eine Formel.Deshalb VBA.

Dazu muß man natürlich den Anwender dazu zwingen auch Makros zuzulassen, das geht schon.

So wie ich es sehe ist da noch reichlich zu tun um die Mappe vor den Anwendern zu schützen *gg* und die Buchungstaktik zu optimieren.
Und es gibt ja noch mehr Spalteh als G,H,J…
Das kriege ich zwar alles hin, aber nicht im Rahmen von w-w-w.

Wenn ich sage, an der Tabelle ist noch einiges zu tun, so ist das keinerlei Angriff auf dich. Du hast sie erstellt und wirst schon damit klarkommen.

Aber es sollen ja fremde Anwender sie benutzen. Und die klickn leider oft genau darum wo man nicht hinklicken sollte usw.
Die Tabelle dagegen zu schützen wird halt aufwendig.

Gruß
Reinhard

Hallo Reinhard,
vielen Dank für deine Hilfe und Anregungen.

Da sehe ich große Gefahren drin, da fehlt doch jedwede
Möglichkeit nachzuprüfen ob die Daten stimmen. Ruckzuck hat
man in J was Flasches eingegebn und zack ist es abgebucht und
aus J verschwunden.

Da hast du natürlich Recht.

Wenn müßte man das anders angehen. Also ein Blatt wo man 4
Spalten hat,
Datum J G H
Dort gibt man chronologisch untereinader alle Buchungen ein.
Im anderen Blatt, was schreibgeschützt ist, errechnet dann Vba
die Mengen von G H.

Das ist eine gute Idee, werde ich mal angehen. Möchte erstmal
selbst versuchen das hinzukriegen, nur so lernt man.
Wenn nötig werden zwischendurch bestimmt Fragen von mir kommen.

Wenn ich sage, an der Tabelle ist noch einiges zu tun, so ist
das keinerlei Angriff auf dich. Du hast sie erstellt und wirst
schon damit klarkommen.

Seh ich auch nicht als Angriff, im Gegenteil bin für jeden
Verbesserungsvorschlag Dankbar.

Aber es sollen ja fremde Anwender sie benutzen. Und die klickn
leider oft genau darum wo man nicht hinklicken sollte usw.
Die Tabelle dagegen zu schützen wird halt aufwendig.

Genau so ist es
Nochmals vielen Dank.
Melde mich bestimmt bald wieder im Forum.
Gruß Skaletti!

Excel Vba Benutzer zwingen Makros zu aktivieren
Hallo Skaletti,

hier ist ein Beispiel wie man Benutzer zwingen kann Makros zu aktivieren:

http://hajo-excel.de/vba_nur_makros.htm

Gruß
Reinhard