Microsoft Excel

Herbers Excel/VBA-Archiv

Datenüberprüfung - Gültigkeitswerte aus Array


Betrifft: Datenüberprüfung - Gültigkeitswerte aus Array von: Franz
Geschrieben am: 07.04.2017 15:41:31

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

  

Betrifft: Punkt "15.11" statt Komma "15,11" (owT) von: EtoPHG
Geschrieben am: 07.04.2017 15:58:47




  

Betrifft: AW: Punkt "15.11" statt Komma "15,11" (owT) von: Franz
Geschrieben am: 07.04.2017 17:37:20

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




  

Betrifft: 15.11 statt "15,11" oder "15.11"..... von: EtoPHG
Geschrieben am: 10.04.2017 08:23:14

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


  

Betrifft: AW: 15.11 statt "15,11" oder "15.11"..... von: Franz
Geschrieben am: 10.04.2017 19:40:34

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)


  

Betrifft: AW: 15.11 statt "15,11" oder "15.11"..... von: EtoPHG
Geschrieben am: 11.04.2017 08:26:56

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


  

Betrifft: AW: 15.11 statt "15,11" oder "15.11"..... von: Franz
Geschrieben am: 11.04.2017 18:47:05

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