David Montoya Salazar
Ahora podrá crear mis propias formulas Se emociona
Milquiades Herrera
me sentí igual
Monica Janneth Jaimes Sastre
Es muy emocionante...lástima no haber conocido antes estas herramientas
Automatizar cálculos personalizados en Excel es posible cuando aprendes a crear tus propias funciones en Visual Basic for Applications (VBA). Dominar esta habilidad te permite ir más allá de las fórmulas predefinidas y diseñar soluciones a la medida de tus necesidades diarias.
¿Cómo se define una función en Visual Basic?
Antes de escribir cualquier línea de código, es fundamental preguntarte cuál es el problema que quieres resolver y cómo lo resolverías paso a paso. Este enfoque te ayuda a estructurar la lógica antes de plasmarla en código.
En el módulo de VBA, la estructura parte de una función pública con un nombre descriptivo, parámetros de entrada y un tipo de dato de retorno. Por ejemplo [01:00]:
vb Public Function prueba(x As Integer) As Integer prueba = x + 38 End Function
Aquí se observan varios elementos importantes:
prueba, que también actúa como la variable donde se almacena el resultado.x, declarado como Integer (número entero).¿Qué significa el signo de igual en VBA?
Un concepto que genera confusión al inicio es el operador de asignación. En Visual Basic, el signo = no indica equivalencia matemática. Lo que hace es tomar todo lo que está del lado derecho y guardarlo en la variable del lado izquierdo [02:24]. En el ejemplo, prueba = x + 38 significa: calcula x + 38 y almacena ese resultado en prueba.
¿Cómo ayuda el editor de VBA a detectar errores?
El entorno de Visual Basic ofrece retroalimentación visual en tiempo real [01:52]. Si algo falta en tu código, notarás que:
Estas señales te permiten identificar problemas antes de ejecutar la función, como cuando falta el nombre de la variable de destino o un operador aritmético.
¿Cómo probar una función con la ventana inmediato?
Para verificar que tu función opera correctamente sin salir del editor, puedes usar la ventana inmediato (Immediate Window). Se accede desde la ficha Ver dentro del entorno de VBA [03:02].
El procedimiento es sencillo:
?) seguido del nombre de la función.Por ejemplo, al escribir ?prueba(12) el resultado es 50, ya que 12 + 38 = 50. Si pruebas con ?prueba(2), obtienes 40 [03:30].
¿Qué sucede al ingresar un dato decimal en un parámetro entero?
Cuando introduces un valor como 1.5 en un parámetro definido como Integer, VBA no genera un error. En su lugar, realiza un redondeo automático para convertir el decimal a número entero antes de procesarlo [03:50]. Es importante tener esto en cuenta porque el resultado podría no ser el esperado si tu lógica requiere precisión decimal.
¿Cómo usar funciones personalizadas directamente en Excel?
Una vez guardada la función en el módulo de VBA, puedes utilizarla como cualquier fórmula nativa de Excel [04:15]. Simplemente escribe en una celda:
=prueba(12)
Excel reconoce la función y la muestra en el autocompletado. Al presionar Enter, devuelve el resultado calculado. Esta integración es lo que hace tan poderoso a VBA: puedes crear funciones a medida para cálculos específicos que las fórmulas estándar de Excel no cubren.
Las ventajas son claras:
Ahora es tu turno: crea una función que calcule el resultado de multiplicar un número por sí mismo y comparte una captura de pantalla en los comentarios.
David Montoya Salazar
Ahora podrá crear mis propias formulas Se emociona
Milquiades Herrera
me sentí igual
Monica Janneth Jaimes Sastre
Es muy emocionante...lástima no haber conocido antes estas herramientas
Decidí crear una función para edad.
Luis Reyes
Mi primera prueba de Función con VBA
Mateo Posada
Roger Christian Cansaya Olazabal
Public Function prueba(X As Integer) As Integer prueba = X * 38 End Function
Andersson Bustos Padilla
Aquí mi solución, yo más o menos se programar, pero el crear un script tan sencillo con un lenguaje que no conozco me emociono.
Daniela Rojas
Hola quien me puede ayudar, me sale un error que dice no se ha definido function o sub y está tal cual como en el video.
Raquel Ocampo Retana
Me pasa lo mismo :(
Ricardo Alfonso Chavez Vilcapoma
Sube una captura amiga para poder ayudarte
Milquiades Herrera
Wow profe Ana, cuando le dio "=" en excel y le salió la función prueba cambió mi vida. Puedo hacer mis propias funciones!!!
Wilmer Toledo
Si queremos crear una formula que contenga mas de un parámetro, el separador que se debe usar es coma (,) o punto y coma (;) según el idioma que uses, y recuerda que dentro del libro de excel los parámetros se pudieran tan cual fueron crearon en la función, y esta función ejecutara con estos parámetros las indicaciones dadas. Importante, integer lo podemos usar para números máximos de 3 caracteres, mayores de ahí recomendable usar long
Andres Buelvas Diago
Hecho! .
Ronal Alfeirys Saray Guio
En el momento en que la profe Ana ingresa 1.5 VBA ejecuta redondeo puesto que no reconoce el número como decimal. Para que se reconozca como decimal se debe ingresar con coma (,) y no con punto(.). De esa manera si se ingresa el decimal con el signo coma (,) automáticamente arroja un error puesto que no lo reconoce como entero (Integer).
JOEL JORDAN OSCCO NUÑEZ
Hola Ronal la observación es buenísima. Sin embargo, no es la correcta porque la coma (,) sirve para agregar más parámetros siguiendo el ejemplo del ejercicio en la imagen.
Saludos,
María Eugenia Pereira Chévez
Para que regrese el resultado con decimales debemos de cambiar el tipo de datos.
Public Function prueba2(x As Single) As Single prueba2 = x + 38 End Function
Carlos Andres Novoa
mis aportes
Andres Andres Centeno Trujillo
Function DIAS_HABilES(D_HABILES As Long, FECHA As Date, Rango_Festivo As Range) Dim Fhabil As Date Dim dia Dim n_vuelta Dim FESTIVo
Fhabil = FECHA n_vuelta = 1 Dfes = 0
''MsgBox Rango_Festivo.Address ''Hoja2.Range("A:A").NumberFormat = "General"
Do Until dia >= D_HABILES
Set CELDA = Rango_Festivo.Find(What:=Fhabil * 1, LookIn:=xlValues, LookAt:=xlPart) If CELDA Is Nothing Then FESTIVo = 0 Else FESTIVo = 1
''MsgBox n_vuelta
'Valido si el dia es habil If Weekday(Fhabil, vbSaturday) = 1 Or Weekday(Fhabil, vbSunday) = 1 Or FESTIVo = 1 Then
If dia = D_HABILES Then dia = dia - 1 Fhabil = FECHA + n_vuelta
Else
' MsgBox "dia " & dia ' MsgBox Format(fhabil, "dd-mm-yyyy") & "-" & Format(fhabil, "dddd") If dia <> D_HABILES Then dia = dia + 1 If dia <> D_HABILES Then Fhabil = FECHA + n_vuelta
End If
n_vuelta = n_vuelta + 1
Loop
DIAS_HABilES = Fhabil End Function
Funcion avanzar desde una fecha n cantidad de dias Habiles
Alejandra Muñoz Guerrero
natalia salcedo
¡Lo logré!
Brian Quiroz López
Sabía que existía visual basic pero ni idea que servía para crear funciones.
Edgar Contreras
Está hecho 👇
Lizette Rosalía Dazza Hernández
Funciones (Function)
📌 Sintaxis básica:
Function NombreFuncion(parámetros) As TipoDeDato ' Instrucciones NombreFuncion = valor End Function
Javier Daza
Kevin Josue Estrada Panduro
¿Alguien me ayuda?
Tengo bien la función pero al momento de querer usarla en la hoja de calculo no me aparece, es como si no se me guardara
Annie Martinez Parente Dodero
ProfesorHola! revisa que hayas creado la función en un un módulo y no sobre una hoja específica del libro