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

!!!HILFE!!! Validation.Add Formula1-Problem

Forumthread: !!!HILFE!!! Validation.Add Formula1-Problem

!!!HILFE!!! Validation.Add Formula1-Problem
17.11.2005 08:53:57
Joachim
Hallo User,
bin mit meinem Latein endgültig am Ende.
Der unten stehende Code verursacht bei mir immer den Laufzeitfehler (Nr. 1004 'Anwendungs- oder objektdefinierter Fehler)
Zu Testzwecken habe ich den Code in eine neue Mappe eingefügt und angepasst - und siehe da - es funktioniert plötzlich.
Ich habe nun den Verdacht, dass irgendwelche anwendungsinternen Sprach, System- oder Ländereinstellungen, insbesondere was die Interpretation von per Code erstellten Formeln betrifft, verändert werden müssen.
Vielleich hat von Euch jemand einen Rat, bin echt am Verzweifeln
Danke
Grüße Joachim
Code:
With Worksheets("Kostenübersicht").Range("N" & intZ).Validation
.Delete
.Add Type:=xlValidateCustom, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="=OR(ISNUMBER(N" & intZ & "),(CELL(""CONTENTS"",N" & intZ & ")
=""B""),(CELL(""CONTENTS"",N" & intZ & ")=""B""))"
......
end with
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: !!!HILFE!!! Validation.Add Formula1-Problem
17.11.2005 10:01:45
Luschi
Hallo Joachim,
wenn Du als Operator "xlBetween" einsetzt, dann muß auch die .Formula2-Eigenschaft mit angegeben werden, denn "between" heißt in der Übersetzung "zwischen".
Mögliche Operatorwerte sind: xlBetween, xlEqual, xlGreater, xlGreaterEqual, xlLess, xlLessEqual, xlNotBetween oder xlNotEqual.
Wenn Du nur die Formula1-Eigenschaft benutzt, dürfte "xlEqual" der korrekte Qperaror-Wert sein.
Zudem könnte die .Formula1-Eigenschaft in Deiner Schreibweise 1 Fehler verursachen. Entweder alles in 1 Zeile oder den Formel-String trennen:
Formula1:="=OR(ISNUMBER(N" & intZ & "),(CELL(""CONTENTS"",N" & intZ & ")=""B"")" & _
",(CELL(""CONTENTS"",N" & intZ & ")=""B""))"
Gruß von Luschi
aus klein-Paris
Anzeige
AW: !!!HILFE!!! Validation.Add Formula1-Problem
17.11.2005 11:24:44
Joachim
Hallo Luschi,
danke dass Du dich meiner erbarmt hast.
Habe es gerade probiert und es funktioniert immer noch nicht.
Mich wundert nur, dass mein Code-Beispiel in einer neu erstellten Datei plötzlich funktioniert.
Nicht funktioniert außerdem folgende, etwas einfachere Validation.Add:
With objAT.Range("E" & intZ).Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlEqual, Formula1:="=ISNUMBER(E" & intZ & ")"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Fehler bei der Dateneingabe"
.InputMessage = ""
.errormesssage = "es können nur numerische Werte eingegeben werden"
.ShowInput = False
.ShowError = True
End With
Ich glaube mit der Zeit, dass die Arbeitsmappe spinnt. Probleme habe ich nun auch mit dem Pagesetup-Objekt usw.
Anzeige
;
Anzeige

Infobox / Tutorial

Umgang mit dem Validation.Add Formula1-Problem in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub SetValidation()
       Dim intZ As Integer
       intZ = 1 ' Beispielwert für die Zeile
    
       With Worksheets("Kostenübersicht").Range("N" & intZ).Validation
           .Delete
           .Add Type:=xlValidateCustom, _
                AlertStyle:=xlValidAlertStop, _
                Operator:=xlBetween, _
                Formula1:="=OR(ISNUMBER(N" & intZ & "), (CELL(""CONTENTS"",N" & intZ & ")=""B""))"
       End With
    End Sub
  4. Stelle sicher, dass die richtige Blattbezeichnung verwendet wird:

    • Ersetze "Kostenübersicht" durch den Namen deines Arbeitsblatts.
  5. Führe das Makro aus:

    • Gehe zu Run > Run Sub/UserForm oder drücke F5.

Häufige Fehler und Lösungen

  • Laufzeitfehler (Nr. 1004): Dieser Fehler tritt häufig auf, wenn die Formel nicht korrekt ist oder die Zellreferenzen fehlerhaft sind. Überprüfe, ob die Sheet-Namen und Zellreferenzen stimmen.

  • Fehlender Operator: Wenn du xlBetween verwendest, musst du auch die Formula2-Eigenschaft angeben. Beispiel:

    .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="...", Formula2:="..."
  • Falsche Schreibweise: Achte darauf, dass der gesamte Formel-String korrekt ist. Du kannst den String auf mehrere Zeilen aufteilen, indem du & _ verwendest.


Alternative Methoden

  • Verwendung von Data Validation über das Excel-Menü:

    • Gehe zu Daten > Datenüberprüfung, um Validierungen ohne VBA einzustellen.
  • Einfache Validierungen: Du kannst auch xlEqual, xlGreater, oder xlLess verwenden, um einfache Bedingungen zu erstellen.


Praktische Beispiele

  • Beispiel für eine einfache Validierung:

    With Worksheets("Tabelle1").Range("A1").Validation
       .Delete
       .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=1, Formula2:=100
    End With

    Diese Validierung erlaubt nur ganze Zahlen zwischen 1 und 100.

  • Komplexere Bedingungen:

    With Worksheets("Tabelle1").Range("B1").Validation
       .Delete
       .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:="=AND(ISNUMBER(B1), B1>=0)"
    End With

    Hier wird sichergestellt, dass nur positive Zahlen eingegeben werden können.


Tipps für Profis

  • Verwende Fehlerbehandlung: Integriere On Error Resume Next, um Laufzeitfehler zu vermeiden und die Ausführung des Codes nicht zu unterbrechen.

  • Dokumentiere deinen Code: Kommentiere wichtige Abschnitte, damit du später leichter verstehst, was du gemacht hast.

  • Teste in einer neuen Arbeitsmappe: Wenn du auf Probleme stößt, teste deinen Code in einer neuen Datei, um zu sehen, ob die Fehler von der bestehenden Arbeitsmappe verursacht werden.


FAQ: Häufige Fragen

1. Warum funktioniert mein Validation.Add nicht? Überprüfe die verwendeten Operatoren und Formeln. Achte darauf, dass alle Referenzen korrekt sind.

2. Was ist der Unterschied zwischen Formula1 und Formula2? Formula1 ist die erste Bedingung, während Formula2 eine zweite Bedingung für Operatoren wie xlBetween ist.

3. Kann ich auch mehrere Bedingungen in einer Formel kombinieren? Ja, du kannst OR oder AND verwenden, um komplexe Bedingungen zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige