Kraft eingefügten Werte zu gehorchen Daten Validierungsregeln
Ich habe ein (Vereinfachtes Beispiel) matrix bestehend aus-Eingänge und Alarme. Jede Aktion (X) sollte ein Eingangs-und ein alarm-d.h. keine Aktionen eingefügt werden soll in Spalte E und Zeile 6.
Ich verwendete Daten-Validierung, um dies umzusetzen und es funktioniert.
Aber wenn ich einfügen von Daten in diese Zellen, Sie Folgen nicht den Validierungsregeln. Ich trug dieses VBA-code, um dies zu verhindern (extrahiert aus www.j-walk.com/ss/excel/tips/tip98.htm):
Private Sub Worksheet_Change(ByVal Target As Range)
'Does the validation range still have validation?
If HasValidation(Range("ValidationRange")) Then
Exit Sub
Else
Application.EnableEvents = False
Application.Undo
MsgBox "Your last operation was canceled." & _
" It would have deleted data validation rules.", vbCritical
End If
End Sub
Private Function HasValidation(r) As Boolean
' Returns True if every cell in Range r uses Data Validation
On Error Resume Next
x = r.Validation.Type
If Err.Number = 0 Then HasValidation = True Else HasValidation = False
End Function
Jedoch, dieser code verhindert auch, dass Werte aus eingefügt werden, in die Zellen, auch wenn Sie nicht brechen, Validierungs-Regeln, wenn ich z.B. einfügen von X an Eingang a;alarm 1, bekomme ich eine Fehlermeldung. Gibt es eine Möglichkeit zu verhindern, dass Werte aus eingefügt werden, nur, wenn Sie brechen, Validierungsregeln?
Edit:
Habe ich verändert den code, um:
Private Sub Worksheet_Change(ByVal Target As Range)
With Range("D4:H8").Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=OR(ISBLANK(D4),AND(NOT(ISBLANK($C4)),NOT(ISBLANK(D$3))))"
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Stop"
.InputMessage = ""
.ErrorMessage = "Actions Must Have Input and Output"
.ShowInput = True
.ShowError = True
End With
Me.CircleInvalid
Count = 0
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If Not Intersect(shp.TopLeftCell, Range("D4:H8")) Is Nothing Then Count = Count + 1
Next
If Count > 0 Then
MsgBox "Actions Must Have Input and Output"
End If
End Sub
Diese jetzt Kreise ungültige Zellen und erzeugt eine msg-box wenn eine gefunden wird. Dies geschieht auf der Grundlage der Tatsache, dass die ungültigen Kreis ist eine Form. Ich kann den code erhalten, um durch durchsuchen der ganzen Platte, aber ich bin versucht, die Suche auf einen bestimmten Bereich. Jedoch bekomme ich den Fehler "1004 - Application-defined or object-defined error" durch die shp.TopLeftCell. Irgendwelche Ideen?
- Es gibt zu viele Antworten erforderlich, um dieses Problem zu lösen. J-Walk war der code für ein konkretes Beispiel der Verhinderung von Zellen eingefügt werden, werden in eine Daten validiert Bereich. Tun Sie Wiedereinsetzen der Validierung und Prüfung auf ungültige Einträge über die gesamte Reichweite; - Festlegung der kopierten Bereich dann testen Sie nur, dass die Anzeige einer Nachricht oder markieren Sie die ungültigen Zellen; Liste der ungültigen Zellen in einem Formular, das dem Benutzer erlaubt, zu Bearbeiten und ersetzen?
- 1. oder 3. Vorschläge ist es, was ich Suche. Ich Wünsche der Benutzer darauf aufmerksam gemacht werden, wenn Daten eingefügt hat gebrochen Daten-Validierungs-Regeln. Dies kann durch Fehler - /Warnmeldung oder die Hervorhebung von ungültigen Zellen, je nachdem, was möglich ist.
- Sie haben, um es zu versuchen und dann kommen Sie wieder, wenn Sie auf etwas stoßen, das Sie nicht lösen können. SO ist kein code-writing-service. Ich werde Ihnen helfen, in die richtige Richtung, aber nur so weit.
- Habe ich einen code, der prüft, für ungültig Zellen. Ich bin jetzt mit Mühe der Suche nach einem Angebot erzeugen Sie eine Meldung, wenn eine ungültige Zelle gefunden wird, detailliert Bearbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beschlossen, nicht zu gehen, die Form der route und suchen stattdessen nach Validierung Werte:
Versuchen Sie eine "einfügen Spezial"; eine normale paste überschreibt die format-Eigenschaft der Zellen.
Anstatt auf die Zelle und drücken auf einfügen, klicken Sie auf die Zelle und fügen Sie die Daten in die Formel Leiste am oberen Rand des excel. Dann drücken Sie enter. Dies erlaubte mir, fügen Sie text aus der Zwischenablage behalten aber die Daten-Validierung.
Ich nur getestet, mit text und zahlen in excel und von externen Quellen, nie mit erweiterten Formeln, etc, so kann es nicht Arbeit für alle Bedürfnisse.
Es ist ein weiterer Schritt pro einfügen, aber es ersparte mir viel Zeit für ein bestimmtes Projekt, wo ich brauchte, um zu überprüfen, Charakter zählt.