Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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

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.

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

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

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

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige