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

Validation mit INDIRECT: Formel nicht VBA-konform

Forumthread: Validation mit INDIRECT: Formel nicht VBA-konform

Validation mit INDIRECT: Formel nicht VBA-konform
15.07.2015 19:46:38
Jürgen
Hallo,
benötige gerade Hilfe beim Aufbau einer Gültigkeitsprüfung per VBA.
Per Makrorekorder ergibt sich folgende Syntax:
With Range("I11").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:= _
"=WENN(H11>0;INDEX(INDIREKT(A11);1;3);WENN(G11>0;INDEX(INDIREKT(A11);1;2)))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Die Formel läuft allerdings (erwarteterweise) in den 1004-Fehler.
Habe verschiedene Versuche gestartet, die Formel VBA-gerecht aufzubauen, bin jedoch mit allen Versuchen gescheitert.
Mein letzter Versuch:
Formula1:= "=IF(H11>0;INDEX(INDIRECT(""" & A11 & """),1,3);IF(G11>0;INDEX(INDIRECT(""" & A11 & """),1,2)))"
In Zelle "A11" steht der Name eines benannten Bereiches. In Abhängigkeit davon, ob in G11 oder H11 eine Zahl steht, soll aus dem benannten Bereich nur ein bestimmter Wert für die Gültigkeitsliste zulässig sein (entweder Wert aus Spalte 2 oder aus Spalte 3).
Wäre sehr dankbar, wenn mir jemand zeigen könnte, wie die Formel VBA-konform aussehen muss.
Vorab danke.
Gruß
Jürgen

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Validation mit INDIRECT: Formel nicht VBA-konform
15.07.2015 20:34:02
Daniel
Hi
das funktioniert bei mir wenn:
1. die Formel in der richtigen Englischen Schreibweise eingegeben wird:
=IF(H11>0,INDEX(INDIRECT(A11),1,3),IF(G11>0,INDEX(INDIRECT(A11),1,2)))
2. wenn zum Zeitpunkt der Eingabe die Formel einen gültigen Zellbezug ermittelt, dh in H11 oder in G11 muss ein Wert > 0 stehen. oder du musst die Formel noch so ergänzen, dass sie auch dann einen gültigen Zellbezug (ggf auf eine leere Zelle) als ergebnis hat.
Gruß Daniel

Anzeige
AW: Validation mit INDIRECT: Formel nicht VBA-konform
16.07.2015 07:12:32
Jürgen
Hallo Daniel,
es funktioniert! Prima.
Vielen Dank.
Gruß
Jürgen
;
Anzeige
Anzeige

Infobox / Tutorial

Gültigkeitsprüfung mit INDIRECT in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Gültigkeitsprüfung in Excel mit der INDIRECT-Funktion in VBA zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein Modul hinzu:

    • Rechtsklicke auf "VBAProject (DeineDateiName)" im Projektfenster.
    • Wähle Einfügen > Modul.
  3. Gib den folgenden Code ein:

    Sub Gültigkeitsprüfung()
       With Range("I11").Validation
           .Delete
           .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
           xlBetween, Formula1:= _
           "=IF(H11>0,INDEX(INDIRECT(A11),1,3),IF(G11>0,INDEX(INDIRECT(A11),1,2)))"
           .IgnoreBlank = True
           .InCellDropdown = True
           .InputTitle = ""
           .ErrorTitle = ""
           .InputMessage = ""
           .ErrorMessage = ""
           .ShowInput = True
           .ShowError = True
       End With
    End Sub
  4. Anpassen der Formel:

    • Stelle sicher, dass in Zelle A11 der Name eines benannten Bereichs steht.
    • Achte darauf, dass die Formel in der richtigen Schreibweise eingegeben wird (z. B. englisch).
  5. Führe das Makro aus:

    • Klicke im VBA-Editor auf Run oder drücke F5, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehler 1004:

    • Dieser Fehler tritt oft auf, wenn die Formel nicht korrekt formatiert ist. Achte darauf, dass du , anstelle von ; verwendest, wenn du die Formel in englischer Sprache eingibst.
  • Ungültiger Zellbezug:

    • Überprüfe, ob in den Zellen G11 oder H11 ein Wert > 0 steht. Andernfalls kann die Formel keinen gültigen Zellbezug ermitteln.

Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, kannst du die Gültigkeitsprüfung auch direkt über die Excel-Oberfläche einrichten:

  1. Wähle die Zelle aus (z. B. I11).
  2. Gehe zu Daten > Datengültigkeit.
  3. Wähle Liste und gib die Formel in das Feld für die Quelle ein.

Alternativ kannst du auch die INDIREKT-Funktion in einer normalen Excel-Formel verwenden, um Werte dynamisch zu referenzieren.


Praktische Beispiele

Angenommen, du hast in Zelle A11 den benannten Bereich Produkte definiert:

  • Wenn G11 den Wert 1 und H11 den Wert 0 hat, würde die Gültigkeitsprüfung den Wert aus der zweiten Spalte des benannten Bereichs Produkte zurückgeben.
  • Umgekehrt, wenn H11 den Wert 5 hat, wird der Wert aus der dritten Spalte verwendet.

Tipps für Profis

  • Verwende benannte Bereiche: Diese machen es einfacher, mit INDIREKT zu arbeiten und die Übersichtlichkeit deiner Formeln zu verbessern.
  • Fehlerbehandlung: Baue in deine VBA-Logik eine Fehlerbehandlung ein, um unerwartete Eingaben oder Fehler eleganter zu handhaben.
  • Dokumentation: Kommentiere deinen Code, um die Wartbarkeit zu erhöhen und anderen Nutzern zu helfen, deine Logik zu verstehen.

FAQ: Häufige Fragen

1. Wie kann ich die Formel so anpassen, dass sie auch leere Zellen erlaubt? Du kannst die Formel erweitern, um leere Zellen zu berücksichtigen, indem du zusätzliche Bedingungen hinzufügst.

2. Warum funktioniert die Gültigkeitsprüfung manchmal nicht? Überprüfe immer die Zellbezüge und stelle sicher, dass die Eingabe in den Zellen G11 und H11 korrekt ist. Ein fehlerhafter Bezug kann zu Problemen führen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige