Actualizado el 21 de Marzo del 2018 (Publicado el 13 de Marzo del 2018)
847 visualizaciones desde el 13 de Marzo del 2018
121,6 KB
6 paginas
Creado hace 14a (03/09/2010)
Capítulo 8
A. Presentación
Un evento es una acción del usuario o del sistema reconocido por un objeto de
Microsoft Excel. El evento desencadena un procedimiento, asociado al evento del
objeto activo.
Estos procedimientos le permiten asociar un código personalizado en respuesta a
un evento que se produce en un objeto Excel (libro, hoja, formulario, gráfico, etc.).
B. Escritura de eventos
1. Eventos de libro, de hoja o de formulario
Usted puede acceder a los procedimientos de eventos asociados a un objeto de la
siguiente manera:
k En la ventana Explorador de proyectos, haga doble clic en el objeto deseado
la ventana de código
(libro, hoja o formulario) para hacer aparecer
correspondiente.
k Abra la lista desplegable a la izquierda de la ventana de código y seleccione
Workbook, Worksheet o UserForm, según el objeto seleccionado.
264
VBA Excel 2010
Administración de eventos
k También puede seleccionar un evento vinculado al objeto seleccionado en la
lista desplegable de la derecha, para asociarle un código personalizado.
La ejecución de los procedimientos de eventos, se puede desactivar en
cualquier momento asignando el valor False a la propiedad EnableEvents del
objeto Application.
Ejemplo
Este ejemplo muestra cómo obtener un listado histórico de todos los hipervínculos
visitados en la hoja de cálculo activa.
d
e
v
r
e
s
e
r
s
t
h
g
i
r
l
l
A
-
I
N
E
s
n
o
i
t
i
d
E
ã
Programación en Excel
265
Capítulo 8
Resultado en Excel:
2. Eventos del objeto Application
Se necesitan tres etapas para la escritura y ejecución de los eventos del objeto
Application.
Etapa 1
k Inserte un módulo de clase:
Insertar
Módulo de clase
o abra la lista
y haga clic en Módulo de clase.
k Una vez insertado el módulo, asígnele un nombre.
Ejemplo
Dele el nombre ObjApplication al módulo de clase.
Etapa 2
k En el módulo de clase, cree un objeto Application con el siguiente código:
Public WithEvents NomObjeto As Application
266
VBA Excel 2010
Administración de eventos
Ejemplo
Creación del objeto MiAplicacion como aplicación.
Public WithEvents MiAplicacion As Application
El objeto así creado queda disponible en la lista de la izquierda del módulo.
k Seleccione el objeto creado en la lista de la izquierda del módulo y luego
seleccione el evento esperado en la lista de la derecha. Escriba el código de los
procedimientos que desea generar.
Ejemplo
Creación de dos procedimientos de eventos: el primero realiza la inserción de
una nueva hoja; el segundo, la creación de un nuevo libro.
Public WithEvents MiAplicacion As Excel.Application
________________________________________________________________________
Private Sub MiAplicacion_WorkbookNewSheet _
(ByVal Wb As Workbook, ByVal Sh As Object)
Cada vez que se agrega una hoja se pide al usuario
que introduzca un nombre que a continuación se destinará a la hoja
insertada tras las hojas existentes
Dim NomHoja As String
'
'
'
NomHoja = InputBox("Introduzca el nombre de la hoja")
ActiveSheet.Name = NomHoja
ActiveSheet.Move After:=Sheets(Sheets.Count)
End Sub
_______________________________________________________________________
Private Sub MiAplicacion_NewWorkbook(ByVal Wb As Workbook)
Dim NbHojas As Integer
Dim NbActual As Integer
Dim Diferencia As Integer
'
'
'
Do
Por cada nuevo libro,
solicitamos al usuario la cantidad de hojas
Según el caso, se agregan o eliminan las hojas necesarias
NbHojas = Application.InputBox _
("¿Cantidad de hojas?", Type:=1)
Loop While NbHojas = False
NbActual = Sheets.Count
Diferencia = NbActual - NbHojas
'
'
'
Eliminar las hojas de más
Eliminar los mensajes de alerta con el fin
de no obtener mensajes en la eliminación de hojas
d
e
v
r
e
s
e
r
s
t
h
g
i
r
l
l
A
-
I
N
E
s
n
o
i
t
i
d
E
ã
Programación en Excel
267
Capítulo 8
Do While Diferencia > 0
Application.DisplayAlerts = False
Sheets.Item(Diferencia).Select
ActiveWindow.SelectedSheets.Delete
Diferencia = Diferencia - 1
Loop
Agregar hojas necesarias
Se desactivan los eventos para
no indicar los nombres de las nuevas hojas
'
'
'
Do While Diferencia < 0
Application.EnableEvents = False
Sheets.Add
Diferencia =
Diferencia + 1
Loop
'
Reactivar eventos y alertas
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Etapa 3
k Active un módulo cualquiera y conecte el objeto declarado en el módulo de
clase con el objeto Application para las siguientes instrucciones:
Dim NomVariable As New NomModuloDeClase
Sub NomProced ()
Set NomVariable.NomObjeto = Application
End Sub
Ejemplo
Agregue el siguiente código en el módulo Declaraciones.
Option Explicit
Dim app As New ObjApplication
________________________________________________________________________
Sub InicializaMiAplicacion()
Set app.MiAplicacion = Application
End Sub
268
VBA Excel 2010
Finalmente,
(módulo de clase ThisWorkbook).
llame al procedimiento InicializaMiAplicacion al abrir el
libro
Administración de eventos
Private Sub Workbook_Open()
InicializaMiAplicacion
End Sub
Cuando se abra el
libro, se ejecutarán automáticamente los procedimientos de
eventos creados durante la etapa 2 y se agregarán los libros o las hojas. Estos
procedimientos se desactivarán al cerrar el libro.
3. Evento asociado a un gráfico incrustado
La colección Charts (del objeto Workbook) contiene todos los gráficos del
especificado.
libro
Se necesitan tres etapas para la escritura y la ejecución de los eventos asociados a
un gráfico incrustado.
Etapa 1
k Inserte un módulo de clase:
Insertar
Módulo de clase
o abra la lista
y haga clic en Módulo de clase.
k Una vez insertado el módulo, asígnele un nombre.
Ejemplo
Dele el nombre ObjGraficos al módulo de clase.
Etapa 2
k En el módulo de clase, cree un objeto gráfico para el siguiente código:
Public WithEvents NomObjeto As Chart
Programación en Excel
269
d
e
v
r
e
s
e
r
s
t
h
g
i
r
l
l
A
-
I
N
E
s
n
o
i
t
i
d
E
ã
Comentarios de: Capítulo 8 (0)
No hay comentarios