Académique Documents
Professionnel Documents
Culture Documents
Sintaxis:
La sintaxis para declarar una funcin es la siguiente:
[Public] [Private] [Static] Function nombre (Argumentos) [As Type]
Instrucciones
[Nombre = expresin]
[Exit Function]
Instrucciones
End Function
En donde:
Public: Indica que el procedimiento Function esta accesible para todos los dems procedimientos, en
todos los dems mdulos y en todos los proyectos activos de VBA. Es opcional.
Private: Indica que el procedimiento Function est accesible slo para otros procedimientos en el
mismo mdulo. Es opcional.
Static: Indica que los valores de las variables declaradas en el procedimiento Function estn guardados
entre llamadas. Es opcional.
Function: Es la palabra clave que indica el principio de un procedimiento Function que devuelve un
valor u otro dato. Es obligatorio.
Nombre: Identifica el nombre de la funcin definida por el usuario. El nombre de las funciones
definidas por el usuario se ajusta a las mismas reglas aplicadas a los nombres de rango, en una hoja de
trabajo, al de los procedimientos Sub y al de los nombres de variables de memoria, as por ejemplo
debe empezar con una letra o el carcter subrayado, no acepta espacios en blanco, no se deb utilizar
palabras reservadas de las sentencias de VBA ni los nombres de la funciones de Excel, etc. Es de uso
obligatorio.
Argumentos: Representa una lista de una o ms variables que recogen los datos que utilizar la funcin
para realizar los clculos, se expresan en los parntesis y se separan con comas si son ms de uno.
Type: Es el tipo de datos que se devuelve por el procedimiento Function. Es opcional.
Instrucciones: Representa las instrucciones o sentencias de VBA que se ejecutarn.
Pg. 2/18
Exit Function: Es una declaracin que obliga la salida inmediata del procedimiento Function aunque
no se complete. Es opcional.
End Function: Palabra clave que indica el final del procedimiento.
O bien, la funcin funciona de forma muy parecida a una funcin integrada en una hoja. Podemos
introducirla en una frmula usando Insertar>Funcin o hacer clic en el botn Pegar Funcin (situado
en la barra de frmulas). Cualquiera de estas acciones mostrar el cuadro de dilogo de Insertar
Funcin, las funciones personalizadas se ubican, por defecto, en la categora Definida por el usuario.
Pg. 3/18
Seleccione la funcin definida por el usuario a usar, si hubieran varias, luego haga clic en el botn
Aceptar.
En la siguiente ventana, indique las celdas que se utilizarn como argumentos y haga clic en el
botn Aceptar.
Aplicacin
La siguiente aplicacin es una funcin personalizada llamada PromedioUnidad, usa tres argumentos.
La funcin calcula el promedio de una unidad formativa de una determinada asignatura.
Function PromedioUnidad (Trabajo, Practica, Examen) As Single
PromedioUnidad = (Trabajo + Practica * 2 + Examen * 3) / 6
End Function
Pg. 5/18
4. En cuadro de edicin Nombre, escribe el nombre para el archivo donde se guardar el mdulo,
por ejemplo "MisFunciones.Bas", observe que .bas es la extensin de estos archivos.
Pg. 6/18
4. Seleccione en la lista Buscar en: la carpeta donde tiene ubicado el archivo a importar (la
carpeta donde est "MisFunciones.Bas" si est siguiendo el ejemplo).
5. Una vez localizada la carpeta, seleccione el archivo a importar (MisFunciones.Bas en el
ejemplo) y pulse sobre Abrir.
6. Observe como en la ventana de proyecto se ha incorporado un nuevo mdulo que contiene
todos los procedimientos y funciones del archivo importado.
Complementos de Microsoft Excel
Una vez creadas las funciones que su organizacin requieran, es posible crear un complemento
de Excel (archivo XLAM) que permite usar dichas funciones en cualquier libro en que las necesite.
Los complementos son programas suplementarios que agregan funciones o comandos
personalizados a Microsoft Excel.
Guardar su Libro de Excel como Complemento
Al guardar su libro de Excel como complemento, asegura que las funciones que desarroll estn
disponibles en otros libros de Excel.
Pg. 7/18
Nota: Por defecto los complementos que usted crea se almacenan en la carpeta:
C:\Users\nombre_del_usuario\AppData\Roaming\Microsoft\Complementos
Activar el Complemento
Una vez creado el complemento, se debe activar
para usar las funciones creadas en l.
1. Clic en el botn de Archivo
2. Clic en el botn Opciones
3. Clic en la opcin Complementos
4. Clic en el botn Ir
5. Active
la
casilla
correspondiente
al
complemento creado
Pg. 8/18
EJERCICIOS PROPUESTOS
ENUNCIADO 1
Crear una funcin que acepte como argumento el Monto de Prstamo y el Sueldo. La funcin debe
devolver Aprobado si el prstamo es inferior a 4 veces al sueldo. En otro caso devolver No
Aprobado.
=ESTADO(3000,1200) devolver Aprobado
Porque el prstamo solicitado (3 mil) no excede 4 veces el sueldo (1200)
ENUNCIADO 2
Se pide crear una funcin en la que se enve como argumentos el Sueldo bsico y las Horas trabajadas.
Esta funcin debe devolver el Importe de Horas Extras (considere que el sueldo bsico se refiere a 160
horas al mes y que la hora extra se paga 50% adicional a las horas normales). As, la funcin debe ser
usada:
=EXTRAS(1600,170)
devolver 150.
Pg. 9/18
Pg. 10/18
APLICACIONES RESUELTAS
CONTROL DE GUAS Y AMORTIZACIONES
Agregue los siguientes encabezados a las hojas VENTAS y AMORTIZACIONES.
Pg. 11/18
txtGua
txtCliente
txtFecha
txtMonto
btnSalir
btnAceptar
btnNuevo
Pg. 12/18
Pg. 13/18
cboGua
txtFecha
txtCliente
txtSaldo
btnAceptar
btnSalir
btnNuevo
PROGRAMANDO LOS CONTROLES
Private Sub UserForm_Activate()
txtFecha.Text = Date
Sheets("VENTAS").Activate
Range("A4").Select
' Llena el control cboGua con todos los Nmeros de guas
Do While ActiveCell.Value <> ""
' Se usa el mtodo AddItem para aadir elementos al control ComboBox
cboGua.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Sheets("FORMULARIOS").Activate
End Sub
Private Sub cboGua_Change()
' Este procedimiento se ejecuta cuando se selecciona un elemento
' del cuadro combinado
Sheets("VENTAS").Activate
Range("A4").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = cboGua.Text Then ' si la celda activa es igual a la gua seleccionada
txtCliente = ActiveCell.Offset(0, 1)
Sheets("FORMULARIOS").Activate
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Private Sub btnAceptar_Click()
Dim M As Single, A As Single, AA As Single
If Val(txtAmortizacin) <= 0 Then
Pg. 14/18
Pg. 15/18
Loop
'Copiando registro
ActiveCell.Offset(0, 0) = cboGua.Text
ActiveCell.Offset(0, 1) = txtCliente.Text
ActiveCell.Offset(0, 2) = txtFecha.Text
' Se convierte lo ingresado como texto a valor usando funcin VAL
ActiveCell.Offset(0, 3) = Val(txtAmortizacin.Text)
Sheets("FORMULARIOS").Activate
End Sub
Private Sub btnNuevo_Click()
cboGua.Text = Empty
txtCliente.Text = Empty
txtFecha.Text = DATE
txtAmortizacin.Text = Empty
txtSaldo.Text = Empty
cboGua.SetFocus
End Sub
Private Sub btnSalir_Click()
End
End Sub
Pg. 16/18
cboGua
txtCliente
txtMonto
txtAmortizaciones
lstDetalle
btnMostrar
btnSalir
Pg. 17/18
Sub AMORTIZACION()
frmAmortizacin.Show
End Sub
Sub DETALLE()
frmDetalle.Show
End Sub
En la hoja FORMULARIOS agrega los controles que se han indicado al inicio de la aplicacin y asigna
a cada uno de ellos las macros correspondientes anteriormente creadas.
Pg. 18/18