Microsoft Excel

Herbers Excel/VBA-Archiv

Umwandlung Trennzeichen bei Datenüberprüfung


Betrifft: Umwandlung Trennzeichen bei Datenüberprüfung von: Peter Pan
Geschrieben am: 05.01.2018 13:56:03

Guten Tag,
ich bin dabei mir über ein VBA Script dynamische Dropdownlisten zu erstellen.
Dabei verweise ich bewusst nicht auf eine Liste mit den Inhalten, sondern hinterlege die Inhalte direkt in dem Quellfeld der Datenüberprüfung.

Wenn ich das manuell mache, sieht das folgendermaßen aus: Datenüberprüfung, Zulassen = Liste, Quelle = "Option1;Option2;etc"

Das funktioniert soweit, und wenn ich die Tätigkeit aufzeichne, wird auch der oben beschriebene Text in dem Sub angezeigt. Wenn ich das Sub dann abspiele, werden die verschiedenen Optionen nicht mehr einzeln im Dropdown angeboten, sondern der gesamte Inhalt als eine Option dargestellt. Öffne ich nun das Menü zur Datenüberprüfung und schließe es ohne was verändert zu haben, klappt es wieder. Das ist natürlich auf dauer keine Lösung immer manuell das Menü zu öffnen.

Ich habe den Verdacht, das es mit der Problematik der Spracheinstellung zutun hat. Excel scheint in der VBA Welt intern die US Trennzeichen und Dezimalzeichen zu verwenden und in der Manuellen die Deutschen Zeichen :( Wenn ich im VBA Script die ";" durch "," ersetze, funktioniert es direkt. Wenn ich mir jetzt das Menü zur Datenüberprüfung anschaue, tauchen hier wieder ";" Trennzeichen auf. Excel hat das offentsichtlich selbst umgewandelt.

Diese Erkenntnis hilft mir jetzt solange weiter, bis ich das Dezimaltrennzeichen "," für Zahlen in den Optionen verwenden will. Diese werden konsequelnter Weise auch umgewandelt :(. Verwende ich stattdessen "." als Dezimaltrennzeichen werden diese nicht von Excel konvertiert und in meinen Optionen stehen dann die Dezimalzahlen als text mit ".".

Hat jemand eine Tipp für mich, wie ich die Problematik umgehen kann? Ich sehe nurnoch die Möglichkeit alle Optionen einzeln in Zellen zu übertragen und dann wieder bei Quelle auf die Bereiche zu verweisen. Das wollte ich aber gerade verhindern.

  

Betrifft: AW: Umwandlung Trennzeichen bei Datenüberprüfung von: EtoPHG
Geschrieben am: 05.01.2018 15:16:56

Hallo Peter,

Ja vieles ist richtig und bei VBA gut müsste man annehmen, dass es dem Anfrager bekannt ist, dass VBA intern US-english 'geredet' wird und die sprachliche Lokalisierung weitgehend nur in der XL-Oberfläche bzw. in den Local-Eigenschaften von Objekten (z.B. Range.FormulaLocal) automatisch durchgeführt werden.!

Das Listentrennzeichen in US-english ist das Komma und das Dezimaltrennzeichen der Punkt. Darum kommst du mit der deutschen Schreibweise der Zahlen durcheinander. Warum du die Listen nicht in (nicht sichtbaren Zellen / Blatts) so aufbereitest, wie du sie sehen willst und als Quelle benutzt, ist m.E. zu wenig begründet.

Gruess Hansueli


  

Betrifft: DasProblem … von: RPP63
Geschrieben am: 05.01.2018 17:18:13

… entsteht IMMER dann, wenn der Rekorder versucht, einen String aufzuzeichnen, Mensch ohne Namen.
Heißt, Bezug nehmend auf den VBA-Level:
Vermeide den Rekorder und benutze die Dokumentation!
VBA kann einen String nicht übersetzen!
Vor allem, wenn er als Parameter einer Methode übergeben werden soll.

… ich könnte jetzt noch etliche Beispiele posten …


  

Betrifft: AW: DasProblem … von: Peter Pan
Geschrieben am: 08.01.2018 08:39:08

Guten Tag,

vielen Dank für die Rückmeldungen.
Das VBA intern in US-Englisch arbeitet und wie sich das auf die Trennzeichen auswirkt ist mir durchaus bewusst.

Mich hat halt stutzig gemacht, dass ich aus VBA heraus sowohl ";" als auch "," als Trennzeichen verwenden kann und Excel das entsprechend zu "übersetzen" scheint. Daraufhin habe ich mal geschaut, ob es diese "Übersetzung" auch beim Rekorder anwendet, was nicht der Fall zu sein scheint.

Das Excel einen String eigentlich nicht "übersetzen" kann leuchtet ja ein. Das ich aber ein andere Ergebnis erhalte, wenn ich manuell einen String in das Feld "Quelle" eingebe, als wenn ich den Parameter über VBA manipuliere wirkt irgendwie inkonsequent. Da scheint ja dann doch was intern mit dem String zu geschehen.

Ich hatte gehofft, dass es vlt. einen Befehlt oder Workaround gibt, dass der String einfach so interpretiert wird, wie er auch manuell entsprechend der Spracheinstellung funktionieren würde.

Aus der Antwort von "RPP63" entnehme ich mal, dass das generell ein schwieriges Thema zu sein scheint, worauf es keine einfache Antwort/Lösung zu gibt :(

@Hansueli: Vielen Dank für die Rückmeldung, aber warum sollte ich näher begründen warum ich die Listen umgehen möchte? Das hat doch mit dem konkreten Problem nichts zutun.


Beiträge aus dem Excel-Forum zum Thema "Umwandlung Trennzeichen bei Datenüberprüfung"