Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenüberprüfung - Gültigkeitswerte aus Array

Forumthread: Datenüberprüfung - Gültigkeitswerte aus Array

Datenüberprüfung - Gültigkeitswerte aus Array
07.04.2017 15:41:31
Franz
Liebe Excel- und VBA-Speziallisten,
über Array in Tabelle schreiben und diese Range (A1:A letzte Zeile) dann in die Datenüberprüfung zu schreiben funktioniert zwar, würde mir aber diesen Umweg gerne ersparen.
Leider führt nachfolgender Testcode aber dazu, dass Dezimalzahlen mit der Join Funktion nicht richtig geteilt werden.
Sub Test()
Dim arrFarbe As Variant
Dim ListeFarben As Variant
arrFarbe = Array("15,11", "18,56", "20,33")
'ListeFarben = Join(arrFarbe, " ")
With ActiveSheet.Cells(1, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
Join(arrFarbe, ",")
'.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
Join(arrFarbe, vbCrLf)
'.Add Type:=xlValidateList, Formula1:=Join(arrFarbe, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

Was mache ich da falsch, für sämtliche Lösungsansätze wäre ich euch sehr dankbar.
LG
Franz
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Punkt "15.11" statt Komma "15,11" (owT)
07.04.2017 15:58:47
EtoPHG

AW: Punkt "15.11" statt Komma "15,11" (owT)
07.04.2017 17:37:20
Franz
Hallo EtoPHG,
danke für deine schnelle Antwort! Leider stehen dann die Zahlen im Dropdownfeld aber auch mit Punkt und nicht mit Komma zur Auswahl. Ich benötige im Ausgabefeld jedoch eine Dezimalzahl ohne umständlich über Replace oder benutzerdefinierte Formatierung den Punkt zu ersetzen.
LG
Albert
Anzeige
15.11 statt "15,11" oder "15.11".....
10.04.2017 08:23:14
EtoPHG
Hallo Franz oder Albert oder wer auch immer...
Wie kann es sein, dass, bei deinen angegebenen Levels, der Unterschied zwischen Wert und Anzeige immer noch unbekannt ist?
1. Warum schreibst du "Strings" in die Werte-Liste, wenn du Zahlen willst?
2. VBA versteht nur (american)-English und da ist der Decimalseparator der Punkt und der Listseparator das Komma.
3. Angezeigt wird der Zahlenwert, mit dem vom Betriebssystem übernommenen Decimalseparator, wenn in den Excel-Optionen nicht explicit was anderes eingstellt ist. Das dürfte in deinem Fall (bei der Regionaleinstellung Deutsch/Deutschland) das Komma sein.
4. Ergo: ...= Array(15.11, 18.56, ...
Gruess Hansueli
Anzeige
AW: 15.11 statt "15,11" oder "15.11".....
10.04.2017 19:40:34
Franz
Hallo Hansueli
Wer macht sich schon selber gerne schlechter als er ist?
zu 1: bisher viele verschiedene Varianten versucht - Strings liefert der Makrorekorder "15.11, 17.25, 19.45"!
Decimalseparator hin und her - auch Array(5.11, 18.56) führt nicht zum gewünschten Erfolg, vermutlich muss ich beim Umweg über die Range bleiben.
Aber vielleicht kannst du ja den nachfolgenden Code auf eine eine funktionierende Lösung ändern.
Sub Test()
Dim arrFarbe
arrFarbe = Array(15.1, 16.2, 17.5)
With ActiveSheet.Cells(1, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
Join(arrFarbe, " ")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Danke und LG
Franz (VN) Albert (NN)
Anzeige
AW: 15.11 statt "15,11" oder "15.11".....
11.04.2017 08:26:56
EtoPHG
Hallo Franz,
Sorry ich bin raus.
Warum du statt
Join(arrFarbe, ",")

jetzt plötzlich
Join(arrFarbe, " ")

codest bleibt mir verborgen. Ebenso nebulös, warum du das Problem nicht mit benanntem, dynamischen Bereich löst, statt VBA einzusetzen.
Gruess Hansueli
Anzeige
AW: 15.11 statt "15,11" oder "15.11".....
11.04.2017 18:47:05
Franz
Hallo HansUeli,
habe es mit verschiedenen Delimiter-Varianten versucht, um vielleicht doch zu einer für die Validierung brauchbaren Zeichenfolge zu kommen, mit Ganzzahlen funktioniert es ja!
Trotzdem vielen Dank für deine Hilfe
LG
Franz
;
Anzeige

Infobox / Tutorial

Gültigkeitswerte aus Array in Excel erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein: Klicke auf Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub GültigkeitswerteErstellen()
       Dim arrFarbe As Variant
       arrFarbe = Array(15.11, 18.56, 20.33)
       With ActiveSheet.Cells(1, 1).Validation
           .Delete
           .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(arrFarbe, ",")
           .IgnoreBlank = True
           .InCellDropdown = True
           .InputTitle = ""
           .ErrorTitle = ""
           .InputMessage = ""
           .ErrorMessage = ""
           .ShowInput = True
           .ShowError = True
       End With
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus: Drücke Alt + F8, wähle GültigkeitswerteErstellen und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Problem: Das Dropdown zeigt Zahlen mit Punkt anstatt mit Komma.

    • Lösung: Stelle sicher, dass die regionalen Einstellungen deines Excel-Programms auf Deutsch eingestellt sind. VBA verwendet den Punkt als Dezimaltrennzeichen. Verwende daher die korrekte Formatierung in deinem Array (z.B. Array(15.11, 18.56)).
  • Problem: Gültigkeitsprüfung wird nicht korrekt angewendet.

    • Lösung: Überprüfe, ob das .Delete vor der .Add-Methode verwendet wird, um vorherige Validierungen zu entfernen. Achte darauf, dass die Formula1 korrekt formatiert ist und die Werte durch Kommas getrennt sind.

Alternative Methoden

  • Verwendung von benannten Bereichen: Statt VBA zu nutzen, kannst du auch einen benannten Bereich für deine Gültigkeitswerte erstellen und diesen in der Datenüberprüfung verwenden. Das geht über Formeln > Namens-Manager > Neu.

  • Datenüberprüfung über die Benutzeroberfläche: Du kannst auch direkt über die Excel-Oberfläche zur Datenüberprüfung navigieren: Daten > Datenüberprüfung > Einstellungen und dort die Optionen für die Auswahl von Listen festlegen.


Praktische Beispiele

Hier sind einige Beispiele, wie du die Gültigkeitsprüfung für verschiedene Werte einsetzen kannst:

  1. Farben:

    Dim arrFarben As Variant
    arrFarben = Array("Rot", "Grün", "Blau")
  2. Preise:

    Dim arrPreise As Variant
    arrPreise = Array(10.99, 15.49, 20.00)

In diesen Beispielen kannst du einfach den Code anpassen, um unterschiedliche Werte in der Dropdown-Liste anzuzeigen.


Tipps für Profis

  • Dynamische Arrays: Nutze dynamische Arrays, um deine Gültigkeitswerte automatisch zu aktualisieren, wenn sich die Daten ändern.

  • Vermeidung von VBA: Wenn du häufig Datenüberprüfungen benötigst, erwäge, deine Daten in einer Tabelle zu organisieren und verwende die Funktion INDIREKT, um auf diese Werte zuzugreifen.


FAQ: Häufige Fragen

1. Frage
Wie kann ich Dezimalzahlen korrekt im Dropdown anzeigen?
Antwort: Achte darauf, dass du die Werte im Array mit einem Punkt als Dezimaltrennzeichen angibst und dass die regionalen Einstellungen in Excel auf Deutsch oder die entsprechende Sprache eingestellt sind.

2. Frage
Kann ich Gültigkeitswerte ohne VBA erstellen?
Antwort: Ja, du kannst die Datenüberprüfung über die Excel-Oberfläche einrichten, indem du die gewünschten Werte direkt in das Feld für die Liste eingibst oder einen benannten Bereich verwendest.

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