Abrir un cuadro de dialogo una sola vez

06/10/2003 - 23:16 por Henry Sanchez | Informe spam
Hola Grupo,

Tengoun cuadro de dialogo dentro de un complemento el cual
pueden abrir en forma No Modal, todos los libros que se
encuentren abiertos en la aplicacion mediante un doble
click en celdas especiales.

El problema que tengo es que si el usuario abre este
cuadro de dialogo, despues puede desde otro libro de
trabajo tratar de abrir el mismo cuadro de dialogo.

Necesitaria un metodo que me diga si un cuadro de dialogo
de un complemento se encuentra abierto

Saludos,

Henry

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
07/10/2003 - 03:17 | Informe spam
Hola, Henry !

... cuadro de dialogo ... de un complemento ... No Modal ... libros ... abiertos ... doble click en celdas especiales.
... si el usuario abre este cuadro de dialogo, despues puede desde otro libro ... tratar de abrir el mismo cuadro [...]
... metodo que me diga si un cuadro de dialogo de un complemento se encuentra abierto



==> en febrero de este año hiciste la consulta: =>como saber si un cuadro de dialogo se encuentra cargado< ['practicamente' es la misma respuesta... 'aunque'...]
la 'unica' forma de mostrar cuadros de dialogo [userforms] =>al menos, hasta donde yo se<= es:
==> 'llamandolo' [show] en procedimientos DEL MISMO proyecto [vba] donde 'existe' el formulario <= [desde 'otro' proyecto seria necesario 'llamar' a algun procedimiento del proyecto [vba] donde 'existe' el formulario]
[ya sea usando el metodo 'Application.Run' o estableciendo referencias 'entre' ambos proyectos]

==> si [solamente] quieres saber si el formulario 'ya esta visible' [o 'evitar' que se mostrara 'mas' veces]...
en la linea con la que 'se muestra' el formulario [en el complemento], en vez de 'simplemente' mostrarlo usa 'algo como'
=> If Not MiFormulario.Visible Then MiFormulario.Show vbModeless <
==> si necesitas acciones 'diferentes' [para el caso de que el formulario este ya visible]
en el proyecto [vba] del complemento donde 'existe' el formulario [en el evento que lo muestra] ==[... ... ...]
If MiFormulario.Visible Then
MsgBox "El formulario ya está ""visible"""
Else: MiFormulario.Show vbModeless
End If
[... ... ...]
_______
Saludos,
Héctor.
MS-MVP
Respuesta Responder a este mensaje
#2 Henry Sanchez
07/10/2003 - 04:39 | Informe spam
Gracias Hector por tu pronta respuesta
Si, es cierto, una consulta similar hice hace algun
tiempo, pero no consegui una respueta adecuada para la
situacion.

Como podria por ejemplo desde un libro de trabajo usar una
instruccion como
MiFormulario.Visible
Sabiendo que MiFormulario se encuentra en un archivo de
complemento (es decir, otro proyecto), mientras el codigo
esta en otro libro de trabajo?

(Algo similar a lo que consulte hace poco para ejecutar
procedimientos del complemento y que la respuesta era usar
el metodo Run)

Saludos,

Henry
Hola, Henry !

... cuadro de dialogo ... de un complemento ... No




Modal ... libros ... abiertos ... doble click en celdas
especiales.
... si el usuario abre este cuadro de dialogo, despues




puede desde otro libro ... tratar de abrir el mismo cuadro
[...]
... metodo que me diga si un cuadro de dialogo de un




complemento se encuentra abierto

==> en febrero de este año hiciste la consulta: =>como


saber si un cuadro de dialogo se encuentra cargado<> ['practicamente' es la misma
respuesta... 'aunque'...]
la 'unica' forma de mostrar cuadros de dialogo


[userforms] =>al menos, hasta donde yo se<= es:
==> 'llamandolo' [show] en procedimientos DEL


MISMO proyecto [vba] donde 'existe' el formulario <=> [desde 'otro' proyecto seria necesario 'llamar' a
algun procedimiento del proyecto [vba] donde 'existe' el
formulario]
[ya sea usando el metodo 'Application.Run' o


estableciendo referencias 'entre' ambos proyectos]

==> si [solamente] quieres saber si el formulario 'ya


esta visible' [o 'evitar' que se mostrara 'mas' veces]...
en la linea con la que 'se muestra' el formulario


[en el complemento], en vez de 'simplemente' mostrarlo
usa 'algo como'
=> If Not MiFormulario.Visible Then


MiFormulario.Show vbModeless <>
==> si necesitas acciones 'diferentes' [para el caso de


que el formulario este ya visible]
en el proyecto [vba] del complemento donde 'existe'


el formulario [en el evento que lo muestra] ==>[... ... ...]
If MiFormulario.Visible Then
MsgBox "El formulario ya está ""visible"""
Else: MiFormulario.Show vbModeless
End If
[... ... ...]
_______
Saludos,
Héctor.
MS-MVP


.

Respuesta Responder a este mensaje
#3 Héctor Miguel
07/10/2003 - 06:33 | Informe spam
Hola, Henry !

... consulta similar hice hace algun tiempo, pero no consegui una respueta adecuada para la situacion.
... desde un libro ... usar una instruccion como 'MiFormulario.Visible'
... MiFormulario se encuentra en ... otro proyecto ... el codigo ... en otro libro de trabajo?
(... similar a lo que consulte hace poco ... y que la respuesta era usar el metodo Run)



==> ahora que 'contamos' con [un poco de] mas informacion [acerca de lo que 'realmente' necesitas] ;)
[creo que] la opcion mas 'facil' [y 'rapida'] es usar el metodo 'Run' [para 'llamar' a procedimientos EN el complemento]
=> el 'complemento' [obviamente] debera estar 'presente' [abierto / instalado] en la sesion <
1) para [solamente] saber si 'X' formulario =>del complemento [o 'X' libro]<= ya esta 'visilbe' [o no]...
a) una funcion [en el complemento] que 'devuelva' True o False [si 'X' formulario =>del complemento<=] esta [o no] visible
en un modulo de codigo 'normal' del complemento [o 'X' libro] ==Private Function MiFormularioVisible() As Boolean
MiFormularioVisible = MiFormulario.Visible
End Function
b) un procedimiento [en el 'otro' libro] con el metodo 'Run' [para obtener el resultado de la funcion =>en el complemento<=]
en un modulo de codigo 'normal' del 'otro' libro ==Sub Saber_Si_MiFormulario_Visible()
Dim EstaVisible As Boolean, Si_No As String
EstaVisible = Application.Run("Nombre_del_complemento.xla!MiFormularioVisible")
If EstaVisible Then Si_No = "YA" Else Si_No = "NO"
MsgBox "El formulario del complemento " & Si_No & " está visible"
End Sub

2) para 'mostrar' un formulario [del complemento -o 'X' libro-] 'desde otro' libro...
a) un procedimiento [en el complemento] que lo 'muestre' [le 'agregue' las lineas del 'candado' para 'evitar' mas veces]
en un modulo de codigo 'normal' del complemento [o 'X' libro] ==Private Sub MostrarMiFormulario()
If MiFormulario_Visible Then
MsgBox "El formulario ya est'a ""visible"" !!!"
Else: MiFormulario.Show vbModeless
End If
End Sub
b) un procedimiento [en el 'otro' libro] con el metodo 'Run' [para 'ejecutar el Show' =>en el complemento<=]
en un modulo de codigo 'normal' del 'otro' libro ==Sub Mostrar_MiFormulario_del_Complemento()
Application.Run "Nombre_del_complemento.xla!MostrarMiFormulario"
End Sub
_______
Saludos,
Héctor.
MS-MVP

P.D. perdon por tanta 'redundancia' :( espero que la 'revoltura' [al final] 'deje claridad' ;)
Respuesta Responder a este mensaje
#4 Henry Sanchez
08/10/2003 - 03:55 | Informe spam
Gracias Hector
Me aclaraste muchas dudas.

Voy a poner en practica tus sugerencias y te comento

Saludos,

Henry
Hola, Henry !

... consulta similar hice hace algun tiempo, pero no




consegui una respueta adecuada para la situacion.
... desde un libro ... usar una instruccion




como 'MiFormulario.Visible'
... MiFormulario se encuentra en ... otro proyecto ...




el codigo ... en otro libro de trabajo?
(... similar a lo que consulte hace poco ... y que la




respuesta era usar el metodo Run)

==> ahora que 'contamos' con [un poco de] mas informacion


[acerca de lo que 'realmente' necesitas] ;)
[creo que] la opcion mas 'facil' [y 'rapida'] es


usar el metodo 'Run' [para 'llamar' a procedimientos EN el
complemento]
=> el 'complemento' [obviamente] debera


estar 'presente' [abierto / instalado] en la sesion <>
1) para [solamente] saber si 'X' formulario =>del


complemento [o 'X' libro]<= ya esta 'visilbe' [o no]...
a) una funcion [en el complemento] que 'devuelva'


True o False [si 'X' formulario =>del complemento<=] esta
[o no] visible
en un modulo de codigo 'normal' del complemento


[o 'X' libro] ==>Private Function MiFormularioVisible() As Boolean
MiFormularioVisible = MiFormulario.Visible
End Function
b) un procedimiento [en el 'otro' libro] con el


metodo 'Run' [para obtener el resultado de la funcion =>en
el complemento<=]
en un modulo de codigo 'normal' del 'otro' libro ==>Sub Saber_Si_MiFormulario_Visible()
Dim EstaVisible As Boolean, Si_No As String
EstaVisible = Application.Run


("Nombre_del_complemento.xla!MiFormularioVisible")
If EstaVisible Then Si_No = "YA" Else Si_No = "NO"
MsgBox "El formulario del complemento " & Si_No & "


está visible"
End Sub

2) para 'mostrar' un formulario [del complemento -o 'X'


libro-] 'desde otro' libro...
a) un procedimiento [en el complemento] que


lo 'muestre' [le 'agregue' las lineas del 'candado'
para 'evitar' mas veces]
en un modulo de codigo 'normal' del complemento


[o 'X' libro] ==>Private Sub MostrarMiFormulario()
If MiFormulario_Visible Then
MsgBox "El formulario ya est'a ""visible"" !!!"
Else: MiFormulario.Show vbModeless
End If
End Sub
b) un procedimiento [en el 'otro' libro] con el


metodo 'Run' [para 'ejecutar el Show' =>en el
complemento<=]
en un modulo de codigo 'normal' del 'otro' libro ==>Sub Mostrar_MiFormulario_del_Complemento()
Application.Run "Nombre_del_complemento.xla!


MostrarMiFormulario"
End Sub
_______
Saludos,
Héctor.
MS-MVP

P.D. perdon por tanta 'redundancia' :( espero que


la 'revoltura' [al final] 'deje claridad' ;)


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida