Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2016 VBA für Profis

Datentypen umwandeln

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Von diesen Konvertierungsfunktionen ist die Umwandlung zwischen verschiedenen Zahlen-Datentypen in VBA nicht so wichtig, weil der Compiler das oft automatisch vornimmt. Am häufigsten werden Sie die Umwandlung zwischen Zahlen und Texten benötigen.

Transkript

Die Umwandlung der Datentypen ist eigentlich ein Thema, was einen typischen Visual Basic- Programmierer gar nicht interessiert. Das passiert oft so ganz unauffällig, dass die meisten es nicht merken. Es gibt einige Konvertierungsfunktionen, zum Beispiel Convert to Double, oder Convert to Int, oder Convert to Long, die brauchen Sie praktisch nie. Das passiert automatisch, wenn Sie wie hier zu sehen, eine Nachkommazahl einer Integer-Variablen zuweisen. Es gibt einige, die Sie vielleicht brauchen zu besonderen Anlässen, zum Beispiel "sub MachZuWahr", kein besonders glücklicher Prozedurname, der eigentlich nur zeigen soll, ich will eine Zahl in einen Wahrheitswert umwandeln, die bei Print normalerweise, wenn ich -1 aus irgendeiner Datenquelle bekomme, und das jetzt ausführen lasse mit F5, dann wird das Ergebnis auch -1 sein. Beim Vergleich, zum Beispiel in SQL-Statements für Datenbanken, ist das allerdings falsch, wenn dort ein True verlangt wird. Also kann ich mit Convert to Boolean, diese Funktion, das Ganze umwandeln, mit F5 sehen Sie jetzt, dann kommt dort der logische Wahrheitswert "Wahr" raus. Das wird hier zwar als Text ausgedruckt, aber es ist ein logischer Wahrheitswert, der im Hintergrund auch wieder den Wert -1 hat, aber manchmal ist es wichtig, und wenn Sie mal herausbekommen müssen, welchen Datentyp irgendwas hat, dann können Sie mit der seltenst gebrauchten Funktion TypeName das einfach abfragen, also hier mit der F5-Taste sehen Sie jetzt, das ist offenbar ein Boolean geworden, das, was ursprünglich eine Zahl war. Das brauchen wir jetzt hier nicht, nur einmal, dass Sie's gesehen haben, wenn es denn mal wirklich analysiert werden muss. Um Ihnen zu zeigen, wo das Probleme geben könnte, und wie man die vielleicht lösen kann, brauche ich erstmal eine weitere Konstante. Also "const m_c", dieses Mal eine Stringkonstate, nennen wir es "const m_cstrBetrag=123.456,78 Euro". Und Sie sehen ganz deutlich, das ist ein String, und den versuche ich jetzt, weil ich damit rechnen möchte, umzuwandeln. Also "MachZuZahl", im ersten Anlauf will ich mit "DebugPrint" den Wert selber ausgeben, damit ich das gleich unten im Vergleich sehe. Und im zweiten Anlauf gibt es eine Funktion, die ist eigentlich genau dafür gedacht, die Value-Funktion, oder kurz nur "val", kann aus einer Zeichenkette, wenn's irgendwie möglich ist, eine Zahl machen. Schauen wir mal einfach, was dabei rauskommt. Also, wenn ich das jetzt gecheckt hab, keine Meldung ist eine gute Meldung, und mit F5 laufen lasse, dann sieht das auf den ersten Blick ganz gut aus, aber wenn Sie genau hingucken, dass ist die Zahl 123.000 und so weiter, und dieses ist nur die Zahl 123,. Das werden Sie sehen, sobald Sie das multiplizieren oder sonstwie umwandeln, es ist eine Zahl, das würde hier nicht funktionieren, aber es ist leider immer noch die Zahl 246, nämlich das doppelte von 123. Ich nehme hier die Multiplikation mal wieder raus. Das Problem bei der Value-Funktion ist, die bemüht sich redlich, das muss man ihr zugute halten, aber sie liest die amerikanischen Varianten, aber die ignoriert deswegen hier das Komma, weil sie bereits ein Komma in ihrem Sinne entdeckt hat, und dahinter kein Tausender-Zeichen mehr kommen darf. Deswegen bleibt nur die Zahl 123, ohne die Multiplikation, übrig. Also, direkt als Kommentar: "Achtung, nur amerikanische Zahlen!" wenn sie denn formatiert sind. Wenn dort weder Punkt noch Komma drin gewesen wäre, wäre das alles super. Mit "debug.Print" probiere ich jetzt die Alternative, die nämlich auch landessprachlich arbeitet, Convert to Double, und die jetzt den Betrag übergeben bekommt, und dann mit F5 zeigen kann, was sie leistet, nämlich nichts. Die kommt nicht damit klar, dass hier Zeichen drin sind, also mit "Beenden", das scheitert. Jetzt können wir das insofern verbessern, wenn ich hier einfach die Euro mal rausschmeiße, und das dann laufen lasse, dann sehen Sie, dass die Convert to Double-Funktion tatsächlich korrekt die Zahl erkennt, während die Value-Funktion das missverständlich, nämlich nach amerikanischen Trennzeichen untersucht. Die Value-Funktion ist nur besser, wenn irgendein Text dahinter steht, und es ist keine Nachkomma-Zahl. Also, ich erfinde einfach noch mal eben schnell eine Konstante, sagen wir "Anzahl=123456 Stück", und wenn Sie jetzt hier die Anzahl nehmen, und da entsprechend, dann wird die Convert to Double-Funktion scheitern, aber die Value-Funktion wunderbar damit klarkommen, also Convert to Double macht eine Fehlermeldung, aber die Value-Funktion hat die Texte ignoriert, und den Rest, soweit es irgendwie geht, umgewandelt. Da müssen Sie leider ein bisschen abwägen, ob Sie Ganzzahlen erwarten, dann ist Value gut, oder ob Sie Nachkommastellen erwarten, dann ist Convert to Double besser, aber dann dürfen da keine Texte drin sein, möglicherweise müssen Sie dann vorher die Texte daraus entfernen.

Excel 2016 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2016, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!