Comment convertir un entier en chaîne dans Excel VBA?

Comment convertir la valeur entière “45” dans la valeur de chaîne “45” dans Excel VBA?

cstr(45) est tout ce dont vous avez besoin (convert chaîne)

Essayez la fonction CStr ()

 Dim myVal as Ssortingng; Dim myNum as Integer; myVal = "My number is:" myVal = myVal & CStr(myNum); 

La plupart du temps, vous n’aurez pas besoin de “convertir”; VBA fera la conversion de type implicite en toute sécurité, sans l’utilisation de convertisseurs comme CStr .

Le code ci-dessous fonctionne sans aucun problème, car la variable est de type Ssortingng et la conversion de type implicite est effectuée automatiquement pour vous!

 Dim myVal As Ssortingng Dim myNum As Integer myVal = "My number is: " myVal = myVal & myNum 

Résultat:

“Mon numéro est: 0”

Vous n’avez même pas besoin de cette fantaisie, cela fonctionne aussi:

 Dim mySsortingng as Ssortingng mySsortingng = 77 

“77”

La seule fois où vous devrez convertir, c’est lorsque la variable Type est ambiguë (par exemple, Variante de type ou Value une cellule (qui est une variante)).

Même dans ce cas, vous n’aurez pas à utiliser la fonction CStr si vous utilisez une autre variable ou constante Ssortingng. Comme ça:

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

“Mon numéro préféré est 7”

Donc, en réalité, le seul cas rare est celui où vous voulez vraiment stocker une valeur entière, dans une variante ou une valeur de cellule, lorsque vous ne composez pas avec une autre chaîne (ce qui est un cas rare):

 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”

Dans mon cas, la fonction CSsortingng n’a pas été trouvée. Mais append une chaîne vide à la valeur fonctionne également.

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

Si la chaîne que vous tirez se trouve être un nombre hexadécimal tel que E01, alors Excel le traduira par 0 même si vous utilisez la fonction CStr, et même si vous la déposez d’abord dans un type de variable Ssortingng. Un moyen de contourner le problème consiste à append ‘au début de la valeur.

Par exemple, lorsque vous extrayez des valeurs d’un tableau Word et que vous les apportez à Excel:

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

Le moyen le plus court sans déclarer la variable est avec Type Hints:

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

Cela ne sera pas compilé avec Option Explicit . Les types ne seront pas Variant mais Ssortingng et Integer

Une autre façon de le faire consiste à assembler deux sections analysées de la valeur numérique:

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

J’ai eu plus de succès avec CStr() que CStr() ne semble pas convertir les nombres décimaux issus de variantes dans mon expérience.