Wie konvertiere ich den ganzzahligen Wert "45" in den Zeichenfolgenwert "45" in Excel VBA?
vba
string
type-conversion
integer
Was geht
quelle
quelle
CStr(45)
, um genau zu sein.CStr(CDbl(***))
7
wird007
. Möglicherweise möchten Sie auch die Anzahl der Dezimalstellen angeben oder tausend Trennzeichen einschließen. Wenn diese Details für Sie wichtig sind: excelfunctions.net/vba-format-function.htmlProbieren Sie die Funktion CStr () aus
quelle
In den meisten Fällen müssen Sie nicht "konvertieren". VBA führt für Sie eine sichere implizite Typkonvertierung durch, ohne die Verwendung von Konvertern wie
CStr
.Der folgende Code funktioniert ohne Probleme, da die Variable vom Typ String ist und die implizite Typkonvertierung automatisch für Sie erfolgt!
Ergebnis:
Sie müssen nicht einmal so ausgefallen sein, das funktioniert auch:
Die einzige Zeit , die Sie konvertieren brauchen, ist , wenn die Variable Typ nicht eindeutig ist (zB Typ Variant, oder einer Zelle
Value
(das ist Variant)).Selbst dann müssen Sie keine
CStr
Funktion verwenden, wenn Sie mit einer anderen String-Variablen oder -Konstante zusammensetzen. So was:Der einzig seltene Fall ist also, wenn Sie wirklich einen ganzzahligen Wert in einer Variante oder einem Zellenwert speichern möchten, wenn Sie nicht auch mit einer anderen Zeichenfolge zusammensetzen (was ein ziemlich seltener Nebenfall ist, möchte ich hinzufügen):
quelle
Option Base 1
, implizite Typisierung mitDef[Type]
(Junge, der böse ist!), Implizite ... Sie bekommen es - das einzig gute implizite Ding in VBA ist die implizite Aufrufsyntax, die das expliziteCall
obsolet gemacht hat.In meinem Fall wurde die Funktion CString nicht gefunden. Das Hinzufügen einer leeren Zeichenfolge zum Wert funktioniert jedoch auch.
quelle
CString
, was eine VB.NET-Funktion ist. Das Verketten eines leeren String-Literals zu einem String ist eine ziemlich lahme Konvertierungsmethode. VerwendungCStr
für explizite Typkonvertierungen - Dies ist eine implizite Typkonvertierung und zieht die Augenbrauen aller Personen hoch, die diesen Code lesen. Es tut mir leid, dass ich diese Antwort so spät gefunden habe, nachdem sie veröffentlicht wurde. Ich wünschte, ich hätte sie viel früher ablehnen können.Wenn die Zeichenfolge, die Sie einlesen, eine Hex-Zahl wie E01 ist, übersetzt Excel sie in 0, selbst wenn Sie die CStr-Funktion verwenden und wenn Sie sie zuerst in einem String-Variablentyp ablegen. Eine Möglichkeit, das Problem zu umgehen, besteht darin, an den Anfang des Werts anzuhängen.
Wenn Sie beispielsweise Werte aus einer Word-Tabelle ziehen und nach Excel bringen:
quelle
Der kürzeste Weg ohne Deklaration der Variablen ist mit Type Hints :
Dies wird nicht mit kompiliert
Option Explicit
. Die Typen werden nichtVariant
aberString
und seinInteger
quelle
Eine andere Möglichkeit besteht darin, zwei analysierte Abschnitte des numerischen Werts miteinander zu verbinden:
Ich habe damit einen besseren Erfolg gefunden, als
CStr()
weilCStr()
ich nach meiner Erfahrung keine Dezimalzahlen konvertieren möchte, die aus Varianten stammen.quelle
Wenn Sie einen gültigen ganzzahligen Wert haben und Werte vergleichen möchten, können Sie den Vergleich einfach wie unten dargestellt durchführen.
quelle
Die akzeptierte Antwort ist gut für kleinere Zahlen, vor allem, wenn Sie Daten aus Excel-Tabellen entnehmen. da die größeren Zahlen automatisch in wissenschaftliche Zahlen umgewandelt werden, dh e + 10.
Ich denke, dies wird Ihnen eine allgemeinere Antwort geben. Ich habe nicht überprüft, ob es einen Sturz gibt oder nicht.
Dies funktioniert für e + konvertierte Zahlen! da das gerade
CStr(7.7685099559e+11)
als "7.7685099559e + 11" nicht wie erwartet angezeigt wird: "776850995590" Ich möchte also eher sagen, dass meine Antwort ein allgemeineres Ergebnis sein wird.Grüße, M.
quelle
Reffer: MrExcel.com - Konvertieren Sie Zahlen mit VBA in Text
quelle