Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verständnisproblem

Verständnisproblem
19.06.2006 22:56:09
Emil
Hallo,
ich habe vor einiger Zeit hier im Forum sinngemäß folgenden Code bekommen:

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim z As Range
For Each z In Intersect(sh.UsedRange, Target)
If z.Column = 2 Then
MsgBox "ich bin in spalte 2"
ElseIf z.Column = 13 Then
MsgBox "ich bin in spalte 13"
End If
Next
End Sub

Der Code liegt in "DieseArbeitsmappe". Wenn ich jetzt auf einem Tabellenblatt in Spalte 2 oder in Spalte 13 einen Wert ändere erscheint erwartungsgemäß die entsprechende msgbox.
Wenn ich eine neue Zeile einfüge, erscheinen aber beide msgboxen. Das verstehe ich nicht! Kann mir das jemand erklären?
Gruß Emil

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verständnisproblem
19.06.2006 23:24:31
J.L.
Hallo Emil,
das liegt daran, dass in diesem Falle das Einfügen einer ganzen Zeile
als Änderung derselben, also als Änderung in Spalte 2 und 13 interpretiert wird.
Folglich kommen beide msgbox-Meldungen.
Willst du das unterbinden kannst du z.B. die Zeile
For Each z In Intersect(sh.UsedRange, Target)
If z.Column = 1 Then Exit For 'Verlassen der Schleife falls Zeile eingefügt wird
If z.Column = 2 Then
MsgBox "ich bin in spalte 2"
ElseIf z.Column = 13 Then
MsgBox "ich bin in spalte 13"
End If
Next
End Sub
einfügen.
Jörg
AW: Verständnisproblem
19.06.2006 23:28:13
Matthias
Hallo Emil,
Wenn du eine Zeile einfügst, werden ja die entsprechenden Zellen geändert.
Markiere z.B. eine Zeile und drücke "Entf", dann kommt die gleiche Meldung.
Allerdings ist Intersect(sh.UsedRange, Target) eine Formulierung, die bei mir beim Einfügen einer Zeile unterhalb der Daten den Wert Nothing zurückgibt und einen Laufzeitfehler provoziert.
Ich habe dies geändert in "For Each z In Target".
Du kannst auch an den Anfang der Prozedur mal ein "MsgBox Target.Address" setzen und schauen, was passiert.
Gruß Matthias
Anzeige
AW: Verständnisproblem
20.06.2006 08:57:06
Emil
Hallo Jörg, hallo Matthias,
vielen Dank für eure Antworten. Das hat mir sehr geholfen.
Gruß Emil

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige