Autor |
Tema Buscar Opciones del Tema
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
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
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
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.
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
Enviado: 29/Noviembre/2019 a las 13:26 |
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.....
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
Enviado: 29/Noviembre/2019 a las 13:28 |
Hola!
Perdón, en mi código falta "End Select" antes de "End with".
|
Un Saludo.
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
Enviado: 29/Noviembre/2019 a las 13:31 |
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
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
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
|
|
pitxiku
Colaborador
Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1510
|
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?
|
|
mounir
Colaborador
Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
|
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.
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
Enviado: 29/Noviembre/2019 a las 17:25 |
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.....
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
|
|
rokoko
Colaborador
Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
|
Enviado: 30/Noviembre/2019 a las 19:49 |
Se puede cerrar el hilo, muchas gracias
|
|