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

Worksheet_SelectionChange(ByVal Target As Range) diagnose delete

19 views
Skip to first unread message

Walther

unread,
Aug 27, 2009, 11:19:04 AM8/27/09
to
Hallo Ng!

Weiß jemand von Euch wie man diagnostizieren kann, dass der Anwender gerade
ein Zeile eingefügt bzw. gelöscht hat.

In Target habe ich nichts dergleichen gefunden.

Viele Grüße aus dem sonnigen München

Walther Lückemanmn

Alexander Wolff

unread,
Aug 27, 2009, 1:07:00 PM8/27/09
to
Die Tastatur von Walther wurde wie folgt gedr�ckt:
> Wei� jemand von Euch wie man diagnostizieren kann, dass der Anwender
> gerade ein Zeile eingef�gt bzw. gel�scht hat.

>
> In Target habe ich nichts dergleichen gefunden.

Deine Tabelle gehe bis Zeile 999.

A2: =ZEILE(A1) runterkopieren

=SUMMENPRODUKT((A2:A998)-(A1:A997))=ZEILEN(A2:A998)

WAHR: Zeilen weder neu noch gel�scht
FALSCH: Zeile(n) wurde(n) eingef�gt
#BEZUG!: Zeilen(n) wurde(n) gel�scht

Nicht vergessen, die Formel in A2 danach erneut runterzukopieren.

Das Ganze in einem Worksheet_Change-Ereignis verarbeiten.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2


Alexander Wolff

unread,
Aug 28, 2009, 2:46:21 AM8/28/09
to
Die Tastatur von Alexander Wolff wurde wie folgt gedr�ckt:

> Die Tastatur von Walther wurde wie folgt gedr�ckt:
>> Wei� jemand von Euch wie man diagnostizieren kann, dass der Anwender
>> gerade ein Zeile eingef�gt bzw. gel�scht hat.
>>
>> In Target habe ich nichts dergleichen gefunden.
>
> Deine Tabelle gehe bis Zeile 999.
>
> A2: =ZEILE(A1) runterkopieren
>
> =SUMMENPRODUKT((A2:A998)-(A1:A997))=ZEILEN(A2:A998)

Das sollte richtig im Beispiel hei�en
=SUMMENPRODUKT((A2:A999)-(A1:A998))=ZEILEN(A2:A999)

Mit einer zweiten Formel k�nnte man auch die (erste) Stelle zur�ckgeben, wo
eingef�gt oder gel�scht wurde - bei langen Listen recht sinnig.

> WAHR: Zeilen weder neu noch gel�scht
> FALSCH: Zeile(n) wurde(n) eingef�gt
> #BEZUG!: Zeilen(n) wurde(n) gel�scht
>
> Nicht vergessen, die Formel in A2 danach erneut runterzukopieren.
>
> Das Ganze in einem Worksheet_Change-Ereignis verarbeiten.

... oder selbst mit einem Makro ansto�en.

Walther

unread,
Aug 28, 2009, 3:29:01 AM8/28/09
to
Hallo Alexander,

erst mal vielen Dank.

Das haben wir schon befürchtet, dass man ein solches Hilfskonstrukt
verwenden muss.

Ich hab mich im Betreff natürlich vertippt, ich meinte das
Worksheet_Change-Ereignis.

Schade dass es kein "Worksheet_row_delete-Ereignis" u.s.w. gibt.

Trotzdem noch mal vilen Dank.

Walther Lückemann

"Alexander Wolff" schrieb:

> Die Tastatur von Alexander Wolff wurde wie folgt gedrückt:
> > Die Tastatur von Walther wurde wie folgt gedrückt:
> >> Weiß jemand von Euch wie man diagnostizieren kann, dass der Anwender
> >> gerade ein Zeile eingefügt bzw. gelöscht hat.


> >>
> >> In Target habe ich nichts dergleichen gefunden.
> >
> > Deine Tabelle gehe bis Zeile 999.
> >
> > A2: =ZEILE(A1) runterkopieren
> >
> > =SUMMENPRODUKT((A2:A998)-(A1:A997))=ZEILEN(A2:A998)
>

