Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile einfügen, Datenprüfung nicht übernehmen

Zeile einfügen, Datenprüfung nicht übernehmen
29.04.2014 11:10:30
Judith
Hallo Zusammen
Ich habe folgendes Problem und ich hoffe ihr könnt mir weiter helfen.
Ich habe eine Liste mit mehreren Spalten (A:P). Für die Spalten F, G, und H habe ich eine Datenüberprüfung vorgesehen, welche bei einer bestimmten Werteingabe eine Fehlermeldung an den Benutzer gibt (Gültigkeit). Die Datenüberprüfung habe ich aber nicht in allen Spalten bzw. Zeilen!!!
Das funktioniert auch wie gewünscht.
Wenn jetzt aber eine neue Zeile unterhalb einer Zeile mit Gültigkeit eingefügt wird, wird die Gültigkeit an die neue Zeile übergeben. Jetzt kann der Benutzer in die neue Zeile nichts mehr eingeben.
Das Blatt ist mit einem Passwort geschützt. Die Benutzer kennen das Passwort nicht.
Vielen Dank.
Gruss Judith
Dort können demzufolge keine Werte mehr eingegeben werden.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zeile einfügen, Datenprüfung nicht übernehmen
29.04.2014 11:20:53
EtoPHG
Hallo Judith,
Das es sich um eine Liste handelt, sollte der Inhalt von Spalten konsistent (d.h. gleich geartet) sein. Warum haben manche Zeilen eine Gültigkeitsprüfung und andere nicht? Kannst du eine Beispielmappe ins Forum stellen?
P.S. ein ähnliches Thema wurde ->weiter unten angesprochen.
Gruess Hansueli

Anzeige
AW: Zeile einfügen, Datenprüfung nicht übernehmen
01.05.2014 16:29:42
Judith
Hoi Hansueli
Danke für deine Rückmeldung.Ich glaube, um deine Fragen zu beantworten muss ich etwas ausholen. Eigentlich wollte ich etwas ganz anderes Realisieren und das mit der Gültigkeit war eher eine Notlösung, wo aber offentsichtlich auch nicht funktioniert.
Eigentlich hatte ich folgende Idee: wenn etwas in der Spalte eingetragen wird (was ist egal) sollten auf dieser Zeile drei Zellen für eine Eingabe gesperrt werden. Ich habe es mit VBA versucht, aber irgendwie hatte ich dann ein durcheinander mit dem Blattschutz. Mit VBA wäre eigentlich die Ideallösung gewesen.
Ich habe dann wie gesagt zur Notlösung gegriffen und die Zellen von Hand per Gültigkeit gesperrt. Ich habe diese Variante gewählt, weil es noch den schönen Nebeneffekt mit der eigenen Fehlermeldung gegeben hat. Ich könnte natürlich auch die Zellen normal im Dialog "Zelle formatieren / Schutz" sperren. Aber da habe ich noch nicht ausprobiert, ob dann die Formatierung beim neue Zeile einfügen wieder mit übergeben wird.
Das nicht alle Zeilen eine Gütigkeitsprüfung haben liegt an dem Sachverhalt selber und natürlich meiner Notlösung. Die Benutzer dürfen zu jeder Zeit die Zelleninhalte der Liste ändern und Zeilen neu hinzufügen dürfen. Ausser eben es wird in der einen Spalte etwas eingetragen. Dann ist der Auftrag abgeschlossen und nicht mehr änderbar.
Gerne kann ich auch ein Beispiel hochladen.
Grüsse Judith

Anzeige
AW: Zeile einfügen, Datenprüfung nicht übernehmen
01.05.2014 16:46:44
EtoPHG
Hallo Judith,
Ein VBA Code (im Tabellenblatt für das die Restriktion gilt) könnte als Beispiel so lauten:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rc As Range
If Target.Column = 5 Then   ' Eingaben in Spalte 5 (E) werden geprüft
Application.EnableEvents = False
' Blattschutz aufheben
Unprotect "myPassword"
For Each rc In Target
' Zellen in Spalte 6-8 (F,G,H) in dieser Zeile werden gesperrt
Range(Cells(rc.Row, 6), Cells(rc.Row, 8)).Locked = Not IsEmpty(rc)
Next rc
' Blattschutz wieder einschalten
Protect "myPassword"
Application.EnableEvents = True
End If
End Sub
Du musst also nur die Zahlen der Spalten im Code richtig setzen und das Blattschutz-Passwort. Wenn der Code-Kommentar zu ungenügend ist, melde dich.
Gruess Hansueli

