texto - convertir variable string a integer vba
¿Cómo convierto un entero en una cadena en Excel VBA? (7)
¿Cómo convierto el valor integer
"45" en el valor de string
"45" en Excel VBA?
El camino más corto sin declarar la variable es con sugerencias de tipo:
s$ = 123 '' s = "123"
i% = "123" '' i = 123
Esto no se compilará con Option Explicit
. Los tipos no serán Variant
pero String
e Integer
En mi caso, la función CString no se encontró. Pero agregar una cadena vacía al valor también funciona.
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
La mayoría de las veces, no necesitarás "convertir"; VBA hará una conversión de tipo implícita segura para usted, sin el uso de convertidores como CStr
.
El código a continuación funciona sin problemas, porque la variable es de Tipo Cadena, y la conversión de tipo implícita se realiza automáticamente.
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
Resultado:
"Mi número es: 0"
Ni siquiera tiene que ser tan elegante, esto también funciona:
Dim myString as String
myString = 77
"77"
La única vez que DEBERÁ convertir será cuando la variable Tipo sea ambigua (por ejemplo, Variante de tipo o Value
una celda (que es Variante)).
Incluso entonces, no tendrá que usar la función CStr
si está CStr
con otra variable de cadena o constante. Me gusta esto:
Sheet1.Range("A1").Value = "My favorite number is " & 7
"Mi número favorito es 7"
Entonces, en realidad, el único caso raro es cuando realmente quieres almacenar un valor entero, en una variante o valor de Celda, cuando no también se combina con otra cadena (lo cual es un caso secundario bastante raro, podría agregar):
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"
Otra forma de hacerlo es empalmar dos secciones analizadas del valor numérico juntas:
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
He encontrado un mejor éxito con esto que CStr()
porque CStr()
no parece convertir números decimales que provienen de variantes en mi experiencia.
Pruebe la función CStr ()
Dim myVal as String;
Dim myNum as Integer;
myVal = "My number is:"
myVal = myVal & CStr(myNum);
Si la cadena que está utilizando resulta ser un número hexadecimal como E01, Excel lo traducirá como 0 incluso si usa la función CStr e incluso si la deposita primero en un tipo de variable String. Una forma de resolver el problema es agregar ''al comienzo del valor.
Por ejemplo, al extraer valores de una tabla de Word y llevarlos a Excel:
strWr = "''" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
cstr (45) Creo que es todo lo que necesitas (cadena de conversión)