¿Cómo convierto el valor entero "45" en el valor de cadena "45" en Excel VBA?
vba
string
type-conversion
integer
Qué pasa
fuente
fuente
CStr(45)
, para ser preciso.CStr(CDbl(***))
7
convierta007
. También puede especificar el número de decimales o incluir miles de separadores. Si estos detalles son importantes para usted: excelfunctions.net/vba-format-function.htmlPruebe la función CStr ()
fuente
La mayoría de las veces, no necesitará "convertir"; VBA hará una conversión de tipo implícita segura para usted, sin el uso de convertidores como
CStr
.¡El siguiente código funciona sin problemas, porque la variable es de tipo cadena y la conversión de tipo implícita se realiza automáticamente!
Resultado:
Ni siquiera tienes que ponerte tan elegante, esto también funciona:
El único momento que TENDRÁ que convertir es cuando la variable Tipo es ambigua (por ejemplo, Tipo Variante o Celda
Value
(que es Variante)).Incluso entonces, no tendrá que usar la
CStr
función si se está combinando con otra variable o constante de cadena. Me gusta esto:Entonces, realmente, el único caso raro es cuando realmente desea almacenar un valor entero, en una variante o valor de celda, cuando no se combina con otra cadena (que es un caso secundario bastante raro, podría agregar):
fuente
Option Base 1
implícitas basadas en 1 con , tipeo implícito conDef[Type]
(¡vaya, MAL!), Implícito ... lo entiendes: lo único bueno implícito en VBA es la sintaxis de llamada implícita que hizo que lo explícitoCall
quedara obsoleto.En mi caso, no se encontró la función CString. Pero agregar una cadena vacía al valor también funciona.
fuente
CString
, que es una función VB.NET. Concatenar un literal de cadena vacío para hacer una cadena es un método de conversión bastante aburrido. ÚseloCStr
para conversiones de tipo explícitas: esta es una conversión de tipo implícita y levanta las cejas de cualquiera que lea ese código. Lo siento, encontré esta respuesta tan tarde después de que se publicó, desearía haberla votado mucho antes.Si la cadena que está tirando resulta ser un número hexadecimal como E01, Excel la traducirá a 0 incluso si usa la función CStr, e incluso si la deposita primero en un tipo de variable de cadena. Una forma de evitar el problema es agregar 'al comienzo del valor.
Por ejemplo, al extraer valores de una tabla de Word y llevarlos a Excel:
fuente
El camino más corto sin declarar la variable es con sugerencias de tipo :
Esto no se compilará con
Option Explicit
. Los tipos no seránVariant
sinoString
yInteger
fuente
Otra forma de hacerlo es unir dos secciones analizadas del valor numérico:
He encontrado un mayor éxito con esto que
CStr()
porqueCStr()
no parece convertir números decimales que provienen de variantes en mi experiencia.fuente
Si tiene un valor entero válido y su requisito es comparar valores, simplemente puede continuar con la comparación como se ve a continuación.
fuente
La respuesta aceptada es buena para números más pequeños, lo más importante mientras toma datos de hojas de Excel. ya que los números más grandes se convertirán automáticamente en números científicos, es decir, e + 10.
Así que creo que esto te dará una respuesta más general. No comprobé si tiene alguna caída o no.
¡Esto funcionará para los números convertidos e +! como el justo
CStr(7.7685099559e+11)
se mostrará como "7.7685099559e + 11" no como se esperaba: "776850995590" Así que prefiero decir que mi respuesta será un resultado más genérico.Saludos, M
fuente
Reffer: MrExcel.com - Convierta números a texto con VBA
fuente