variable texto parse numero fecha entero convertir cint string excel-vba integer type-conversion

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)