Anzeige
AW: Zeile einfügen, Datenprüfung nicht übernehmen
05.05.2014 09:11:29
Judith
Hoi Hansueli
Danke für den Code. Er funktioniert. Leider geht er aber nur für aktive Eingaben. In der Spalte 5 stehen aber teilweise bereits Werte drin, dann müssten die Spalten (6-8) schon gesperrt sein. Aber immerhin bin ich jetzt meiner Lösung schon einen riesen Schritt weiter. Vielen Dank dafür!!!!!
Gruss Judith

Anzeige
Dann korrigieren wir auch noch das leider,
05.05.2014 09:57:07
EtoPHG
Judith,
Diesen Code zusätzlich in das Tabellenblatt:
Private Sub Worksheet_Activate()
Dim rc As Range
Application.EnableEvents = False
' Blattschutz aufheben
Unprotect "myPassword"
For Each rc In Range(Cells(2, 5), Cells(Rows.Count, 5).End(xlUp))
Range(Cells(rc.Row, 6), Cells(rc.Row, 8)).Locked = Not IsEmpty(rc)
Next rc
' Blattschutz wieder einschalten
Protect "myPassword"
Application.EnableEvents = True
End Sub
Wieder: Im Code das Passwort richtig anpassen.
Zurück zur Arbeitsmappe in Excel und zu einem anderen Tabellenblatt wechseln.
Wieder zurück zu diesem Tabellenblatt.
Jezt kannst du den zusätzlichen Code wieder löschen. Alle Zeilen sollten jetzt richtiggestellt sein.
Gruess Hansueli

Anzeige
AW: Dann korrigieren wir auch noch das leider,
05.05.2014 11:34:45
Judith
Hoi Hansueli
Leider gab es einen Fehlermeldung. Laufzeitfehler 1004, Die Locked-Eigenschaft des Range-Objektes kann nicht festgelegt werden. Ich muss dazu noch sagen, dass die zu prüfende Spalte die Nr. 15 ist, nicht 5.
Gruss Judith

AW: Dann korrigieren wir auch noch das leider,
05.05.2014 11:55:45
EtoPHG
Hallo Judith,
Sind irgendwo verbundene Zellen in den Spalten, die gesperrt werden müssen?
Hier ein Code, der darauf hinweist, in welcher/n Zeile/n der Fehler vorliegt.
Private Sub Worksheet_Activate()
Dim rc As Range
Application.EnableEvents = False
' Blattschutz aufheben
Unprotect "myPassword"
On Error Resume Next
For Each rc In Range(Cells(2, 15), Cells(Rows.Count, 15).End(xlUp))
Range(Cells(rc.Row, 6), Cells(rc.Row, 8)).Locked = Not IsEmpty(rc)
If Err.Number > 0 Then
MsgBox "In Zeile " & rc.Row & " scheint ein Fehler vorzuliegen!", vbCritical
Err.Clear
End If
Next rc
On Error GoTo 0
' Blattschutz wieder einschalten
Protect "myPassword"
Application.EnableEvents = True
End Sub

Gruess Hansueli

Anzeige
AW: Dann korrigieren wir auch noch das leider,
05.05.2014 14:15:09
Judith
Hoi Hansueli
Ich habe das Skript durchlaufen lassen, es waren tatsächlich verbundene Zeilen enthalten.
Das Skript funktioniert 100 %. Echt super! Vielen vielen Dank.
Ich hatte zwar in der Spalte 15 eine Formel stehen (Formel wenn ... ansonsten "", daher die leeren Zellen), aber das wird wahrscheinlich bereits als Zelleninhalt angesehen. Wenn die Formel draussen ist, funktioniert das Skript. Werde dem Fall den Kompromiss eingehen und die Formeln löschen.
Herzliche Grüsse aus Schwyz
Jduith
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeile einfügen und Datenprüfung in Excel richtig anwenden


