Foros del Web » Soporte técnico » Ofimática »

Como NO predeterminar una opción de un msgbox

Estas en el tema de Como NO predeterminar una opción de un msgbox en el foro de Ofimática en Foros del Web. Ahora me toca preguntar a mí, después de ayudar a tantos. Esta es la situación para que entendais mi duda. Durante la ejecución de una ...
  #1 (permalink)  
Antiguo 26/05/2006, 01:40
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Exclamación Como NO predeterminar una opción de un msgbox

Ahora me toca preguntar a mí, después de ayudar a tantos.
Esta es la situación para que entendais mi duda. Durante la ejecución de una parte del programa tengo que copiar celdas con nombre propio. Cuando pegas dichas celdas te pregunta mediante una ventana que si quieres mantener el nombre. Contestas que si y te lo pone igual. Ningún problema.
Resulta que tengo muchas celdas con nombre propio y por tanto, te hace muchas preguntas seguidas como la anterior.
Cuando termina con esto, quiero hacer una pregunta que es importante que el usuario lea.
El problema es el siguiente: como son muchas preguntas se tiende a presionar el intro y mantenerlo así hasta que acaban, pero de esta forma mi última pregunta no se lee ya que tiene una respuesta predeterminada. Si fueran una a una, no pasaría nada.
Se me ocurren dos soluciones, pero no he conseguido hacer niguna.
1- Contestar mediante VBA a las preguntas de si deseo mantener el nombre. De forma que el usuario no tenga que hacerlo
2- No predeterminar ningún botón en la pregunta que hago yo para que cuando llegue, se quede hay por mucho intro que de. No he encontrado esta opción.
Gracias de ante mano y si se os ocurre otra forma, aunque no sepais hacerla, me la comentais por si yo estoy inspirado.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #2 (permalink)  
Antiguo 26/05/2006, 04:20
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
La opción 1 solo te es útil, si realmente tiene poca importancia lo de mantener el nombre o no, ya que si tu mismo contestas las preguntas con código, entonces no estás interactuando con el usuario, con lo cual no le estás preguntando, y por tanto, da igual su opinión, pues no es realmente relevante. Si no es muy relevante esas preguntas, yo casi que optaría por no hacerlas, ya que eso puede llegar a "cargar" mucho (me refiero a tanta pregunta) a quien va a usar tu hoja de cálculo.

Otra opción a las que planteas (la 2 supongo que se puede hacer, aunque no se como), sería usando un "userform" (incluso insertando alguna imagen, si quieres) en el que le puedes dar colores a los textos, etc, haciéndolo diferente de los Msgbox que utilizas en la opción 1. Al hacerlo visualmente diferente, el usuario seguro que se detiene y lo mira, sabiendo a ciencia cierta que lo lee. Incluso usando esta opción, puedes desactivar los botones, hasta pasados por ejemplo 5 segundos desde que aparece el formulario en pantalla (no lo he probado, pero creo que es factible hacerlo), para que no pulse intro, por mimetismo.

Yo optaría por la opción 1ª opción: Eliminar las preguntas, si no es realmente importante el hecho de que se mantenga o no el nombre.

Salu2
  #3 (permalink)  
Antiguo 26/05/2006, 05:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Gracias por la contestación, pero no sé si eso me soluciona.
En cuanto a lo primero, no hago yo las preguntas las hace excel. Ponle nombre a unas celdas, seleccionalas, copy y pégalas en otro archivo de excel. El mismo programa te hará la pregunta de si quieres mantener el nombre o deseas cambiarlo. No puedo quitar los nombres porque los necesito y además, son MUCHOS.
Lo del "userform" lo voy a investigar para ver si me sirve, pero si pudieras decirme lo del retardo ese estaría muy agradecido.
El problema que tengo es que cuando empiezas a dar al intro o lo mantienes presionado la ventana, por muy llamativo que sea, se abre y se cierra, ya que no sabes cuantos intros has dado. ¿No te a pasado nuca que parece que te duermes con el botón y derrepente empiezas a oir un pitido diciendo te que no se puede ir más allá? Pues necesito este pitido para ponerlo antes de la pregunta importante.
Espero que entiendas mi problemática.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #4 (permalink)  
Antiguo 29/05/2006, 05:11
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Mira este ejemplo, que tiene este código:
Código:
Sub auto_open()
UserForm1.Show
End Sub
Código:
Sub ejemplo()
UserForm1.CommandButton1.Enabled = True
End Sub
Dentro del userform, si cliqueas sobre él verás este código:
Código:
Private Sub UserForm_Activate()
UserForm1.CommandButton1.Enabled = False
Application.OnTime Now + TimeValue("00:00:05"), "ejemplo"
End Sub
Todo esto se puede mejorar, se le puede cambiar el texto al botón mientras está inactivo, y mil cosas más, pero es para que te hagas una idea de como funciona.

Salu2
  #5 (permalink)  
Antiguo 30/05/2006, 01:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
De acuerdo

Agradezco mucho el ejemplo y creo que podré utilizarlo, pero me supondría mucho cambio de código que ha estas alturas es un poco peligroso.
¿No habría algo similar al "ontime" que paralice el proceso? Te lo comento porque la orden para esperar un tiempo no detiene el proceso y se ejecuta todo lo que hay después. Si existiera una función que fuera como un bucle que me retrasara un cierto tiempo sería mucho más fácil de integrar en el código.
Yo me daré una vueltecita por la ayuda a ver si encuentro algo.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:17.