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.

Kraft eingefügten Werte zu gehorchen Daten Validierungsregeln

Ich verwendete Daten-Validierung, um dies umzusetzen und es funktioniert.

Kraft eingefügten Werte zu gehorchen Daten Validierungsregeln

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.
InformationsquelleAutor oliveirano25 | 2015-04-01
Schreibe einen Kommentar