> Das sollte richtig im Beispiel heißen
> =SUMMENPRODUKT((A2:A999)-(A1:A998))=ZEILEN(A2:A999)
>
> Mit einer zweiten Formel könnte man auch die (erste) Stelle zurückgeben, wo
> eingefügt oder gelöscht wurde - bei langen Listen recht sinnig.
>
> > WAHR: Zeilen weder neu noch gelöscht
> > FALSCH: Zeile(n) wurde(n) eingefügt
> > #BEZUG!: Zeilen(n) wurde(n) gelöscht


> >
> > Nicht vergessen, die Formel in A2 danach erneut runterzukopieren.
> >
> > Das Ganze in einem Worksheet_Change-Ereignis verarbeiten.
>

> .... oder selbst mit einem Makro anstoßen.

Eberhard Funke

unread,
Aug 28, 2009, 2:51:35 PM8/28/09
to
Am Thu, 27 Aug 2009 08:19:04 -0700 schrieb Walther:

> Wei� jemand von Euch wie man diagnostizieren kann, dass der Anwender gerade
> ein Zeile eingef�gt bzw. gel�scht hat.

>
> In Target habe ich nichts dergleichen gefunden.


Hallo Walther,

Durch Einf�gen/L�schen von Zeilen kann man meines Wissens keine
Ereignisprozedur anstossen.

Vergib f�r eine Zelle unterhalb Deiner Tabelle einen Namen, z. B. f�r
A15 --> Test

In irgendeine Zelle (kann auch die benamste Zelle sein):

=WENN(ZEILE(Test)>15;"Zeile(n) eingef�gt";WENN(ZEILE(Test)<15;"Zeile(n)
gel�scht";""))

Einschr�nkungen:
1. wenn nach L�schen (Einf�gen) *einer* Zeile eine/mehrere weitere gel�scht
(eingef�gt) werden, dann kannst Du dies an der Meldung nicht mehr
erkennen (s. u.)
2. Wenn Zeilen gel�scht *und* eingef�gt werden, versagt die Methode
ebenfalls.

Abhilfe zu 1:

eine Batterie von Formeln
Du k�nntest auch eine ganze Batterie von Formeln f�r das L�schen bzw.
Einf�gen mehrerer Zeilen einbauen

=WENN(ZEILE(Test)=16;"eine Zeile eingef�gt";WENN(ZEILE(Test)=14;"eine Zeile
gel�scht";""))

=WENN(ZEILE(Test)=17;"zwei Zeilen eingef�gt";WENN(ZEILE(Test)=13;"zwei
Zeilen gel�scht";""))

usw.

--
Mit freundlichen Gr�ssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de

Eberhard Funke

unread,
Aug 28, 2009, 3:45:33 PM8/28/09
to
Am Fri, 28 Aug 2009 20:51:35 +0200 schrieb Eberhard Funke:


Hallo Walther,
>
> Durch Einf�gen/L�schen von Zeilen kann man meines Wissens keine
> Ereignisprozedur anstossen.
>

�ber einen Umweg geht es doch:

Wie zuvor vergibst Du einer Zelle unterhalb Deiner Tabelle den Namen: Test.
-----------------------
In das Modul von "Diese Arbeitmappe" kopierst Du den Code:
Private Sub Workbook_Open()
intTest = Range("Test").Row
End Sub
-----------------------
In ein ungebundenes (normales) Modul:
Public intTest As Integer
-----------------------
In das Modul des zu �berwachenden Tabellenblattes:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("Test").Row > intTest Then
MsgBox "Zeile eingef�gt"
ElseIf Range("Test").Row < intTest Then
MsgBox "Zeile gel�scht"
End If
intTest = Range("Test").Row
End Sub

Danach musst Du - zur Initialisierung - die Arbeitsmappe zun�chst
speichern, schliessen und wieder �ffnen.

Beim Einf�gen einer Zeile erscheint erst dann eine Meldung, wenn irgendwo
in der Tabelle etwas neu eingetragen wird. Da aber davon auszugehen ist,
dass der User eine Zeile neu einf�gt, um dort Eingaben zu machen, d�rfte
das kein Problem sein. Aber: you never know.

0 new messages