Ingresar datos a un textbox y que lo guarde como numero

Quisiera saber como validar los ingresos de solo números en un textbox y que al momento de guardarlos en una hoja de calculo también me los guarde como numero.

He utilizado:

Private Sub textbox2_Exit(ByVal cancel As Msforms.ReturnBoolean)
TextBox2.Value = FormatNumber(TextBox2.Value, 0)
End Sub

Pero no logro guardarlo en la hoja de calculo como numero, al momento de visualizarlo me aparece un pequeño mensaje que dice: " El número de esta celda tiene formato de texto o va precedido por un apostrofo"

Gracias por sus consejos

Respuesta
1

Para permitir solamente números en el textbox:

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then KeyAscii = 0
End Sub

Los textbox, como su nombre lo dice almacena los datos como  tipo texto, lo mismo pasa con los combo y los datos en el listbox.

Para pasar el dato del textbox a la hoja como valor numérico, puede ser así:

Private Sub CommandButton1_Click()
    fila = Range("B" & Rows.Count).End(xlUp).Row + 1
    If TextBox2.Value = "" Then t2 = 0 Else t2 = TextBox2.Value
    Cells(fila, "B").Value = CDbl(t2)
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Soy nuevo programando en vba macros de excel... me gustaría que me expliques si es que se puede el código.

Gracias

Con todo gusto.

En esta instrucción:

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then KeyAscii = 0
End Sub

Cada que presionas una tecla dentro del textbox2, en el argumento  KeyAscii te regresa el número ascii que corresponde a la tecla presionada.

Para los valores del 0 al 9 sus correspondientes números Ascii van del 48 al 57, entonces si presionas una tecla con número ascii distinto al rango del 48 al 57, entonces regresa un valor 0 al argumento KeyAscii; el 0 significa nada. Por eso si presionas una letra A, por ejemplo, entonces en el textbox no escribe nada.


Y en la siguiente instrucción

Private Sub CommandButton1_Click()
    fila = Range("B" & Rows.Count).End(xlUp).Row + 1
    If TextBox2.Value = "" Then t2 = 0 Else t2 = TextBox2.Value
    Cells(fila, "B").Value = CDbl(t2)
End Sub

Solamente pregunto si el dato del textbox es difetente de espacio, si es diferente, entonces con la instrucción CDbl lo convierte a valor numérico.

Esta línea, solamente la debes considerar como un ejemplo:

fila = Range("B" & Rows.Count).End(xlUp).Row + 1

Yo no sé cómo estás escribiendo el dato en la celda.

Puede ser así:

Range("B5").value = cdbl(t2)

son solamente ejemplos, debes adaptarlo a tu código.


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 

2 respuestas más de otros expertos

Respuesta

Usa esto como ejemplo

Private Sub TextBox1_AfterUpdate()
NUMERO = IsNumeric(TextBox1.Text) = False
If NUMERO Then
    MsgBox ("ESTE CAMPO SOLO ACEPTA NUMEROS"), vbCritical, "AVISO EXCEL"
    TextBox1.Text = vbNullString
Else
Range("A1") = Val(TextBox1.Text)
End If
End Sub
Respuesta

Esto puede aportar algo más, no deja a medidas que escribes insertar otro caracteres solo se puede ingresar números

https://youtu.be/5IagqWxjLmk

https://youtu.be/q4apNBwTMrg

https://youtu.be/gE64ac1xA0E

https://youtu.be/t-BEKHabD2g

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas