wake-up-neo.net

Wie konvertiere ich eine Ganzzahl in eine Zeichenfolge in Excel VBA?

Wie konvertiere ich den IntegerWert "45" in den StringWert "45" in Excel VBA?

137
What'sUP

cstr(45) ist alles was Sie brauchen (Konvertierungsstring)

214
Yosem

Versuchen Sie die CStr () - Funktion

Dim myVal as String;
Dim myNum as Integer;

myVal = "My number is:"
myVal = myVal & CStr(myNum);
94
Brian

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 problemlos, da die Variable vom Typ String ist und implizite Typumwandlungen automatisch für Sie vorgenommen werden!

Dim myVal As String
Dim myNum As Integer

myVal = "My number is: "
myVal = myVal & myNum

Ergebnis:

"Meine Nummer ist: 0"

Sie müssen nicht einmal Lust bekommen, das funktioniert auch:

Dim myString as String
myString = 77

"77"

Die einzige Zeit, die Sie konvertieren müssen, ist, wenn die Variable Type mehrdeutig ist (z. B. Typvariante oder Value einer Zelle (die ist Variante)).

Selbst dann müssen Sie die Funktion CStr nicht verwenden, wenn Sie mit einer anderen String-Variablen oder -Konstante zusammensetzen. So was:

Sheet1.Range("A1").Value = "My favorite number is " & 7

"Meine Lieblingsnummer ist 7"

Der einzige Fall rare ist wirklich, wenn Sie wirklich einen ganzzahligen Wert in eine Variante oder einen Zellenwert speichern möchten, wenn nicht auch mit einem anderen String kombiniert wird (was ein ziemlich seltener Ich möchte hinzufügen):

Dim i as Integer
i = 7
Sheet1.Range("A1").Value = i

7

Dim i as Integer
i = 7
Sheet1.Range("A1").Value = CStr(i)

"7"

42
LimaNightHawk

In meinem Fall wurde die Funktion CString nicht gefunden. Aber das Hinzufügen eines leeren Strings zum Wert funktioniert auch.

Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
7

Wenn es sich bei der Zeichenfolge, die Sie ziehen, um eine Hexadezimalzahl wie E01 handelt, wird sie von Excel als 0 konvertiert, auch 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. 

Zum Beispiel, wenn Sie Werte aus einer Word-Tabelle abrufen und nach Excel übertragen:

strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
2
dolphus333

Der kürzeste Weg, ohne die Variable zu deklarieren, ist mit Typhinweisen:

s$ =  123   ' s = "123"
i% = "123"  ' i =  123

Dies wird nicht mit Option Explicit kompiliert. Die Typen werden nicht Variant sein, sondern String und Integer

1
Slai

Wenn Sie einen gültigen ganzzahligen Wert haben und Werte vergleichen möchten, können Sie den unten gezeigten Vergleich einfach fortsetzen.

Sub t()

Dim i As Integer
Dim s  As String

' pass
i = 65
s = "65"
If i = s Then
MsgBox i
End If

' fail - Type Mismatch
i = 65
s = "A"
If i = s Then
MsgBox i
End If
End Sub
0
user2648008

Eine andere Möglichkeit besteht darin, zwei geparste Abschnitte des numerischen Werts miteinander zu verbinden:

Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))

Ich habe hier einen besseren Erfolg gefunden als CStr(), da CStr() scheinbar keine Dezimalzahlen konvertiert, die aus meiner Erfahrung aus Varianten stammen.

0
Jonathan