** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Recorrer controles formulario y modificar controle
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoRecorrer controles formulario y modificar controle

 Responder Responder
Autor
Mensaje
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Tema: Recorrer controles formulario y modificar controle
    Enviado: 29/Noviembre/2019 a las 11:25
Hola.
Casi lo tengo pero me da un error que no consigo solucionar, creo que es una tonteria pero no me sale.
Quiero recorrer los controles de un formulario, en este caso los botones y asignales una serie de valores, tipo de letra, color letra, un evento etc...

Igual se puede hacer de una forma mas sencilla, pero yo de momento lo he montado asi.....

Me da el siguiente error  error 91   Variable de objeto o bloque With no establecido

Private Sub Form_Load()

Dim controlesForm As Control
Dim ctl As Control

  For Each controlesForm In Controls
    If (TypeOf controlesForm Is CommandButton) Then
     
      With ctl
          Select Case .ControlType
  
             Case acCommandButton  'Para un boton
               .ForeColor = vbBlue
               .FontName = "Courier"
               .FontSize = 12
               '.Enabled = False
               '.Visible = False  'Dara error si tiene el foco
               .Caption = "ggggg"  'Texto boton
               .OnClick = "=PruebaCC()" 'Asignamos al evento Click la Funcion PruebaCC
      
      
            Case .acLabel  'Para una etiqueta
   
          End Select
     End With
    
End If
Next



End Sub
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 13:15
Hola!

A lo mejor no lo es, pero metes dentro del If que es tipo Boton un label, yo lo haría así:

Dim ctl As Control
For Each ctl in frm.Controls
With ctl
Select Case .ControlType
   Case acCommandButton
     .ForeColor = vbBlue
     .FontName = "Courier"
     .FontSize = 12
    '.Enabled = False
    '.Visible = False 'Dara error si tiene el foco
     .Caption = "ggggg" 'Texto boton
     .OnClick = "=PruebaCC()" 'Asignamos al evento Click la Funcion PruebaCC
    Case .acLabel 'Para una etiqueta

      ' lo que quieras poner
End With
Next ctl


Editado por mounir - 29/Noviembre/2019 a las 13:15
Un Saludo.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 13:26
Publicado originalmente por mounir mounir escribió:

Hola!

A lo mejor no lo es, pero metes dentro del If que es tipo Boton un label, yo lo haría así:

Dim ctl As Control
For Each ctl in frm.Controls
With ctl
...............

En mi codigo lo del label no es, lo habia probado y da el mismo error, no es por eso.

Y en tu codigo me da  error de compilacion   End with sin With

En principio parece que esta bien pero sera que no.....
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 13:28
Hola!

Perdón, en mi código falta "End Select" antes de "End with".
Un Saludo.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 13:31
Publicado originalmente por mounir mounir escribió:

Hola!

Perdón, en mi código falta "End Select" antes de "End with".


Me habia percatado y lo he puesto, pero ahora suelta otro error

marcado en amarillo esta linea
For Each ctl In frm.Controls



Erro 424 en tiempo de ejecucion , se requiere un objeto
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 13:44
Le he añadido esta linea para solucionar el error 424 se requiere un objeto y ahora suelta otro
Dim frm As Form

error 91 variable de objeto o bloque with no establecido




Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1510
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 15:09
Te has fijado que en tu código original, hay 2 variables de tipo Control? Que una la usas para asignarle él objeto que hay en la colección Controls, mientras que a la otra, que no has inicializado, la usas para cambiar los valores de las propiedades?
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 16:46
Hola!

A ver ahora:-


Dim ctl As Control
For Each ctl In Controls
With ctl
Select Case .ControlType
   Case acCommandButton
    .ForeColor = vbBlue
    .FontName = "Courier"
    .FontSize = 12
    .Enabled = False
'   .Visible = False 'Dara error si tiene el foco
    .Caption = "ggggg" 'Texto boton
    .OnClick = "=PruebaCC()" 'Asignamos al evento Click la Funcion PruebaCC
    Case acLabel 'Para una etiqueta
End Select
      ' lo que quieras poner
End With
Next ctl
Un Saludo.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 17:25
Publicado originalmente por pitxiku pitxiku escribió:

Te has fijado que en tu código original, hay 2 variables de tipo Control? Que una la usas para asignarle él objeto que hay en la colección Controls, mientras que a la otra, que no has inicializado, la usas para cambiar los valores de las propiedades?


No la verdad, mas o menos entiendo lo que estaba haciendo.....

Publicado originalmente por mounir mounir escribió:

Hola!
A ver ahora:-


Dim ctl As Control
For Each ctl In Controls
With ctl
Select Case .ControlType
   Case acCommandButton
    .ForeColor = vbBlue
    .FontName = "Courier"
    .FontSize = 12
    .Enabled = False
'   .Visible = False 'Dara error si tiene el foco
    .Caption = "ggggg" 'Texto boton
    .OnClick = "=PruebaCC()" 'Asignamos al evento Click la Funcion PruebaCC
    Case acLabel 'Para una etiqueta
End Select
      ' lo que quieras poner
End With
Next ctl


Ahora si!!!, seguire probando pero parece que funciona bien.....

Saludos
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 30/Noviembre/2019 a las 19:49
Se puede cerrar el hilo, muchas gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable