¿Como tomar formato "numero" en VBA en hoja de Excel?

Estoy empezando con VBA y, aunque tengo algo de conocimiento de programación, tengo un problema trabajando en un userform que almacena datos alfanuméricos en un libro de ventas en Excel. El problema es que al hacerlo los datos numéricos se copian como texto no como numero y por lo tanto no me es posible hacer otras operaciones matemáticas en Excel con esos datos. Este es mi código en VBA:

Private Sub Aceptar_Click()
Dim fila As Integer

'Obtengo la fila disponible
fila = Application.WorksheetFunction.CountA(Range("A:A")) + 1

'Inserto datos capturados
Cells(fila, 1).Value = CalculaIva.TextBox1.Value
Cells(fila, 2).Value = CalculaIva.TextBox2.Value
Cells(fila, 3).Value = CalculaIva.TextBox3.Value
Cells(fila, 4).Value = CalculaIva.TextBox4.Value
'Limpio cajas de texto
CalculaIva.TextBox1.Value = ""
CalculaIva.TextBox2.Value = ""
CalculaIva.TextBox3.Value = ""
CalculaIva.TextBox4.Value = ""
'Notifico al usuario
MsgBox "Datos insertados en la fila " & fila
'Cierro el formulario
End
End Sub

Adicionalmente quisiera que si TextBox1 esta en blanco o cero, haya un MsgBox que alerte al usuario y no permita que se copien los datos en la hoja de Excel hasta que TextBox1 sea mayor a cero. No he podido desarrollar esa parte.

Posiblemente es una tonteria mi error o si tienen otra forma de hacer que funcione mucho agradezco de antemano su ayuda

2 Respuestas

Respuesta
1

Para los textbox que sean numéricos, podés modificar la instrucción, por ejemplo, si el TextBox1 debe ser numérico, podrías poner algo así:

Cells(fila, 1).Value = Val(CalculaIva.TextBox1.Value)

Respecto a la validación que querés hacer para que no te deje avanzar si el TextBox1 es menor que cero, entonces podrías poner:

Private Sub Aceptar_Click()
Dim fila As Integer

'Obtengo la fila disponible

If Val(CalculaIva.TextBox1.Value) <= 0 Then

  Exit Sub

End If

'... sigue tu código

¡Gracias! Funcionó a la perfección!

Una consulta de nuevo:

Al insertar los datos en la hoja de Excel : no me esta tomando los miles, es decir, si textbox1 es igual a 1000 en la hoja de Excel solo me lo toma como 1. Que puedo hacer?

Debes cambiar la valoración si quieres seguir teniendo respuestas mías.

Hecho

Supongo que lo que tienes mal es el formato numérico. Algunas opciones:

1. Cuando pusiste 1000. ¿Lo pusiste con el separador de millares?

2. En Opciones > Avanzadas, fijate si está tildada la opción "Insertar automáticamente un punto decimal..."

Fuera de estas opciones, debería ver el archivo para intentar localizar otro posible error.

Respuesta
1

:)

Hola! Franklin (y Gustavo)

Existen varias razones por las que ese "mil" te estaría pasando a la celda como "uno".

Para asesorarte adecuadamente te agradeceré que incorpores a tu libro (o, si quieres en un libro nuevo) la siguiente macro:

Sub Macro1()
With Application
  Range("A1") = .UseSystemSeparators & " / " & _
    .DecimalSeparator & " / " & .ThousandsSeparator & vbLf & _
    Format("10000" / 7, "0,000.00") & vbLf & _
    Val("12.34") & vbLf & Val("12,34"): End With
With Range("A1"): .ColumnWidth = 15: .RowHeight = 75: End With
End Sub

Tras ejecutarla, copia y pega en un mensaje en este intercambio lo que veas en la celda A1 ya que esa info nos dirá todo lo que necesitamos saber de tu configuración regional y de la configuración numérica de tu Excel, ¿Ok?

Saludos, Mario R.

:)

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas