2017-08-04 3 views
2

So öffnete ich ein neues Excel-Arbeitsblatt nur um mehr zu erfahren über Data Validation Creation via VBA und ich trat in den folgenden Code, der ein Beispiel von Microsoft Developer Network-Website war:VBA Validation.Add Methode fehlgeschlagen

With Range("$E$5").Validation 
.Add Type:=xlValidateWholeNumber, _ 
AlertStyle:=xlValidAlertStop, _ 
Operator:=xlBetween, Formula1:="5", Formula2:="10" 
.InputTitle = "Integers" 
.ErrorTitle = "Integers" 
.InputMessage = "Enter an integer from five to ten" 
.ErrorMessage = "You must enter a number from five to ten" 
End With 

I die folgende Fehlermeldung anzeigt, wenn ich den Code ausgeführt:

Laufzeitfehler '-2147417848 (80010108)':

Methode 'hinzufügen' des Objekts 'Validation' fehlgeschlagen

ich überall gesucht, aber nichts über das Problem nicht finden ...

+3

Haben Sie bereits eine Validierung in E5? Wenn ja, versuche es mit '.Delete 'zu löschen, bevor du ein neues hinzufügst. –

Antwort

1

Dies geschieht, wenn es bereits eine Validierung für die gewünschte Zelle. Wenn Sie also diesen Code in einem neuen Arbeitsblatt ausführen, wird er zwar einmal ausgeführt, wird aber beim zweiten Mal fehlschlagen.

Löschen Sie daher alle Überprüfungen, bevor Sie eine neue hinzufügen.

With Worksheets("Sheet1").Range("$E$5").Validation 
    .Delete 'delete validations first 

    .Add Type:=xlValidateWholeNumber, _ 
     AlertStyle:=xlValidAlertStop, _ 
     Operator:=xlBetween, Formula1:="5", Formula2:="10" 
    .InputTitle = "Integers" 
    .ErrorTitle = "Integers" 
    .InputMessage = "Enter an integer from five to ten" 
    .ErrorMessage = "You must enter a number from five to ten" 
End With 

Beachten Sie, dass Sie immer ein Blatt für Ihren Bereich wie Worksheets("Sheet1").Range zu vermeiden, irgendwelche Probleme geben sollte.

+0

Okay, also habe ich die Delete-Methode vor dem Hinzufügen hinzugefügt und sichergestellt, dass es keine Validierungen für diese bestimmte Zelle gibt. Als ich den Code erneut ausgeführt habe, ist der gleiche Fehler aufgetreten. Und die Zeile für das bestimmte Blatt, das ich verwendete, ist tatsächlich: 'Mit Sheet1.Range ("$ E $ 5"). Validierung'. Ich glaube nicht, dass ich Probleme damit habe, aber ich werde versuchen, das 'Arbeitsblatt ("Sheet1")' –

+0

@ V.Stoyanov Dieser Code funktioniert definitiv, ich habe es getestet. Wenn Sie noch Probleme haben, müssen Sie weitere Informationen posten. –

+0

Ok, also habe ich den gleichen Code aber auf einer 2016 Version verwendet und es hat ohne Probleme oder Fehler funktioniert. Trotzdem danke für die Unterstützung! –

Verwandte Themen