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

Wahr zu True

Forumthread: Wahr zu True

Wahr zu True
04.04.2017 18:41:13
Enrico
Hi,
ich habe folgendes Problem, dass mein Makro (Werte von einer Tabelle in eine andere übertragen und daraus eine XML-Datei erstellen) auf verschiedenen Rechnern mit unterschiedlichen Länder/Spracheinstellungen laufen muss. Am Ende soll aber immer das amerikanische Format dargestellt werden.
Das Komma zu Punkt Problem habe ich schon folgendermaßen gelöst:
Application.DecimalSeparator = "."
Application.UseSystemSeparators = False
Gibt es eine ähnliche Funktion fuer wahr und true?
Die Werte holt er sich aus der Grundtabelle (coordtable) - dort steht "True" als Inhalt, wandelt Excel aber beim abholen der Zelle in "Wahr" um.
.Cells(X + 1, 9) = Worksheets("CoordTable").Cells(y + 1, 1).Value
Danke und viele Grüsse
Rico
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Wahr zu True
04.04.2017 18:47:26
Enrico
Neues Problem: ...gerade bemerkt... :-(
In meiner Tabelle sind die Werte mit Punkten getrennt. Nach meinem XML-Export per VBA sind diese in der XML aber mit Kommas versehen. Wie kann ich Excel oder per VBA den Punkt erzwingen?
AW: Wahr zu True
04.04.2017 19:02:49
Enrico
Hab das Punkt zu Komma Problem gelöst mit:
Print 1# "<double>" & Replace(Cells(lngRow, 12), ",", ".") & "</double>"
Beim Wahr/True-Problem würde ich auch so vorgehen, nur habe ich da ja zwei Möglichkeiten "Wahr" oder "Falsch".
Anzeige
AW: Wahr zu True
04.04.2017 20:03:55
ChrisL
Replace kannst du auch "verschachteln"
Replace(Replace(String, "Falsch", "False"), "Wahr", "True")
Aber, Wahr/Falsch müsste man in der "Landessprache" dynamisch ermitteln, damit es auch in anderen Ländern funktioniert. Ich dachte es wäre Application.International, aber konnte keinen entsprechenden Index finden.
cu
Chris
Anzeige
AW: Wahr zu True
05.04.2017 08:32:29
ChrisL
Hi nochmal
OK, ich habe mich gestern ein wenig verrannt :)
Entweder machst du einen (Hilfs-)Blatt Export, dort gibt es m.W. einen Parameter "Local" o.ä., wo du die Länderthematik steuern kannst.
Falls du mit Open For Output deine eigene Datei "printest", dann müsstest du ein Replace machen. Die Variante von gestern sollte funktionieren d.h. CStr(True) liefert "Wahr" in Landessprache, was du dann durch das englische True ersetzen kannst.
cu
Chris
Anzeige
AW: Wahr zu True
04.04.2017 19:36:12
ChrisL
Hi Rico
"Formatierung", "Wert" und "Text" sind gedanklich zu trennen.
Den True-Wahr-Dreher kann man erklären, wenn "True" als Text steht, was VBA als Wert erkennt und entsprechend auch als WAHR-Wert überträgt. :)
Ein Ansatz wäre, nur mit "Text" zu arbeiten.
.Cells(X + 1, 9) = Worksheets("CoordTable").Cells(y + 1, 1).Text
Dennoch würde ich davon abraten. Die Ländereinstellung würde ich nicht antasten und Excel die Werte als solche erkennen lassen. Erst im Moment vom Export/Import wandelst du das Format in US um.
Ich nehme an, du exportierst das Blatt als ganzes. Achte darauf, dass du eine klare Grenze (Exportblatt = Text / andere Blätter = Wert) herstellst. Vielleicht funktioniert es mit der .Text Ergänzung und bei Bedarf zusätzlich Verwendung von Format(). Der Import könnte schwieriger werden, weil Texte möglicherweise - je nach Land unterschiedlich - automatisch in Werte umgewandelt werden.
Darum könnte es sich anbieten das XML File quasi manuell, Zeile für Zeile zu erstellen und auch so wieder einzulesen. Nur mal als Ansatz (nicht ADO, aber die anderen Beiträge mit Open For Output):
http://stackoverflow.com/questions/2766760/how-to-generate-xml-from-an-excel-vba-macro
Damit hättest du die klare Trennung, XML = Text, Excel = Wert.
Muss es denn wirklich XML sein? ;)
Hast du nur Text und Zahl oder auch Datum, Monat, Wochentag... Inch, Feet, Meter, kg ;)
cu
Chris
Anzeige
AW: Wahr zu True
04.04.2017 19:57:16
ChrisL
Dein Print# habe ich erst später gesehen. Dein Problem ist noch nicht gelöst, darum offen...
Ein ungetester Versuch...
Replace(String, CStr(True), "True")
;
Anzeige