Schritt-für-Schritt-Anleitung

  1. Datenüberprüfung einrichten:

    • Wähle die Zellen in den Spalten F, G und H aus, für die Du eine Datenprüfung hinzufügen möchtest.
    • Gehe zu Daten > Datenüberprüfung.
    • Wähle die gewünschten Kriterien aus (z.B. Werte müssen zwischen 1 und 100 liegen).
    • Vergiss nicht, eine Fehlermeldung festzulegen, falls die Eingabe ungültig ist.
  2. Passwortschutz aktivieren:

    • Schütze die Arbeitsmappe mit einem Passwort, um sicherzustellen, dass Benutzer keine Änderungen an der Struktur vornehmen können. Gehe zu Überprüfen > Blatt schützen.
  3. Zeilen einfügen:

    • Um eine Zeile einzufügen, klicke mit der rechten Maustaste auf die Zeilennummer, wo Du eine neue Zeile hinzufügen möchtest, und wähle Zeile einfügen.
    • Beachte: Wenn Du versuchst, eine Zeile unterhalb einer Zelle mit Datenprüfung einzufügen, kann es sein, dass die neue Zeile die Gültigkeit übernimmt.
  4. VBA-Code zur Automatisierung:

    • Verwende den folgenden VBA-Code, um sicherzustellen, dass die Datenprüfung und das Sperren von Zellen korrekt funktionieren:
      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rc As Range
      If Target.Column = 15 Then   ' Eingaben in Spalte 15 (O) werden geprüft
         Application.EnableEvents = False
         Unprotect "myPassword"
         For Each rc In Target
             Range(Cells(rc.Row, 6), Cells(rc.Row, 8)).Locked = Not IsEmpty(rc)
         Next rc
         Protect "myPassword"
         Application.EnableEvents = True
      End If
      End Sub
    • Ändere das Passwort im Code entsprechend.

Häufige Fehler und Lösungen

  • Excel lässt keine Zeile einfügen:

    • Überprüfe, ob die Zellen, die Du einfügen möchtest, durch die Datenüberprüfung oder den Blattschutz blockiert sind.
  • Laufzeitfehler 1004:

    • Dieser Fehler tritt auf, wenn Du versuchst, die Locked-Eigenschaft eines Bereichs zu ändern, der verbundene Zellen enthält. Stelle sicher, dass keine verbundenen Zellen in den betroffenen Spalten vorhanden sind.
  • Excel kann keine neuen Zellen einfügen, weil nicht leere Zellen über das Ende des Arbeitsblattes:

    • Überprüfe, ob Du an einer Stelle einfügst, die durch vorhandene Daten blockiert ist.

Alternative Methoden

  • Direktes Sperren via Formatierung:

    • Anstatt VBA zu verwenden, kannst Du die Zellen auch direkt über Zelle formatieren > Schutz sperren. Das funktioniert jedoch nur, wenn das Blatt geschützt ist.
  • Eingabemethoden ändern:

    • Nutze Dropdown-Listen für die Eingabe in den Zellen, um die Benutzerführung zu verbessern und Fehler zu vermeiden.

Praktische Beispiele

  1. Beispiel für eine Datenüberprüfung:

    • Du hast eine Liste von Aufträgen in Spalte A, und möchtest sicherstellen, dass nur bestimmte Statuswerte (z.B. "Offen", "In Bearbeitung", "Abgeschlossen") in Spalte B eingegeben werden.
    • In Spalte B richtest Du eine Datenüberprüfung mit einer Liste ein.
  2. VBA zur Automatisierung:

    • Wenn in Spalte O ein Wert eingegeben wird, sollen die Zellen in Spalten F bis H der gleichen Zeile gesperrt werden. Der VBA-Code aus der Schritt-für-Schritt-Anleitung kann dafür verwendet werden.

Tipps für Profis

  • Zellen effizient schützen:

    • Teste verschiedene Kombinationen von Blattschutz und Datenüberprüfung, um die beste Benutzererfahrung zu gewährleisten.
  • VBA optimieren:

    • Halte Deinen VBA-Code sauber und gut dokumentiert, um zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Warum kann ich in Excel keine Zeile einfügen?

  • Dies kann auf einen aktiven Blattschutz oder eine Datenprüfung zurückzuführen sein, die die Eingabe in die neue Zeile einschränkt.

2. Wie kann ich sicherstellen, dass die Datenüberprüfung nicht auf neue Zeilen übertragen wird?

  • Verwende VBA, um die Gültigkeit manuell zu steuern und nur für die gewünschten Zeilen anzuwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige