Pedir un numero por msgbox

Estoy intentando desarrollar un código vba que al cargar un informe me pida un numero y me de las opciones aceptar o cancelar. Al darle aceptar entre en el informe y al cancelar se vaya a un formulario. El numero que pido es por que en el informe tengo un campo el cual me pide para añadirle un día más o un día menos al día en el que estamos.

2 Respuestas

Respuesta
1

¿Un InputBox no te sirve? Así:

Dim numero As String
Numero = InputBox("Escriba un numero", "Numero", "0")

Los inputbox devuelven un string, luego puedes convertirlo a integer si quieres, o declararlo integer desde el comienzo y validarlo en el momento.

Ese código muestra un inputbox con un valor predeterminado de 0. eso es opcional.

Andy M.

Yo ahora mismo lo tengo que al entrar me salta una ventanita pidiéndome un numero pero si le doy aceptar me añade ese numero pero si le doy a cancelar se cierra esa ventanita típica ventanita de pedir dato en consulta y no me hace nada más. Y si con un inputbox me funciona genial. En el informe tengo puesto un textlabel donde recoge ese numero y tengo otro textlabel con la función =fecha + el número así me suma el numero o me lo resta

Y si te funciona genial, ¿cuál es el problema?

Q cuando le doy a cancelar no hace nada. Y quiero configurarlo en plan ventanita msgbox

Yo es que de código vba no me entero mucho no sabría juntar el inputbox para darle el valor después a mi campo fecha y que a su vez si le doy a cancelar vuelva a la ventana anterior

¿Qué es lo que quieres que suceda si le da a cancelar?

Si es aceptar abrir un informe si es cancelar abrir un formulario

Lo puedes hacer así (substituye el comentario por el código correspondiente):

Dim numero As String
numero = InputBox("Escriba un numero", "Numero", "0")
If numero = vbNullString Then
    'aqui pones lo que debe pasar si le dan a Cancelar'
Else
    'aqui pones lo que debe pasar si le dan a Aceptar'
End If

Andy M.

Respuesta
2

Te voy a dar otra idea. Lo normal es que abras el informe desde algún formulario, no se suele usar la ventana de navegación para abrir informes. Y la opción de abrir o cerrar un informe venga antes de que ya lo estés abriendo. Por eso, en cualquier evento de un formulario, por ejemplo, al hacer clic de un botón pongas algo así como

Private Sub Comando55_Click()
Dim respuesta As Byte
respuesta = MsgBox("¿ Está seguro de querer abrirlo?", vbOKCancel, "Habla ahora o calla para siempre")
If respuesta = vbOK Then
DoCmd.OpenReport "clientes", acPreview
ElseIf respuesta = vbCancel Then
DoCmd.OpenForm "yoquese"
End If
End Sub

Y en el evento al cargar del informe le pongas

Private Sub Report_Load()
Dim i As Integer
i = InputBox("Escribe un numero", "gracias")
Texto11 = i
End Sub

Es decir, primero abro o no abro el informe. En caso de que diga no, que me abra el formulario. En caso de que decida que sí, entonces me pregunte.

Private Sub Report_Load()
Dim i As Integer
Dim Message, Title, Default, MyValue
Message = "Inserte nº para Fecha Siendo: " & vbCrLf & " - ( 1 ) para un Día Mas" & vbCrLf & " - ( -1 ) para un Día Menos" & vbCrLf & " - ( 0 ) para el Actual"
Title = "Pregunta?" ' Set title.
Default = "1" ' Set default.
' Display message, title, and default value.
MyValue = InputBox(Message, Title, Default)
Texto11 = MyValue
End Sub

Este código es más acertado, aunque si le doy a cancelar me sigue abriendo el informe, me gustaría que no siguiera al darle a cancelar y se abriera el formulario, pero bueno me funciona, gracias se puede dar por cerrado el tema.

Muchas gracias

Eso de que es más acertado es tu opinión. ¿Para qué definir variables si vas a escribir su valor? Es decir, ¿para que definir message, title, etc, si vas a tener que escribir

message=.....

Title=.....

Ya lo pones directamente

Inputbox("Inserte...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas