Referencia a UserForm

06/12/2005 - 18:08 por diego.arcidiacono | Informe spam
Buenas, una vez mas necesito ayuda. Tengo el nombre de un form en una
cadena (string) y necesito hacer referencia al form cuyo nombre tengo
en el string. Por lo puedo hacer, ya que intente usar :
Controls(formactivo).hide pero me tira error. Espero me ayuden. Saludos

Diego

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
06/12/2005 - 20:33 | Informe spam
hola, Diego !

... Tengo el nombre de un form en una cadena (string)
... necesito hacer referencia al form cuyo nombre tengo en el string
... intente usar: Controls(formactivo).hide pero me tira error [...]



si ya tienes una variable con el nombre de un formulario EXISTENTE...
-> para poder 'manipular' sus propiedades/metodos/eventos/controles/etc.
necesitas 'agregarlo' a la coleccion de objetos [UserForm/s] en el 'ambiente' de vba [p.e.]
en un modulo de codigo 'normal' ==Sub Probando_Formularios()
Dim EsteFormulario As String
EsteFormulario = "userform1"
' o puedes 'tomarlo' de algun rango/control/etc. p.e. '
' EsteFormulario = Range("a1") '
UserForms.Add(EsteFormulario).Show
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#2 diegoar
06/12/2005 - 22:47 | Informe spam
problema resulta, muchas gracias como siempre hector

saludos
Respuesta Responder a este mensaje
#3 diegoar
07/12/2005 - 00:17 | Informe spam
hector, saber que acabo de probar el codigo que me diste, pero sucede
que despues que ejecuta UserForms.Add(EsteFormulario).Show esta
sentencia me dispara y ejecuta el evento initialize del form y eso me
trae complicaciones. Existe alguna otra forma de que eso no suceda??

saludos

diego
Respuesta Responder a este mensaje
#4 Héctor Miguel
07/12/2005 - 10:28 | Informe spam
hola, diego !

... despues que ejecuta UserForms.Add(EsteFormulario).Show
... dispara y ejecuta el evento initialize del form y eso me trae complicaciones
... alguna otra forma de que eso no suceda??



[hasta donde se]... mientras 'persista' la necesidad de hacer referencias a los formularios ->por variables<-
-> la unica forma es 'agregarlo' a traves de la coleccion de objetos userforms, lo cual resulta en que...
[dicho sea 'de paso']... es como 'estar cargando en memoria' el formulario cada vez que... :-(
y es 'la razon' del por que se ejecuta [en cada ocasion] el evento '_initialize' [de cada 'nuevo' formulario] :)
[la 'realidad' es que NO se esta 'manejando' el mismo formulario cada vez que se ejecuta el metodo] :-(
por lo que [tambien] podrias 'terminar' con 2, 3, 4 [o mas] veces el mismo formulario 'cargado en memoria'

hay un articulo que habla al respecto, aplicable a excel2000 [que es -practicamente- el mismo desde la version 97]
visita: http://support.microsoft.com/defaul...-us;213574 [2000]
o... -> http://support.microsoft.com/defaul...-us;157609 [97]

las -posibles- alternativas que se alcanzan a ver, son...
1) mover el codigo del evento '_initialize' por algun otro procedimiento
[si no le resultan otros 'inconvenientes' ya que estariamos hablando de varios 'mismo-formularios']
2) cambiar de formularios 'por variables'... a los formularios 'reales' [UserForm1.Show / .Hide / etc.]
3) desarrollar formularios 'al vuelo' [si no se trata de formularios 'complejos']
[aunque sera necesario tomar otro tipo de 'providencias' como el acceso al proyecto de macros ->por codigo<-]

probablemente existan mas alternativas... [si comentas alguno otros detalles de 'relevancia' que esten 'en el tintero'] :D

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