No consigo poner la coma en el formulario.

¿Qué hago mal? Los números funcionan correctamente y al poner la coma da error.

Option Compare Database

Private Sub Comando0_Click()
On Error GoTo Err_Comando0_Click

Dim stDialStr As String
Dim PrevCtl As Control
Const ERR_OBJNOTEXIST = 2467
Const ERR_OBJNOTSET = 91
Const ERR_CANTMOVE = 2483

Set PrevCtl = Screen.PreviousControl
If TypeOf PrevCtl Is TextBox Then
stDialStr = IIf(VarType(PrevCtl) > V_NULL, PrevCtl, "")
ElseIf TypeOf PrevCtl Is ListBox Then
stDialStr = IIf(VarType(PrevCtl) > V_NULL, PrevCtl, "")
ElseIf TypeOf PrevCtl Is ComboBox Then
stDialStr = IIf(VarType(PrevCtl) > V_NULL, PrevCtl, "")
Else
stDialStr = ""
End If
Application.Run "utility.wlib_AutoDial", stDialStr

Exit_Comando0_Click:
Exit Sub

Err_Comando0_Click:
If (Err = ERR_OBJNOTEXIST) Or (Err = ERR_OBJNOTSET) Or (Err = ERR_CANTMOVE) Then
Resume Next
End If
MsgBox Err.Description
Resume Exit_Comando0_Click
End Sub

1 respuesta

Respuesta
2

Tu pregunta deja bastantes cosas en el aire, como ¿para qué pones el código de Comando0_Click si luego en la imagen el error te lo marca en otro código? ¿Qué error te da (número y descripción?

Por lo que veo (además de que con esos nombres de botones es imposible saber a cual se refiere cada uno), tu código tiene varios defectos:

El más "gordo" (y el que casi fijo que te provoca el error) es que usas la propiedad Text del cuadro de texto para recuperar su valor, y eso es un error porque solo te sirve cuando el cuadro de texto tiene el foco, y al pulsar el botón el foco ya lo tienes el el botón, no en el cuadro de texto. Para recuperar el valor, es mejor usar Value, salvo que estés programando el evento "al cambiar". Puedes ver aquí un debate al respecto que tuvimos en otro foro: http://nksvaccessolutions.com/Foro/viewtopic.php?f=7&t=1334 

Cuando trabajas con código VBA, el separador decimal no es la coma (,), sino el punto (.), porque, para entendernos, VBA es un lenguaje "americano" y como tal, usa notación americana (igual que las fechas las formatea como mm/dd/yyyy). Por eso en VBA no puedes poner:

Me.Texto1=12,25

y sí:

Me.Texto1=12.25

A pesar de esto, cuando le pasas un valor numérico con decimales de un cuadro de texto, Access se encarga de darle el formato adecuado al manejarlo por código.

Para terminar, puedes simplificar mucho los códigos de tus botones poniendo simplemente esta linea (con el nombre de cada botón) para los números y la coma:

Private Sub Comando2_Click()
Me.Texto0 = Me.Texto0 & Me.Comando2.Caption
End Sub

Un saludo.


Ahora que me fijo en tu imagen, Text sí te valdría porque le devuelves el foco al cuadro de texto, pero si quieres escribir menos código, acostúmbrate a usar Value (que además es la propiedad por defecto y ni siquiera hace falta que lo escribas: es lo mismo poner Me. Texto2 que Me. Texto2.Value)

De todas formas, el código que te propongo al final funciona perfectamente y con una sola línea hace lo mismo que las 4 tuyas

¡Gracias! Cambie todo el código y ocupa mucho menos, queda más limpio. Y lo más importante es que funciona incluido el punto y la coma. Muchas gracias de nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas