Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Worksheet-Change Event

Worksheet-Change Event
10.10.2018 09:08:57
JohnM.
Hallo liebe Community,
am 21.09. habe ich schon einmal dieses Thema aufgemacht. Leider kann ich im ursprünglichen Thread gerade nichts ergänzen. Deshalb leider der neue Thread:
Damals habe ich folgenden Sachverhalt beschrieben:
"In den Zellen A1 bis A10 können jeweils Kontonummern eingetragen werden und die dazugehörigen Geldbeträge werden dann von A11 bis A21 wiedergegeben. Ich möchte nun erreichen, dass sobald eine Kontonummer eingegeben wird, im unteren Bereich ab A11 der Wert zunächst auf "0" gesetzt wird, da der Wert im Anschluss geändert werden soll. Sprich wenn ich in A1 eine Kontonummer eingebe, soll in A11 "0" erscheinen und wenn in A2 eine Kontonummer eingegeben wird, soll in A12 "0" erscheinen und so weiter.
Im Anschluss soll der Benutzer in der Lage sein, die "0" problemlos zu ändern, ohne dass dabei ein Loop entsteht."

Hiebei habe ich folgende Code implementiert, der auch super geholfen hat:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCell As Range
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
Application.EnableEvents = False
For Each rCell In Intersect(Target, Range("A1:A10"))
rCell.Offset(10) = 0
Next rCell
Application.EnableEvents = True
End If
End Sub
-> Jetzt müsste jedoch noch eine Kleinigkeit ergänzt werden. Und zwar kann es vorkommen, dass Benutzer erst Beträge in die Zellen ab A11 eingeben und dann die dazugehörigen Kontonummern ab A1 eingeben. Im Falle der Eingabe der Kontonummer springt der Geldbetrag logischerweise aufgrund des Change_Events wieder auf 0, obwohl der Nutzer den richtigen Betrag eingegeben hat.
Gibt es eventuell eine Möglichkeit, dass in den Fällen, bei denen erst der Geldbetrag eingegeben wird und dann die Kontonummer, der Geldbetrag nicht auf Null springt, sondern den eingegebenen Geldbetrag beibehält?
Vielen lieben Dank im Voraus für eure Mühe!
Liebe Grüße
John
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet-Change Event
10.10.2018 09:40:22
hary
Moin
Eine Moeglichkeit.
'--wenn Zelle ist leer dann Null sonst Wert der Zelle
rCell.Offset(10) = IIf(rCell.Offset(10) = "", 0, rCell.Offset(10))

gruss hary
AW: Worksheet-Change Event
10.10.2018 11:00:17
JohnM.
Hallo!
Vielen Dank,
aber wo genau würde ich die Code-Passe im Code einfügen?
Liebe Grüße
Anzeige
AW: Worksheet-Change Event
10.10.2018 11:18:34
hary
Moin
In deinem Code diese Zeile:
 rCell.Offset(10) = 0

ersetzen durch:
rCell.Offset(10) = IIf(rCell.Offset(10) = "", 0, rCell.Offset(10))

gruss hary
AW: Worksheet-Change Event
10.10.2018 11:38:26
JohnM.
Hallo!
Es klappt wunderbar, herzlichen Dank, dass du das so schnell lösen konntest, Respekt!
:)
Liebe Grüße
Anzeige
AW: Worksheet-Change Event
16.10.2018 20:55:53
John
Hallo liebe Community :)
Nur noch ne kleine Ergänzungsfrage:
Der Code funktioniert mit offset prima.
Nun habe ich aber auch den Fall, bei dem nur eine Kontonummer (C1) und nur ein dazugehöriger Betrag (C2) einzugeben ist. Hier besteht dann auch das Problem, dass wenn der User erst den Betrag eingibt und dann die Kontonummer, der Betrag wieder auf Null springt.
Hier ist meine aktuelle Code-Passage:
If Not Intersect(Target, Range("C1")) Is Nothing Then
Application.EnableEvents=False
For Each rcell In Intersect(Target, Range("C1"))
Range("C2").Select
Range("C2").Value = 0
Next rcell
Application.EnableEvents = True
Exit Sub

Diese Code-Passage würde ich gerne so anpassen, dass auch erst der Betrag eingegeben werden kann und dann die Kontonummer, ohne dass der Betrag wieder auf Null springt.
Vielen Dank im Voraus!
Liebe Grüße
John
Anzeige
AW: Worksheet-Change Event
16.10.2018 23:18:34
Gerd
Moi John!
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C2")) Is Nothing Then
If Target.Address(0, 0, xlA1) = "C1" Then
If IsEmpty(Range("C2")) Then Range("C2").Select
ElseIf Target.Address(0, 0, xlA1) = "C2" Then
If IsEmpty(Range("C1")) Then Range("C1").Select
End If
End If
End Sub

Gruß Gerd
Anzeige
AW: Worksheet-Change Event
17.10.2018 20:12:37
John
Hallo Gerd!
1A, vielen herzlichen Dank!

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige