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

Forumthread: Zeile löschen verhindern

Zeile löschen verhindern
04.05.2007 09:47:00
Ben
Guten Morgen Forum
Habe im Archiv folgenden Code gefunden, um das Löschen von Zeilen zu verhindern:

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, 6)  "Testeintrag" Then Application.Undo
End Sub


Nun meine simple Frage, da ich noch immer ein VBA-Greenhorn bin: Ich möchte Zeile 1 bis Zeile 45 schützten, indem ich in Spalte F bei diesen Zeilen jeweils "Testeintrag" reinschreibe und die Spalte ausblende. Dazu muss ich ja nicht die 2. Zeile des Codes 45 mal kopieren. Man muss wohl eine Schlaufe definieren, aber wie muss diese definiert sein?
Danke und Gruss
Ben

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen verhindern
04.05.2007 10:04:00
Jürgen
Hallo Ben
versuch es mal so:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row 


Gruß
Jürgen

AW: Zeile löschen verhindern
04.05.2007 10:41:24
Ben
Hallo Jürgen
Dein Code führt dazu, dass man bis Zeile 45 nichts mehr eingeben kann. Eingaben müssen aber möglich sein, nur soll man die Zeile nicht löschen können.
Mir schwebt etwas vor wie

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Integer
z = Rows(1, 45)
If Cells(z, 6)  "Testeintrag" Then Application.Undo
End Sub


Kriege es aber mit der Syntax nicht richtig hin.
Gruss
Ben

Anzeige
AW: Zeile löschen verhindern
04.05.2007 10:44:29
Jürgen
Hallo Ben,
kleiner Zusatz in Zeile 2:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row 


Gruß
Jürgen

AW: Zeile löschen verhindern
04.05.2007 11:04:36
Ben
Hallo Jürgen
Dein Code verhindert nicht, dass man Zeilen löschen kann.
Mir geht es eigentlich nur darum, wie ich die Schleife definieren muss, denn der Code funktioniert. Beispiel: Mit folgendem Code kann man die ersten 5 Zeilen nicht löschen, falls in Spalte F jeweils "Testeintrag" steht:

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, 6)  "Testeintrag" Then Application.Undo
If Cells(2, 6)  "Testeintrag" Then Application.Undo
If Cells(3, 6)  "Testeintrag" Then Application.Undo
If Cells(4, 6)  "Testeintrag" Then Application.Undo
If Cells(5, 6)  "Testeintrag" Then Application.Undo
End Sub


Das lässt sich aber mit einer Schleife eleganter lösen, da bin ich mir sicher. Nur, wie muss diese genau definiert sein?
Gruss
Ben

Anzeige
AW: Zeile löschen verhindern
04.05.2007 11:41:00
Jürgen
Hallo Ben,
hier Deine Schleife:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i as Integer
For i = 1 To 45
If Cells(i, 6)  "Testeintrag" Then Application.Undo
Next i
End Sub


Gruß
Jürgen

AW: Zeile löschen verhindern
04.05.2007 12:01:00
Ben
Hi Jürgen
Herzlichen Dank.
Jetzt funktionierts bestens.
Gruss
Ben
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilenlöschung in Excel verhindern


Schritt-für-Schritt-Anleitung

Um das Löschen von bestimmten Zeilen in Excel zu verhindern, kannst du den folgenden VBA-Code in das entsprechende Arbeitsblatt einfügen. Dieser Code überprüft, ob in Spalte F der Zeilen 1 bis 45 der Text "Testeintrag" steht. Falls jemand versucht, eine dieser Zeilen zu löschen, wird die Aktion zurückgenommen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das Arbeitsblatt aus, in dem du die Zeilenlöschung verhindern möchtest.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 1 To 45
        If Cells(i, 6).Value <> "Testeintrag" Then Application.Undo
    Next i
End Sub
  1. Schließe den VBA-Editor und teste die Funktionalität, indem du versuchst, eine der Zeilen zu löschen, in der "Testeintrag" steht.

Häufige Fehler und Lösungen

  • Fehler: Die Zeilen können nicht gelöscht werden.

    • Lösung: Stelle sicher, dass der Text "Testeintrag" in der richtigen Spalte und den richtigen Zeilen steht.
  • Fehler: Der Code funktioniert nicht wie gewünscht.

    • Lösung: Überprüfe, ob der Code im richtigen Arbeitsblatt eingefügt wurde und dass die Makros in Excel aktiviert sind.

Alternative Methoden

Eine alternative Methode, um das Löschen von Zeilen zu verhindern, ist die Verwendung von Zellschutz. Du kannst das Arbeitsblatt schützen und nur bestimmten Benutzern das Löschen erlauben. Hier sind die Schritte:

  1. Wähle die Zeilen aus, die du schützen möchtest.
  2. Klicke mit der rechten Maustaste und wähle „Zellen formatieren“.
  3. Gehe zum Tab „Schutz“ und deaktiviere „Gesperrt“.
  4. Aktiviere den Schutz des Arbeitsblatts über „Überprüfen“ > „Blatt schützen“ und lege ein Passwort fest.

Praktische Beispiele

Wenn du den oben genannten Code verwendest, kannst du sicherstellen, dass die Zeilen 1 bis 45 in deinem Arbeitsblatt nicht gelöscht werden können, solange in Spalte F "Testeintrag" steht. Du kannst diesen Code auch anpassen, um andere Zeilen oder Bedingungen zu verwenden.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 1 To 100 ' Beispiel: Schütze die ersten 100 Zeilen
        If Cells(i, 6).Value <> "Testeintrag" Then Application.Undo
    Next i
End Sub

Tipps für Profis

  • Verwende die Application.EnableEvents = False und Application.EnableEvents = True Befehle, um die Ereignisse während des Ausführens deines Codes zu deaktivieren. Dies kann helfen, unerwünschte Schleifen zu vermeiden.

  • Du kannst den Code weiter optimieren, indem du nur auf spezifische Änderungen reagierst, anstatt auf jede Zelle, die bearbeitet wird.


FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass ich in den geschützten Zeilen Daten eingeben kann? Du kannst den Zellschutz aktivieren und die Zellen, in denen Eingaben erlaubt sind, freigeben.

2. Warum kann ich die Zeilen nicht löschen? Wenn der Code korrekt implementiert ist und "Testeintrag" in der entsprechenden Spalte steht, wird das Löschen der Zeilen verhindert. Stelle sicher, dass die Bedingungen im Code erfüllt sind.

3. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2016, 2019 und Microsoft 365.

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