Infobox / Tutorial

Wahr zu True: Lösungen für Excel und VBA


Schritt-für-Schritt-Anleitung

Um in Excel und VBA von "Wahr" auf "True" umzuwandeln, befolge diese Schritte:

  1. DecimalSeparator anpassen: Stelle sicher, dass das amerikanische Format verwendet wird:

    Application.DecimalSeparator = "."
    Application.UseSystemSeparators = False
  2. Wahr/Falsch in True/False umwandeln: Verwende die Replace-Funktion, um die Werte zu konvertieren. Ein Beispiel wäre:

    Replace(Replace(String, "Falsch", "False"), "Wahr", "True")
  3. Export der Daten: Wenn du die Daten exportierst, achte darauf, dass Werte als Text behandelt werden:

    .Cells(X + 1, 9) = Worksheets("CoordTable").Cells(y + 1, 1).Text
  4. Manuelles Erstellen der XML-Datei: Wenn du die XML-Daten exportierst, erstelle sie manuell, um die Formatierung zu kontrollieren.


Häufige Fehler und Lösungen

  • Problem: Excel wandelt "True" in "Wahr" um.

    • Lösung: Verwende CStr(True) und ersetze es beim Export:
      Replace(String, CStr(True), "True")
  • Problem: Punkt wird in Komma umgewandelt.

    • Lösung: Verwende Replace beim Erstellen der XML-Datei:
      Print #1, "<double>" & Replace(Cells(lngRow, 12), ",", ".") & "</double>"

Alternative Methoden

  • Hilfsblatt verwenden: Exportiere die Daten in ein Hilfsblatt und steuere die Ländereinstellungen über Parameter wie "Local".
  • Dynamisches Ermitteln der Sprache: Verwende Application.International, um die Ländereinstellungen dynamisch zu ermitteln.

Praktische Beispiele

  1. Wahr/Falsch in VBA umwandeln:

    Dim value As String
    value = Replace(Replace(Cells(1, 1).Value, "Wahr", "True"), "Falsch", "False")
  2. Export einer XML-Datei:

    Dim lngRow As Long
    Open "output.xml" For Output As #1
    Print #1, "<root>"
    For lngRow = 1 To LastRow
       Print #1, "<item>" & Replace(Cells(lngRow, 1).Value, ",", ".") & "</item>"
    Next lngRow
    Print #1, "</root>"
    Close #1

Tipps für Profis

  • Verwende .Text: Wenn du nur Text umwandeln möchtest, nutze .Text anstelle von .Value, um Formatierungsprobleme zu vermeiden.
  • Manuelles Handling: Bei komplexen Datenformaten (z. B. Datum, Zeit) kann es sinnvoll sein, die Daten manuell zu verarbeiten, um sicherzustellen, dass das Format korrekt ist.
  • VBA-Fehlerbehandlung: Integriere Fehlerbehandlungsroutinen in deinen VBA-Code, um Laufzeitfehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Makro auf verschiedenen Rechnern funktioniert? Stelle sicher, dass du alle Ländereinstellungen korrekt berücksichtigst und verwende die Application.DecimalSeparator-Einstellung.

2. Was ist der beste Weg, um Wahr/Falsch in True/False zu konvertieren? Verwende die Replace-Funktion, um die Werte während der Datenverarbeitung zu konvertieren.

3. Wie gehe ich mit unterschiedlichen Excel-Versionen um? Teste dein Makro in der Excel-Version, die du verwendest, und stelle sicher, dass die Funktionen mit der Version kompatibel sind.

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