Comment convertir la valeur integer "45" en valeur string "45" dans Excel VBA?
cstr(45)
est tout ce dont vous avez besoin (chaîne de conversion)
Essayez la fonction CStr ()
Dim myVal as String;
Dim myNum as Integer;
myVal = "My number is:"
myVal = myVal & CStr(myNum);
La plupart du temps, vous n'avez pas besoin de "convertir"; VBA effectuera pour vous une conversion de type implicite sécurisée, sans l’utilisation de convertisseurs tels que CStr
.
Le code ci-dessous fonctionne sans problème, car la variable est de type chaîne et la conversion de type implicite est faite pour vous automatiquement!
Dim myVal As String
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 d'avoir cette fantaisie, cela fonctionne aussi:
Dim myString as String
myString = 77
"77"
La conversion de la variable Type est uniquement ambiguë (par exemple, Variant de type ou la variable Value
d'une cellule (qui est la variante)).
Même dans ce cas, vous ne devrez pas utiliser la fonction CStr
si vous composez avec une autre variable ou constante String. Comme ça:
Sheet1.Range("A1").Value = "My favorite number is " & 7
"Mon numéro préféré est 7"
Donc, vraiment, le seul cas rare se produit lorsque vous voulez vraiment stocker une valeur entière, dans une valeur de variante ou de cellule, lorsque not est également composé avec une autre chaîne Je pourrais ajouter):
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 CString n'a pas été trouvée . Mais l'ajout d'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 extrayez est un nombre hexadécimal tel que E01, Excel la 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 Chaîne. Un moyen de contourner le problème consiste à ajouter au début de la valeur.
Par exemple, lors de l'extraction de valeurs d'un tableau Word et de leur transfert vers Excel:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
Le moyen le plus court sans déclarer la variable est d'utiliser des conseils de type:
s$ = 123 ' s = "123"
i% = "123" ' i = 123
Cela ne compilera pas avec Option Explicit
. Les types ne seront pas Variant
mais String
et Integer
Si vous avez une valeur entière valide et que votre exigence est de comparer les valeurs, vous pouvez simplement procéder à la comparaison comme indiqué ci-dessous.
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
Une autre façon de procéder consiste à associer 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 ceci qu'avec CStr()
car CStr()
ne semble pas convertir les nombres décimaux issus de variantes de mon expérience.