Asignar eventos a hojas mediante macros

09/07/2004 - 05:25 por Jorge Castillo | Informe spam
Hola grupo:
Quisiera saber si se puede por programación asignar eventos a hojas de
calculo, por ejemplo un procedimiento que se ejecute al activar una hoja de
cálculo. Es decir, crear la hoja con add y asignar un procedimiento al
evento activate. Gracias de antemano, saludos hector:
Jorge
 

Leer las respuestas

#1 Héctor Miguel
09/07/2004 - 08:17 | Informe spam
hola, Jorge !

... por programacion asignar eventos a hojas ... ejemplo un procedimiento que se ejecute al activar una hoja
... crear la hoja con add y asignar un procedimiento al evento activate.



el ejemplo propuesto en seguida...
- agrega una hoja
- agrega codigo a los eventos '_activate' y '_selectionchange' [de la hoja 'recien' creada]
=> toma en cuenta los requerimientos para su uso <
saludos,
hector.
_________
se requiere: establecer una referencia [en vba] a la libreria =>Microsoft Visual Basic for Applications Extensibility<+ la version de la libreria 'depende' de la version [de excel] donde se ha de utilizar
que [obviamente] DEBERA estar 'instalada' en la pc donde se ha de ejecutar [p.e.]
1) en excel 97 => NO DEBE 'tener' numero de version.
2) en excel 2K en adelante => debiera funcionar 'sin problemas' [+/- sera la version 5.3]
3) en excel XP en adelante => REQUIERE [ademas] de un 'ajuste' [en caso de no 'tenerlo'] a las 'Fuentes de confianza'
el 'ajuste' es en: herramientas / macros / seguridad / [pestaña] fuentes de confianza y ...
'poner' una marca en: 'confiar en el acceso a proyectos de visual basic'
en un modulo de codigo 'normal' ==Sub AgregarHojaYEventos()
Dim NomCodHoja As String, Linea1 As Integer
Application.ScreenUpdating = False
With Worksheets.Add
NomCodHoja = ActiveSheet.CodeName
End With
With ActiveWorkbook.VBProject.VBComponents(NomCodHoja).CodeModule
Linea1 = .CreateEventProc("Activate", "Worksheet")
.InsertLines Linea1 + 1, "msgbox ""Activada la hoja ""&me.name"
.InsertLines Linea1 + 2, "msgbox ""¿Viste el mensaje?"",vbyesno"
.DeleteLines .CountOfLines - 1
Linea1 = .CreateEventProc("SelectionChange", "Worksheet")
.InsertLines Linea1 + 1, "if target.address <> ""$B$1"" then exit sub"
.InsertLines Linea1 + 2, "msgbox ""Se ha activado la celda B1"""
.DeleteLines .CountOfLines - 1
End With
SendKeys "%{F4}"
End Sub

Preguntas similares