Crear eventos OnClick por código

19/12/2005 - 10:26 por Emilio | Informe spam
Buenos días a a tod@s

A ver si me podéis echar una manita, en Access puedo asignar, por ejemplo al
cargar un formulario, al evento onclick de todas las etiquetas de ese
formulario un código repetitivo, por ejemplo

For Each Etiqueta In Me.Controls
If Left(Etiqueta.Name, 3) = "txt" Then
Etiqueta.OnClick = "=EtiquetaOnClick('" & Etiqueta.Name & "')"
End If
Next Etiqueta

he intentado hacer lo mismo en un UserForm en Excel y me dice (en tiempo de
ejecución) que nones :(
error 438 "El objeto no admite esta propiedad o método"
he tratado de buscar en Google algo pero la verdad es que he agotado mis
recursos, se os ocurre alguna manera alternativa de hacerlo.

Muchas gracias a tod@s

Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio
 

Leer las respuestas

#1 Héctor Miguel
21/12/2005 - 06:13 | Informe spam
hola, Emilio !

... hubiera preferido no tener que crear el modulo de clase, manias mias
... pretendo exportar el formulario y eso me obliga a exportar el modulo de clase
> ... en Access puedo asignar... al cargar un formulario, al evento onclick de todas las etiquetas... un codigo repetitivo, por ejemplo
> For Each Etiqueta In Me.Controls
> If Left(Etiqueta.Name, 3) = "txt" Then
> Etiqueta.OnClick = "=EtiquetaOnClick('" & Etiqueta.Name & "')"
> End If
> Next Etiqueta
> ... hacer lo mismo en un UserForm en Excel y me dice (en tiempo de ejecucion) que nones :(
> error 438 "El objeto no admite esta propiedad o metodo" [...]





1) la propiedad 'OnClick' que mencionas para algunos controles en formularios de Access...
para controles 'de formularios' en Excel, se convierte en la propiedad 'OnAction' y [hasta donde se]...
-> NO es aplicable para los objetos ActiveX [que son los que se utilizan en los UserForms de VBA] :-(

2) es posible que pudieras 'evitar' el uso de modulos 'de clase' PERO... tratandose de controles ActiveX...
-> tendrias que escribir codigo [repetitivo] en el modulo del formulario para el evento '_click' de 'esos' controles :-(

3) no se que tan frecuente/recurrente/... pudiera ser la necesidad de re/asignar macros a objetos -?-
y/o 'cambiar de procedimientos' [posiblemente de acuerdo a 'otras' circunstancias] antes de mostrar el UserForm -?-
[probablemente] usando el evento '_click' podrias 'direccionar' algunos 'parametros' a una macro 'general'...
y mandar el codigo 'repetitivo' a dicha macro a traves del metodo -> Application.Run "Macro" [parametro1, parametro2, etc.]

-> te paso un ejemplo al fina ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

suponiendo un userform con 2 controles label que 'mandan' a una macro general su nombre y su caption...
en el modulo de codigo del formulario ==Private Sub Label1_Click()
Application.Run "Al_Clicar_Etiquetas", Label1.Name, Label1.Caption
End Sub
Private Sub Label2_Click()
Application.Run "Al_Clicar_Etiquetas", Label2.Name, Label2.Caption
End Sub

y en un modulo de codigo 'normal' ==Option Private Module
Sub Al_Clicar_Etiquetas(ByVal Etiqueta As String, ByVal Mensaje As String)
MsgBox "Se ha cliclado en la etiqueta: " & Etiqueta & vbCr & _
"que contiene: " & Mensaje
End Sub

Preguntas similares