Supportnet / Forum / Tabellenkalkulation
Daten - Gültigkeit - und eine ganz merkwürdige Kiste !!!
Frage
Hallo alle EXCEL-Künstler!
Über "Daten - Gültigkeit - Zulassen:Liste - Quelle ..." lassen sich die Eingabemöglichkeiten in eine Zelle oder einen markierten Bereich bekannterweise begrenzen, z.B. a oder b. Wird eine solche Zelle angewählt, erscheinen die gültigen Eingaben a und b in einem Pull-Down unter einander.
Bei Makro-Aufzeichnung dieser Gültigkeitsvorgaben ergab sich nun folgende Eigentümlichkeit:
[list=1][*] [u] Makro-Aufzeichnung:[/u] bei "Quelle" Angabe a;b (Trennung durch Semikolon); danach wird in den vorher markierten Zellen wie gewünscht a und b - unter einander - als Wahlmöglichkeit angegeben. Bei erneuter Ausführung des Makros wird aber als einzige Eingabe-Alternative a;b angegeben.
[*] [u] Makro-Aufzeichnung:[/u] bei "Quelle" Angabe a,b (Trennung durch Komma); danach wird in den vorher markierten Zellen als einzige Eingabe-Alternative a,b angegeben. Bei erneuter Ausführung des Makros wird dann (erstaunlich!) wie gewünscht a und b - unter einander - als Wahlmöglichkeit angegeben.
Meine Fragen: Wie lässt sich diese Eigenwilligkeit von EXCEL erklären oder wie lässt sie sich umgehen?
Am besten probiert der interessierte Fachmann die unter 1 und 2 beschriebenen Schritte zum besseren Verständnis erst einmal aus.
Gruß peko
Antwort 1 von coros
Moin Peko,
ich vermute mal stark, dass es an dem Trennzeichen liegt. Ähnlich wie beim Einlesen einer CSV- Datei, wird beim Aufzeichnen das Semikolon als Trennzeichen angegeben. Beim erneuten Ausführen wird aber auf den US Standard umgeschaltet und dort ist das Trennzeichen ein Komma. Somit werden die eingelesenen Daten nicht beim Semikolon getrennt, sondern bleiben zusammen und werden in einer Zelle angezeigt. So wird es auch bei Deinem Beispiel sein. Du gibst als Trennzeichen das Semikolon an. Excel bzw. VBA ignoriert dieses Trennzeichen und sieht es nur als ein Zeichen an und bringt somit in dem Gültigkeitsfeld die Zahlenreihe a;b. Nimmst Du nun das Komma bei der Aufzeichnung, wird beim erneuten Ausführen erkannt, da US Standard, dass es sich bei dem Komma um ein Trennzeichen handelt und es werden die beiden Buchstaben untereinander in dem Gültigkeitsfeld ausgegeben.
Damit das Einlesen einer CSV- Datei wie oben beschrieben mit dem angegebenen Semikolon als Trennzeichen funktioniert, kann man bei Excel97, Excedl2000 und Excel2002 durch das Einfügen eines DWORD Namens VBAAlwaysLoadUS (Wert = 0) in der Registry unter
HKCU\Software\Microsoft\Office\9.0\Excel\Options
Abhilfe schaffen. Ob das auch bei dem von Dir beschriebenen funktioniert, kann ich Dir nicht sagen, da ich es nicht probiert habe.
Aber wie schon geschrieben, es wird an dem US Standard liegen, der beim Ausführen eines Makros maßgebend ist.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich vermute mal stark, dass es an dem Trennzeichen liegt. Ähnlich wie beim Einlesen einer CSV- Datei, wird beim Aufzeichnen das Semikolon als Trennzeichen angegeben. Beim erneuten Ausführen wird aber auf den US Standard umgeschaltet und dort ist das Trennzeichen ein Komma. Somit werden die eingelesenen Daten nicht beim Semikolon getrennt, sondern bleiben zusammen und werden in einer Zelle angezeigt. So wird es auch bei Deinem Beispiel sein. Du gibst als Trennzeichen das Semikolon an. Excel bzw. VBA ignoriert dieses Trennzeichen und sieht es nur als ein Zeichen an und bringt somit in dem Gültigkeitsfeld die Zahlenreihe a;b. Nimmst Du nun das Komma bei der Aufzeichnung, wird beim erneuten Ausführen erkannt, da US Standard, dass es sich bei dem Komma um ein Trennzeichen handelt und es werden die beiden Buchstaben untereinander in dem Gültigkeitsfeld ausgegeben.
Damit das Einlesen einer CSV- Datei wie oben beschrieben mit dem angegebenen Semikolon als Trennzeichen funktioniert, kann man bei Excel97, Excedl2000 und Excel2002 durch das Einfügen eines DWORD Namens VBAAlwaysLoadUS (Wert = 0) in der Registry unter
HKCU\Software\Microsoft\Office\9.0\Excel\Options
Abhilfe schaffen. Ob das auch bei dem von Dir beschriebenen funktioniert, kann ich Dir nicht sagen, da ich es nicht probiert habe.
Aber wie schon geschrieben, es wird an dem US Standard liegen, der beim Ausführen eines Makros maßgebend ist.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von rainberg
Hallo peko,
es ist bekannt, dass der Makrorecorder nicht den elegantesten Code liefert, der manchmal sogar, nicht wie gewünscht, läuft und fast immer optimiert werden muss.
So auch in deinem Beispiel.
Bei der Aufzeichnung wird dieser Code geliefert,
bei dem du im markierten Bereich nur die Semikola durch Kommata ersetzen musst.
Es ist auch noch eine Kürzung des Codes möglich, aber hier geht es erst mal um die Fehlerbeseitigung.
Gruß
Rainer
es ist bekannt, dass der Makrorecorder nicht den elegantesten Code liefert, der manchmal sogar, nicht wie gewünscht, läuft und fast immer optimiert werden muss.
So auch in deinem Beispiel.
Bei der Aufzeichnung wird dieser Code geliefert,
Sub Makro2()
Range("C1:C10").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="a;b;c;d"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub bei dem du im markierten Bereich nur die Semikola durch Kommata ersetzen musst.
Es ist auch noch eine Kürzung des Codes möglich, aber hier geht es erst mal um die Fehlerbeseitigung.
Gruß
Rainer
Antwort 3 von rainberg
@ coros
sorry, hatte zwischendurch gefrühstückt und nicht aktualisiert.
Gruß
Rainer
sorry, hatte zwischendurch gefrühstückt und nicht aktualisiert.
Gruß
Rainer
Antwort 4 von coros
Moin Rainer,
für was entschuldigst Du Dich? Aber ich nehme sie trotzdem an. ;-))
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
für was entschuldigst Du Dich? Aber ich nehme sie trotzdem an. ;-))
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
Antwort 5 von rainberg
Hallo coros,
naja, ich war der Meinung, dass eine Antwort reicht.
Gruß
Rainer
naja, ich war der Meinung, dass eine Antwort reicht.
Gruß
Rainer
Antwort 6 von peko
@ coros und rainberg
Hallo und besten Dank für Eure Antworten. Hat weiter geholfen. Die Änderungen in der Registry habe ich nicht ausprobiert, funktioniert auch so.
Gruß Peter
Hallo und besten Dank für Eure Antworten. Hat weiter geholfen. Die Änderungen in der Registry habe ich nicht ausprobiert, funktioniert auch so.
Gruß Peter

