• Martes 19 de Marzo de 2024, 11:03

Autor Tema:  Error 91 Al Asignar Valor Del Tag De Un Formulario  (Leído 2484 veces)

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Error 91 Al Asignar Valor Del Tag De Un Formulario
« en: Sábado 23 de Septiembre de 2006, 02:48 »
0
Buenas gente.
Me surgio un problemita y me prgunte si alguien me podia dar una mano.

Tengo un editor de texto de multiples instancias.
El formulario MDI tiene todos los menus y quiero que si no hay ningun formulario de texto abierto, algunos de los menus se inhabiliten, para lo que hice lo siguiente.

El formulario MDI tiene como tag "Main"
Los formularios de texo tienen como tag:
En caso de que sea un nuevo docuemento, "Nuevo"
Caso que sea un archivo existente la ruta del archivo.

Luego en el evento click del menu (p.e.) Edicion

Dim frmTag as String

frmTag = Screen.ActiveForm.Tag

If frmTag = "Main"
...
Elseif frmtag = "Nuevo"
...
Else
...
End if

Pero cuando no hay ningun formulario abierto y llega a la linea:
frmTag = Screen.ActiveForm.Tag
Genera un error 91
"La Variable de Tipo Object o la variable de bloque With no está establecida"

Sin embargo, si eligo depurar el error y pongo el cursor sobre Screen.ActiveForm.Tag  
me muestra que tiene el valor "Main"

Probe declarar una variable objeto como formulario, y asignarle el formulario activo para luego guardar el tag, sin embargo genera el mismo error cuando intento asignarlo.

Espero agluien tenga una idea de como solucionarlo.

Gracias de antemano.
Saludos
The sweet smell of a great sorrow lies over the land.


DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Error 91 Al Asignar Valor Del Tag De Un Formulario
« Respuesta #1 en: Sábado 23 de Septiembre de 2006, 15:47 »
0
Hola Podrías probar a comprobar primero si hay algún form activo y luego hacer la asignación del valor Tag. Podría ser algo como:

Código: Text
  1.  
  2. If Not IsNothing Screen.ActiveForm Then
  3.    frmTag = Screen.ActiveForm.Tag
  4. else
  5.    frmTag="Ningún Form"
  6. End If
  7.  
  8.  

Espero que te sea útil.

Saludos,


DiabloRojo

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Error 91 Al Asignar Valor Del Tag De Un Formulario
« Respuesta #2 en: Domingo 24 de Septiembre de 2006, 00:13 »
0
Buenas.
Gracias por el consejo, pero no sirve.
Probe con IsObject, IsEmpty e IsNull
Pero devuelven que si hay un abjeto y es el MDI, sin embargo sigue dando el error.

Gracias.
The sweet smell of a great sorrow lies over the land.


DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Error 91 Al Asignar Valor Del Tag De Un Formulario
« Respuesta #3 en: Domingo 24 de Septiembre de 2006, 15:28 »
0
Pero podría ser una forma indirecta de probar lo que buscas. Veamos:

Código: Text
  1.  
  2. If Not IsNothing Screen.ActiveForm Then
  3.   'Indica que no hay otro form abierto
  4.    If Screen.ActiveForm.Name="NombreFormMDI" Then  
  5.       frmTag="Ningún Form"
  6.    Else  
  7.       frmTag = Screen.ActiveForm.Tag
  8.    End If
  9. End If
  10.  
  11.  

Es sólo una idea.


DiabloRojo.

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Error 91 Al Asignar Valor Del Tag De Un Formulario
« Respuesta #4 en: Domingo 24 de Septiembre de 2006, 22:44 »
0
Ya encontre una solucion.  :lol:

Muchas gracias de todos modos.   :)
The sweet smell of a great sorrow lies over the land.


DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Error 91 Al Asignar Valor Del Tag De Un Formulario
« Respuesta #5 en: Lunes 25 de Septiembre de 2006, 15:26 »
0
Hola. Primero para disculparme. En realidad la función "IsNothing" no existe en VB, no sé por qué tenía la idea de que si... igual aquí te paso una función que suele ayudarme:

Código: Text
  1.  
  2. Private Function IsNothing(varName As Object) As Boolean
  3.    Dim strName As String
  4.    
  5.    On Error GoTo errHandler
  6.    strName = varName.Name
  7.    'Si llega hasta aquí es por que el objeto existe
  8.    IsNothing = False
  9.    '
  10.    Exit Function
  11.    '
  12. errHandler:
  13.    Select Case Err.Number
  14.       Case 91 ' el objeto es nothing
  15.          IsNothing = True
  16.          Err.Clear
  17.       Case Else
  18.          MsgBox "Error Número: " & Str(Err.Number) & "." & _
  19.                 "Descripción: " & Err.Description, , _
  20.                 "Error."
  21.          Err.Clear
  22.    End Select
  23. End Function
  24.  
  25.  

Por otro lado, postea la solución que hallaste. Probablemente alguien tendrá un problema similar al tuyo y le interesará saber cómo solucionaste tú. También posteo un ejemplo de la función...

Saludos,

DiabloRojo
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Error 91 Al Asignar Valor Del Tag De Un Formulario
« Respuesta #6 en: Martes 26 de Septiembre de 2006, 03:46 »
0
Bueno, aca dejo como lo solucione, q es bastante similar a tu funcion.

Espero que sea de utilidad para alguien.

Código: Text
  1.  
  2. Private Sub mnuEdicion_Click()
  3.   Dim frmTag As String
  4.  
  5.   On Error GoTo ErrHandler
  6.  
  7.   frmTag = Screen.ActiveForm.Tag
  8.  
  9.   If frmTag <> "Main" Then
  10.     mnuDeshacer.Enabled = True
  11.     ...
  12.   End If
  13.  
  14.   Exit Sub
  15.  
  16. ErrHandler:
  17.  
  18.   If Err.Number = 91 Then
  19.     mnuDeshacer.Enabled = False
  20.     ...
  21.   End If
  22.  
  23. End Sub
  24.  
  25.  

Nota: obviamente los puntitos no van, es solo q si pongo todos los menus, quedaria bastante largo.
The sweet smell of a great sorrow lies over the land.