Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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
Inhaltsverzeichnis

wenn Zeilen löschen etwas auslösen soll...

wenn Zeilen löschen etwas auslösen soll...
Jörg-HH
Hallo zusammen,
wenn eine Msgbox erscheinen soll, falls in einem bestimmten Bereich Zeilen gelöscht werden - wie muß ich nach dem Ereignis fragen?
mal ganz unbedarft ungefähr so...
If Not Application.Intersect(Target, Range("a1:iv14")) Is Nothing Then
If "du löschen Zeilen" then
MsgBox "darfst du nicht!"
end if
end if
Grüße - Jörg

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: wenn Zeilen löschen etwas auslösen soll...
15.08.2010 19:25:36
JogyB
Hallo Jörg,
geht meines Wissens nicht. Es wird einfach das Change-Ereignis ausgelöst, Du könntest höchstens mit einem Wert in einer Referenzzelle (die sich natürlich nicht ändern darf) prüfen, ob sich irgendwas verschoben hat.
Gruß, Jogy
AW: wenn Zeilen löschen etwas auslösen soll...
15.08.2010 19:35:44
Josef

Hallo Jörg,
direkt geht das nicht, aber du kannst dem Bereich in dem das Löschen verboten sein soll, einen Namen (z.B. A1:IV14 Name = "_bereich") geben und dann folgenden Code probieren.

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Range("_bereich").Rows.Count <> 14 Then
    MsgBox "Nö nö!"
    Application.Undo
  End If
End Sub

Gruß Sepp

Anzeige
etwas unsicher ...
15.08.2010 20:28:55
Matthias
Hallo Sepp
Finde ich persönlich zu unsicher.
Ich habe zwar keine Lösung, wollte aber wenigstens auf Folgendes hinweisen.
Nehmen wir mal den Bereich A1:A14 und vergeben diesem Bereich den Namen "_Bereich"
Ich könnte ja nun einfach Zeile 7 markieren und eine leere Zeile einfügen.
Im Folgenden lösche ich dann z.B. ich die Zeile 10.
Range("_bereich").Rows.Count ist dann wieder 14
Unschön, denn dann sind die Daten die wir ja schützen wollten (im Bsp. aus Zeile10) im Nirwana.
Gruß Matthias
AW: etwas unsicher ...
15.08.2010 20:30:41
Josef

Hallo Matthias,
mein Code vehindert aber auch das einfügen von Zeilen.

Gruß Sepp

Anzeige
hab Versionsunterschiede festgestellt ...
15.08.2010 21:03:20
Matthias
Hallo Sepp
Grundsätzlich hat mir Dein Lösungsvorschlag gefallen, deshalb hatte ich ihn ja auch ausprobiert.
Hatte es aber unter XL2000 getestet, da verhält sich Excel, so wie ich es beschrieben habe :(
Habe nun nochmal erfolgreich unter XL2007 getestet. Da klappt alles einwandfrei :o)
Gruß Matthias
klappt...
15.08.2010 22:24:20
Jörg-HH
Hallo zusammen,
Sepps Lösung klappt in einer Übungsdatei. Bei meiner Arbeitsdatei mit einer sehr langen Change-Prozedur wirbelt es zwar etwas Staub auf, daß das Undo wiederum selbst ein Change auslöst, aber damit kann ich leben. Es tritt ja ohnehin eher selten auf - ist nämlich nur eine Verhinderung, daß ich mir selbst unnötig Arbeit mache, indem ich verpenne, daß ich im oberen Teil der Tabelle nichts löschen darf, weil Bezüge im Code stehen.
Dankle und Grüße - Jörg
Anzeige
AW: klappt...
15.08.2010 23:28:03
Josef

Hallo Jörg,
"da das Undo wiederum selbst ein Change auslöst"
dann ersetze Application.Undo einfach mit
With Application
  .EnableEvents = False
  .Undo
  .EnableEvents = True
End With

dann wird das Change-Ereignis nicht aufgerufen.

Gruß Sepp

Anzeige
ah...ja...
16.08.2010 00:13:57
Jörg-HH
...danke, Sepp - mit bissl mehr Nachdenken hätte ich auch bei meinem VBA-Level selbst drauf kommen sollen :-)
Schöne Woche!
Jörg

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige