Comment convertir la valeur entière "45" en valeur de chaîne "45" dans Excel VBA?
vba
string
type-conversion
integer
Quoi de neuf
la source
la source
CStr(45)
, pour être précis.CStr(CDbl(***))
7
devient007
. Vous pouvez également spécifier le nombre de décimales ou inclure des milliers de séparateurs. Si ces détails sont importants pour vous: excelfunctions.net/vba-format-function.htmlEssayez la fonction CStr ()
la source
La plupart du temps, vous n'aurez pas besoin de «convertir»; VBA effectuera une conversion de type implicite en toute sécurité pour vous, sans utiliser de convertisseurs comme
CStr
.Le code ci-dessous fonctionne sans aucun problème, car la variable est de type String et la conversion de type implicite est effectuée automatiquement pour vous!
Résultat:
Vous n'avez même pas besoin d'avoir cette fantaisie, cela fonctionne aussi:
Le seul moment où vous aurez besoin de convertir est lorsque la variable Type est ambiguë (par exemple, Type Variant ou une Cellule
Value
(qui est Variant)).Même dans ce cas, vous n'aurez pas à utiliser la
CStr
fonction si vous composez avec une autre variable ou constante String. Comme ça:Donc, vraiment, le seul cas rare est celui où vous voulez vraiment stocker une valeur entière, dans une variante ou une valeur de cellule, sans également composer avec une autre chaîne (ce qui est un cas secondaire assez rare, je pourrais ajouter):
la source
Option Base 1
implicites basés sur 1 avec , de typage implicite avecDef[Type]
(garçon c'est EVIL!), Implicite ... vous comprenez - la seule bonne chose implicite dans VBA est la syntaxe d'appel implicite qui a rendu l'expliciteCall
obsolète.Dans mon cas, la fonction CString n'a pas été trouvée. Mais l'ajout d'une chaîne vide à la valeur fonctionne aussi.
la source
CString
, qui est une fonction VB.NET. Concaténer un littéral de chaîne vide pour créer une chaîne est une méthode de conversion assez boiteuse. UtilisezCStr
pour les conversions de type explicite - il s'agit d'une conversion de type implicite et soulève les sourcils de toute personne lisant ce code. Désolé d'avoir trouvé cette réponse si tard après sa publication, j'aurais aimé pouvoir la voter beaucoup plus tôt.Si la chaîne que vous tirez 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 String. Une façon 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:
la source
Le moyen le plus court sans déclarer la variable est avec les indices de type :
Cela ne compilera pas avec
Option Explicit
. Les types ne seront pasVariant
maisString
etInteger
la source
Une autre façon de procéder consiste à assembler deux sections analysées de la valeur numérique:
J'ai trouvé un meilleur succès avec cela que
CStr()
parceCStr()
que ne semble pas convertir les nombres décimaux provenant de variantes de mon expérience.la source
Si vous avez une valeur entière valide et que votre exigence est de comparer les valeurs, vous pouvez simplement poursuivre la comparaison comme indiqué ci-dessous.
la source
La réponse acceptée est bonne pour les petits nombres, surtout lorsque vous prenez des données à partir de feuilles Excel. car les plus grands nombres seront automatiquement convertis en nombres scientifiques, c'est-à-dire e + 10.
Je pense donc que cela vous donnera une réponse plus générale. Je n'ai pas vérifié s'il y avait une chute ou non.
cela fonctionnera pour les nombres convertis e +! comme le juste
CStr(7.7685099559e+11)
sera affiché comme "7.7685099559e + 11" pas comme prévu: "776850995590" Donc je préfère dire que ma réponse sera un résultat plus générique.Cordialement, M
la source
Reffer: MrExcel.com - Convertir des nombres en texte avec VBA
la source