{"id":391,"date":"2023-10-30T18:34:26","date_gmt":"2023-10-30T18:34:26","guid":{"rendered":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/"},"modified":"2023-12-25T10:25:25","modified_gmt":"2023-12-25T10:25:25","slug":"funcion-definida-por-el-usuario-2","status":"publish","type":"page","link":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/","title":{"rendered":"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?"},"content":{"rendered":"<div class=\"excel-antes-del-contenido\" id=\"excel-1288766768\"><script type=\"text\/javascript\">\r\n\tatOptions = {\r\n\t\t'key' : 'c1158f160081d6540a8409e6925dab94',\r\n\t\t'format' : 'iframe',\r\n\t\t'height' : 250,\r\n\t\t'width' : 300,\r\n\t\t'params' : {}\r\n\t};\r\n<\/script>\r\n<script type=\"text\/javascript\" src=\"\/\/www.highperformanceformat.com\/c1158f160081d6540a8409e6925dab94\/invoke.js\"><\/script><\/div><p>Probablemente uno de los mayores beneficios de aprender VBA es la capacidad de crear sus propias funciones.<\/p>\n<p> En Excel existen m\u00e1s de 450 funciones, y algunas de ellas son muy \u00fatiles en tu trabajo diario. Pero Excel te ofrece la opci\u00f3n de crear una funci\u00f3n personalizada usando VBA. S\u00ed, tiene usted raz\u00f3n. Funci\u00f3n DEFINIDA POR EL USUARIO, abreviada como UDF, o tambi\u00e9n puede llamarla funci\u00f3n VBA personalizada.<\/p>\n<p> Y hay una cosa que puedo decir con confianza: todo usuario incipiente de VBA quiere aprender a crear una funci\u00f3n definida por el usuario. \u00bfNo t\u00fa? Di \u00abS\u00ed\u00bb en la secci\u00f3n de comentarios, si eres una de esas personas que desea crear una funci\u00f3n personalizada.<\/p>\n<p> Me alegra decirle que esta es una GU\u00cdA COMPLETA para ayudarlo a crear su primera funci\u00f3n personalizada usando VBA y, aparte de eso, he compartido algunos ejemplos de FUNCIONES DEFINIDAS POR EL USUARIO para ayudarlo a inspirarse.<\/p>\n<ol>\n<li> Aqu\u00ed usar\u00e9 las palabras funci\u00f3n definida por el usuario, funci\u00f3n personalizada y UDF indistintamente. Qu\u00e9date conmigo, ser\u00e1s una estrella de rock de VBA en los pr\u00f3ximos minutos.<\/li>\n<li> Para crear c\u00f3digo para la funci\u00f3n personalizada de VBA, debe escribirlo, no puede <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/grabar-una-macro\/\" data-wpel-link=\"internal\">grabarlo usando la grabadora de macros<\/a> .<\/li>\n<\/ol>\n<h2 class=\"wp-block-heading\"> Por qu\u00e9 deber\u00edas crear una funci\u00f3n personalizada de Excel<\/h2>\n<p> Como dije, hay muchas <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/funciones-de-excel\/\" data-wpel-link=\"internal\">funciones integradas en Excel<\/a> que pueden ayudarte a resolver casi cualquier problema y realizar todo tipo de c\u00e1lculos. Pero a veces, en situaciones espec\u00edficas, es necesario crear una UDF.<\/p>\n<p> Y a continuaci\u00f3n he enumerado algunas de las razones o situaciones en las que deber\u00eda utilizar una funci\u00f3n personalizada.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Cuando no hay ninguna funci\u00f3n para esto<\/h3>\n<p> Esta es una de las razones m\u00e1s comunes para crear una UDF con VBA, porque a veces necesitas calcular algo y no existe una funci\u00f3n espec\u00edfica para eso. Puedo darte un ejemplo de <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/contar-las-palabras\/\" data-wpel-link=\"internal\">contar palabras desde una celda<\/a> y para ello descubr\u00ed que una UDF puede ser una soluci\u00f3n perfecta. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png\" sizes=\"\" srcset=\"\" alt=\"cuente la palabra udf para saber por qu\u00e9 es importante crear una funci\u00f3n personalizada\"><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"> 2. Reemplazar una f\u00f3rmula compleja<\/h3>\n<p> Si trabaja con f\u00f3rmulas, estoy seguro de que sabr\u00e1 que las f\u00f3rmulas complejas son dif\u00edciles de leer y, a veces, m\u00e1s dif\u00edciles de entender para los dem\u00e1s. Entonces, una funci\u00f3n personalizada puede ser una soluci\u00f3n a este problema porque una vez que crea una UDF, no necesita escribir esta f\u00f3rmula compleja una y otra vez. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/une-fonction-definie-par-lutilisateur-peut-vous-aider-a-eviter-de-longs-calculs-1.png\" sizes=\"\" srcset=\"\" alt=\"una funci\u00f3n definida por el usuario puede ayudarle a evitar c\u00e1lculos largos\"><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"> 3. Cuando no quieres usar SUB Rutina<\/h3>\n<p> Aunque puede utilizar c\u00f3digo VBA para realizar un c\u00e1lculo, los c\u00f3digos VBA no son din\u00e1micos*. Debe ejecutar este c\u00f3digo nuevamente si desea actualizar su c\u00e1lculo. Pero si convierte este c\u00f3digo en una funci\u00f3n, no necesita ejecutar este c\u00f3digo una y otra vez porque simplemente puede insertarlo como una funci\u00f3n.<\/p>\n<h2 class=\"wp-block-heading\"> C\u00f3mo crear su primera funci\u00f3n definida por el usuario en Excel<\/h2>\n<p> Est\u00e1 bien, entonces mira. He dividido todo el proceso en tres pasos:<\/p>\n<ol>\n<li> Declare su procedimiento como una funci\u00f3n<\/li>\n<li> Definir sus argumentos y su tipo de datos.<\/li>\n<li> Agregue c\u00f3digo para calcular el valor deseado<\/li>\n<\/ol>\n<p> Pero d\u00e9jame darte:<\/p>\n<p> Necesita crear una funci\u00f3n que pueda devolver el nombre del d\u00eda a partir de un valor de fecha. Bueno, tenemos una funci\u00f3n que devuelve el n\u00famero del d\u00eda de la semana pero no el nombre. \u00bfEntiendes lo que te estoy diciendo? \u00bfS\u00ed?<\/p>\n<p> Entonces, sigamos los pasos a continuaci\u00f3n para crear su primera funci\u00f3n definida por el usuario:<\/p>\n<ol>\n<li> En primer lugar, abra su <a href=\"https:\/\/exceladvisor.org\/es\/editor-visual-basico\/\" data-wpel-link=\"internal\">editor de Visual Basic<\/a> usando la tecla de acceso directo ALT + F11 o vaya a <a href=\"https:\/\/exceladvisor.org\/es\/agregar-una-pestana-de-desarrollador\/\" data-wpel-link=\"internal\">la pesta\u00f1a Desarrollador<\/a> y simplemente haga clic en el bot\u00f3n \u00abVisual Basic\u00bb. <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/ouvrir-lediteur-vb-pour-ecrire-du-code-pour-udf-1.png\" sizes=\"\" srcset=\"\" alt=\"abra el editor vb para escribir c\u00f3digo para udf\"><\/li>\n<li> Lo siguiente es insertar un m\u00f3dulo, as\u00ed que haga clic derecho en la ventana del proyecto VBA, luego vaya a insertar y luego haga clic en \u00abM\u00f3dulo\u00bb. (ALERTA: Debe ingresar una FUNCI\u00d3N DEFINIDA POR EL USUARIO solo en los m\u00f3dulos est\u00e1ndar. Tanto el m\u00f3dulo Sheet como el ThisWorkbook son un tipo especial de m\u00f3dulo y si ingresa una UDF en estos dos m\u00f3dulos, Excel no reconoce que est\u00e1 creando una UDF) . <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/ajouter-un-module-dans-lediteur-vba-pour-ecrire-un-udf-1.png\" sizes=\"\" srcset=\"\" alt=\"agregue un m\u00f3dulo en el editor vba para escribir un udf\"><\/li>\n<li> Lo tercero es definir un nombre para la funci\u00f3n y aqu\u00ed estoy usando \u201cmyDayName\u201d. Entonces necesitas escribir \u201cFunci\u00f3n mydayName\u201d. \u00bfPor qu\u00e9 Funci\u00f3n antes que Nombre? Cuando crea una funci\u00f3n de VBA, el uso de la palabra \u00abFunci\u00f3n\u00bb le indica a Excel que trate este c\u00f3digo como una funci\u00f3n (aseg\u00farese de leer el alcance de una UDF antes en el mensaje). <img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/ecrire-un-nom-de-la-fonction-vba-personnalisee-1.png\" sizes=\"\" srcset=\"\" alt=\"escribir un nombre de funci\u00f3n vba personalizado\"><\/li>\n<li> Despu\u00e9s de eso necesitas definir argumentos para tu funci\u00f3n. As\u00ed que inserte par\u00e9ntesis iniciales y escriba \u00abInputDate As Date\u00bb. Aqu\u00ed, InputDate es el nombre del argumento y la fecha es su tipo de datos. Siempre es mejor definir un tipo de datos para el argumento. <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/letape-suivante-pour-ajouter-un-argument-a-la-fonction-definie-par-lutilisateur-1.png\" sizes=\"\" srcset=\"\" alt=\"siguiente paso para agregar un argumento a la funci\u00f3n definida por el usuario\"><\/li>\n<li> Ahora cierra el par\u00e9ntesis y escribe \u201cAs String\u201d. Aqu\u00ed defines el tipo de datos del resultado que devuelve la funci\u00f3n y como quieres el nombre del d\u00eda que es un texto, entonces su tipo de datos debe ser \u201cString\u201d. Si desea que el resultado sea algo distinto de una cadena, aseg\u00farese de configurar su tipo de datos en consecuencia. (myDayName (InputDate como fecha) como funci\u00f3n de cadena). <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/apres-cela-definissez-le-type-de-donnees-pour-lUDF-1.png\" sizes=\"\" srcset=\"\" alt=\"despu\u00e9s de eso, establezca el tipo de datos para la UDF\"><\/li>\n<li> Al final, presione ENTER. En este punto, el nombre de su funci\u00f3n, su argumento, el tipo de datos del argumento y el tipo de datos de la funci\u00f3n est\u00e1n configurados y tiene algo como lo siguiente en su m\u00f3dulo: <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/fonction-personnalisee-vba-apres-avoir-defini-les-arguments-de-nom-1.png\" sizes=\"\" srcset=\"\" alt=\"funci\u00f3n personalizada de vba despu\u00e9s de configurar los argumentos de nombre\"><\/li>\n<li> Ahora, en \u00abFunci\u00f3n\u00bb y \u00abFunci\u00f3n final\u00bb, debe definir el c\u00e1lculo o puede decir el funcionamiento de esta UDF. En Excel hay una funci\u00f3n de hoja de c\u00e1lculo llamada \u00abTexto\u00bb y estamos usando la misma aqu\u00ed. Y para esto tienes que escribir el c\u00f3digo a continuaci\u00f3n y con este c\u00f3digo defines el valor que debe devolver la funci\u00f3n. myDayName = WorksheetFunction.Text(InputDate, \u201cdddddd\u201d) <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/apres-avoir-ecrit-le-code-a-utiliser-dans-la-fonction-personnalisee-vba-1-1.png\" sizes=\"\" srcset=\"\" alt=\"despu\u00e9s de escribir el c\u00f3digo para usar en la funci\u00f3n personalizada de vba\"><\/li>\n<li> Ahora cierre su editor VB y regrese a la hoja de trabajo y en la celda B2 ingrese \u201c=myDayName(A2)\u201d presione Enter y tendr\u00e1 el nombre del d\u00eda. <br \/><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/inserez-votre-fonction-vba-personnalisee-dans-la-feuille-de-calcul-1.png\" sizes=\"\" srcset=\"\" alt=\"inserte su funci\u00f3n vba personalizada en la hoja de trabajo\"><\/li>\n<\/ol>\n<p> \u00a1Felicidades! Acaba de crear su primera funci\u00f3n definida por el usuario. Este es el momento de la verdadera alegr\u00eda. \u00bfNo es as\u00ed? Escriba \u00abAlegr\u00eda\u00bb en la secci\u00f3n de comentarios.<\/p>\n<h3 class=\"wp-block-heading\"> C\u00f3mo funciona esta funci\u00f3n y valor de retorno en una celda<\/h3>\n<p> Su primera funci\u00f3n personalizada est\u00e1 aqu\u00ed, pero el punto es que necesita comprender c\u00f3mo funciona. Si digo en t\u00e9rminos simples, es c\u00f3digo VBA pero lo usaste como procedimiento de funci\u00f3n. Divid\u00e1moslo en tres partes:<\/p>\n<ul>\n<li> Lo ingresa en una celda como una funci\u00f3n y especifica el valor de entrada.<\/li>\n<li> Excel ejecuta el c\u00f3digo detr\u00e1s de la funci\u00f3n y usa el valor al que hizo referencia.<\/li>\n<li> Tienes el resultado en la celda.<\/li>\n<\/ul>\n<p> Pero es necesario comprender c\u00f3mo funciona esta funci\u00f3n desde adentro. As\u00ed que he dividido todo el proceso en tres partes diferentes donde puedes ver c\u00f3mo funciona realmente el c\u00f3digo que escribiste para la funci\u00f3n. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" title=\"funci\u00f3n definida por el usuario\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/fonction-definie-par-lutilisateur.png\" sizes=\"\" srcset=\"\" alt=\"working-user-defined-function\"><\/figure>\n<\/div>\n<p> Como ha especificado \u00abInputDate\u00bb como argumento de la funci\u00f3n y cuando ingresa la funci\u00f3n en la celda y especifica una fecha, VBA toma ese valor de fecha y lo proporciona a la funci\u00f3n de texto que utiliz\u00f3 en el c\u00f3digo.<\/p>\n<p> Y en el ejemplo que mencion\u00e9 anteriormente, la fecha que tienes en la celda A1 es 01-ene-2019.<\/p>\n<p> Despu\u00e9s de eso, la funci\u00f3n TEXTO convierte esta fecha en un d\u00eda usando el c\u00f3digo de formato \u201cdddddd\u201d que ya mencion\u00f3 en el c\u00f3digo de funci\u00f3n. Y este d\u00eda que devuelve la funci\u00f3n TEXTO se asigna a \u00abmyDayName\u00bb.<\/p>\n<p> Entonces, si el resultado de la funci\u00f3n TEXTO es martes, este valor se asignar\u00e1 a \u201cmyDayName\u201d.<\/p>\n<p> Y aqu\u00ed termina el funcionamiento de la funci\u00f3n. \u00abmyDayName\u00bb es el nombre de la funci\u00f3n, por lo que cualquier valor asignado a \u00abmyDayName\u00bb ser\u00e1 el valor del resultado y la funci\u00f3n que insert\u00f3 en la hoja de trabajo lo devolver\u00e1 en la celda.<\/p>\n<p> <strong><span style=\"color: #ff0000;\">Cuando<\/span><\/strong> escribe c\u00f3digo para una funci\u00f3n personalizada, debe asegurarse de que el valor devuelto por ese c\u00f3digo est\u00e9 asignado al nombre de la funci\u00f3n.<\/p>\n<h3 class=\"wp-block-heading\"> C\u00f3mo mejorar una UDF para siempre<\/h3>\n<p> Bueno, ya sabes c\u00f3mo crear una funci\u00f3n VBA personalizada.<\/p>\n<p> AHORA\u2026<\/p>\n<p> Hay una cosa que debe asegurarse de que el c\u00f3digo que utiliz\u00f3 para funcionar sea lo suficientemente bueno para manejar todas las posibilidades. Si est\u00e1s hablando de la funci\u00f3n que acabas de escribir arriba, puedes devolver el nombre del d\u00eda a partir de una fecha.<\/p>\n<p> Objetivo\u2026<\/p>\n<p> \u00bfQu\u00e9 pasa si el valor que especificaste no es una fecha? \u00bfQu\u00e9 pasa si la celda a la que te refieres est\u00e1 vac\u00eda? Puede haber otras posibilidades, pero estoy seguro de que entiendes mi punto.<\/p>\n<p> \u00bfBIEN? Entonces, intentemos mejorar esta funci\u00f3n personalizada que podr\u00eda solucionar los problemas anteriores. BIEN. Primero, necesitas cambiar el tipo de datos del argumento y usar:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">InputDate As Variant<\/code><\/pre>\n<p> Con esto, su funci\u00f3n personalizada puede tomar cualquier tipo de datos como entrada. A continuaci\u00f3n, necesitamos usar <a href=\"https:\/\/exceladvisor.org\/es\/si-2\/\" data-wpel-link=\"internal\">la declaraci\u00f3n IF de VBA<\/a> para verificar que InputDate cumpla con ciertas condiciones. La primera condici\u00f3n es si la celda est\u00e1 vac\u00eda o no. Y para esto, debes usar el siguiente c\u00f3digo:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">If InputDate = \"\" Then myDayName = \"\"<\/code><\/pre>\n<p> Esto har\u00e1 que la funci\u00f3n est\u00e9 vac\u00eda si la celda a la que hizo referencia est\u00e1 vac\u00eda.<\/p>\n<p> Un problema est\u00e1 resuelto, pasemos al siguiente. Adem\u00e1s de una fecha, es posible que tengas un n\u00famero o un mensaje de texto. Entonces, para esto tambi\u00e9n necesita crear una condici\u00f3n que verifique si el valor referenciado es una fecha real o no.<\/p>\n<p> El c\u00f3digo ser\u00eda:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">If IsDate(InputDate) = False Then myDateName = \"\"<\/code><\/pre>\n<p class=\"grey-note\"> Aqu\u00ed estoy usando un espacio en blanco para ambas condiciones, de modo que si tiene muchos datos, pueda filtrar f\u00e1cilmente los valores donde el valor de entrada no es v\u00e1lido. Entonces, despu\u00e9s de agregar las condiciones anteriores, el c\u00f3digo se ver\u00eda as\u00ed:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Function myDayName(InputDate As Variant) As String If InputDate = \"\" Then myDayName = \"\" Else If IsDate(InputDate) = False Then myDateName = \"\" Else myDayName = WorksheetFunction.Text(InputDate, \"dddddd\") End If End If End Function<\/code><\/pre>\n<p> Y as\u00ed es como funciona ahora: estoy seguro de que a\u00fan puedes realizar cambios en esta funci\u00f3n, pero estoy seguro de que entiendes claramente mi punto.<\/p>\n<h2 class=\"wp-block-heading\"> C\u00f3mo utilizar una funci\u00f3n VBA personalizada<\/h2>\n<p> En este punto, ya sabes aproximadamente c\u00f3mo crear una funci\u00f3n VBA en Excel. Pero una vez que lo tienes, necesitas saber c\u00f3mo usarlo. Y en esta parte de la publicaci\u00f3n, compartir\u00e9 contigo c\u00f3mo y d\u00f3nde puedes usarlo. Entonces, entremos.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Simplemente en una hoja de c\u00e1lculo<\/h3>\n<p> \u00bfPor qu\u00e9 estamos creando una funci\u00f3n personalizada? Sencillo. Para usarlo en la hoja de c\u00e1lculo. Simplemente puede ingresar una UDF en una hoja de c\u00e1lculo usando el signo igual y el nombre del tipo de funci\u00f3n, luego especificar sus argumentos. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/inserer-une-fonction-personnalisee-dans-une-feuille-de-calcul-en-tapant-1.png\" sizes=\"\" srcset=\"\" alt=\"insertar una funci\u00f3n personalizada en una hoja de c\u00e1lculo escribiendo\"><\/figure>\n<\/div>\n<p> Tambi\u00e9n puede ingresar una funci\u00f3n definida por el usuario desde la biblioteca de funciones. Vaya a la pesta\u00f1a F\u00f3rmula \u279c Insertar funci\u00f3n \u279c Definido por el usuario. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/inserer-une-fonction-personnalisee-dans-une-feuille-de-calcul-a-partir-dune-formule-1.png\" sizes=\"\" srcset=\"\" alt=\"insertar una funci\u00f3n personalizada en una hoja de trabajo a partir de una f\u00f3rmula\"><\/figure>\n<\/div>\n<p> De esta lista puede elegir la UDF que desea insertar.<\/p>\n<h3 class=\"wp-block-heading\"> 2. Utilizar otros subprocedimientos y funciones<\/h3>\n<p> Tambi\u00e9n puede utilizar una funci\u00f3n dentro de otras funciones o en un procedimiento \u00abSub\u00bb. A continuaci\u00f3n se muestra un c\u00f3digo VBA en el que utiliz\u00f3 la funci\u00f3n para obtener el nombre del d\u00eda para la fecha actual.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Sub todayDay() MsgBox \"Today is \" &amp; myDayName(Date) End Sub<\/code><\/pre>\n<p class=\"grey-note\"> Aseg\u00farese de leer \u00abAlcance de una UDF\u00bb m\u00e1s adelante en este art\u00edculo para obtener m\u00e1s informaci\u00f3n sobre el uso de una funci\u00f3n en otros procedimientos.<\/p>\n<h3 class=\"wp-block-heading\"> 3. Acceder a funciones desde otro libro de trabajo.<\/h3>\n<p> Si tiene una UDF en un libro de trabajo y desea usarla en otro libro de trabajo o en todos los libros de trabajo, puede hacerlo creando un complemento para \u00e9l. Siga estos sencillos pasos:<\/p>\n<ul>\n<li> Primero, debe guardar el archivo (en el que tiene el c\u00f3digo de funci\u00f3n personalizado) como complemento.<\/li>\n<li> Para hacer esto, vaya a la pesta\u00f1a Archivo \u279c Guardar como \u279c \u201cComplementos de Excel (.xalm). <\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/enregistrer-le-fichier-en-tant-que-complement-pour-utiliser-toutes-les-fonctions-personnalisees-dans-dautres-wworkbooks-1.png\" sizes=\"\" srcset=\"\" alt=\"guarde el archivo como un complemento para usar todas las funciones personalizadas en otros wworkbooks\"><\/figure>\n<\/div>\n<ul>\n<li> Despu\u00e9s de eso, haga doble clic en el complemento e inst\u00e1lelo. <\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/cliquez-sur-ajouter-pour-ajouter-toutes-les-fonctions-definies-par-lutilisateur-dans-un-autre-classeur-1.png\" sizes=\"\" srcset=\"\" alt=\"haga clic en agregar para agregar todas las funciones definidas por el usuario en otro libro de trabajo\"><\/figure>\n<\/div>\n<p> Eso es todo. Ahora puede utilizar todas sus funciones de VBA en cualquier libro de trabajo.<\/p>\n<h2 class=\"wp-block-heading\"> Diferentes formas de crear una funci\u00f3n VBA personalizada [nivel avanzado]<\/h2>\n<p> En este punto, ya sabes c\u00f3mo crear una funci\u00f3n personalizada en VBA. Pero la cuesti\u00f3n es que cuando usamos funciones integradas, vienen con diferentes tipos de argumentos.<\/p>\n<p> Entonces, en esta secci\u00f3n de esta gu\u00eda, aprender\u00e1 c\u00f3mo crear una UDF con los diferentes tipos de argumentos.<\/p>\n<ul>\n<li> <strong>Sin ning\u00fan argumento<\/strong><\/li>\n<li> <strong>Con un solo argumento<\/strong><\/li>\n<li> <strong>Con varios argumentos<\/strong><\/li>\n<li> <strong>Usando una matriz como argumento<\/strong><\/li>\n<\/ul>\n<p> &#8230; avanzando.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Sin argumentos<\/h3>\n<p> \u00bfRecuerda funciones como AHORA y HOY en las que no necesita ingresar un argumento?<\/p>\n<p> S\u00ed. Puede crear una funci\u00f3n definida por el usuario donde no necesita ingresar ning\u00fan argumento. Hag\u00e1moslo con un ejemplo:<\/p>\n<p> Creemos una funci\u00f3n personalizada que pueda devolver la ubicaci\u00f3n del archivo actual. Y aqu\u00ed est\u00e1 el c\u00f3digo:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Function myPath() As String Dim myLocation As String Dim myName As String myLocation = ActiveWorkbook.FullName myName = ActiveWorkbook.Name If myLocation = myName Then myPath = \"File is not saved yet.\" Else myPath = myLocation End If End Function<\/code><\/pre>\n<p> Esta funci\u00f3n devuelve la ruta de la ubicaci\u00f3n donde est\u00e1 almacenado el archivo actual y, si el libro no est\u00e1 almacenado en ning\u00fan lugar, mostrar\u00e1 un mensaje que dice \u00abEl archivo a\u00fan no se ha guardado\u00bb. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/creer-une-fonction-definie-par-lutilisateur-sans-argument-1.png\" sizes=\"\" srcset=\"\" alt=\"crear una funci\u00f3n definida por el usuario sin argumentos\"><\/figure>\n<\/div>\n<p> Ahora, si prestas mucha atenci\u00f3n al c\u00f3digo de esta funci\u00f3n, no necesitas definir un argumento (entre par\u00e9ntesis). Acaba de definir el tipo de datos para el resultado de la funci\u00f3n.<\/p>\n<p> La regla b\u00e1sica para crear una funci\u00f3n sin argumentos es un c\u00f3digo en el que no es necesario escribir nada.<\/p>\n<p> En pocas palabras, el valor que desea obtener de la funci\u00f3n debe calcularse autom\u00e1ticamente.<\/p>\n<p> Y en esta funci\u00f3n tienes lo mismo.<\/p>\n<p> Este ActiveWorkbook.FullName devuelve la ubicaci\u00f3n del archivo y este ActiveWorkbook.Name devuelve el nombre. No tienes que introducir nada.<\/p>\n<h3 class=\"wp-block-heading\"> 2. Con un solo argumento<\/h3>\n<p> Ya hemos cubierto esto aprendiendo c\u00f3mo crear una funci\u00f3n definida por el usuario. Pero profundicemos un poco m\u00e1s y creemos una funci\u00f3n diferente. Esta es la funci\u00f3n que cre\u00e9 hace unos meses para <a href=\"https:\/\/exceladvisor.org\/es\/extraer-hipervinculo\/\" data-wpel-link=\"internal\">extraer la URL de un hiperv\u00ednculo<\/a> .<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Function giveMeURL(rng As Range) As String On Error Resume Next giveMeURL = rng.Hyperlinks(1).Address End Function<\/code><\/pre>\n<p> Ahora en esta funci\u00f3n solo tienes un argumento. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/fonction-personnalisee-simple-pour-extraire-lURL-dun-lien-hypertexte-1.png\" sizes=\"\" srcset=\"\" alt=\"funci\u00f3n personalizada simple para extraer URL de un hiperv\u00ednculo\"><\/figure>\n<\/div>\n<p> Cuando ingresa esto en una celda y luego especifica la celda donde tiene un hiperv\u00ednculo, devolver\u00e1 la URL del hiperv\u00ednculo. Ahora bien, en esta funci\u00f3n el trabajo principal lo realizan:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">rng.Hyperlinks(1).Address<\/code><\/pre>\n<p> Pero el rng es lo que necesitas especificar. Diga \u00abF\u00e1cil\u00bb en la secci\u00f3n de comentarios si le resulta f\u00e1cil crear una UDF.<\/p>\n<h3 class=\"wp-block-heading\"> 3. Con varios argumentos<\/h3>\n<p> Normalmente, <a style=\"outline: none; display: inline-block;\" href=\"https:\/\/exceladvisor.org\/es\/funciones-de-excel\/\" data-wpel-link=\"internal\">la mayor\u00eda de las funciones integradas de Excel<\/a> tienen varios argumentos. Por eso es esencial que aprendas a crear una funci\u00f3n personalizada con m\u00faltiples argumentos.<\/p>\n<p> Tomemos un ejemplo: desea eliminar letras particulares de una cadena de texto y desea conservar el resto de la parte.<\/p>\n<p> Bueno, tienes funciones como DERECHA y LEN que vas a utilizar en esta funci\u00f3n personalizada. Pero aqu\u00ed no necesitamos eso. Todo lo que necesitamos es una funci\u00f3n personalizada usando VBA.<\/p>\n<p> Entonces, aqu\u00ed est\u00e1 la funci\u00f3n:<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Function removeFirstC(rng As String, cnt As Long) As String removeFirstC = Right(rng, Len(rng) - cnt) End Functio<\/code><\/pre>\n<p> Bueno entonces mira: <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/fonction-vba-avec-plusieurs-arguments-1.png\" sizes=\"\" srcset=\"\" alt=\"funci\u00f3n vba con m\u00faltiples argumentos\"><\/figure>\n<\/div>\n<p> En esta funci\u00f3n tienes dos argumentos:<\/p>\n<ul>\n<li> <strong><span style=\"color: #000000;\">rng:<\/span><\/strong> En este argumento, debes especificar la celda de la que deseas eliminar el primer car\u00e1cter de un texto.<\/li>\n<li> <strong><span style=\"color: #000000;\">cnt:<\/span><\/strong> Y en el argumento debe especificar la cantidad de caracteres que desea eliminar (si desea eliminar varios caracteres del texto).<\/li>\n<\/ul>\n<p> Cuando lo ingresas en una celda, funciona como se muestra a continuaci\u00f3n:<\/p>\n<h4 class=\"wp-block-heading\"> 3.1 Crear una funci\u00f3n definida por el usuario con argumentos opcionales y obligatorios<\/h4>\n<p> Si piensas en la funci\u00f3n que acabamos de crear en el ejemplo anterior donde tienes dos argumentos diferentes, bueno, ambos son necesarios. Y, si omite alguno de estos, recibir\u00e1 un error como este.<\/p>\n<p> Ahora, si piensas l\u00f3gicamente, la funci\u00f3n que creamos es eliminar el primer car\u00e1cter. Pero aqu\u00ed debe especificar la cantidad de caracteres que desea eliminar. Entonces mi punto es que este argumento deber\u00eda ser opcional y deber\u00eda tomar uno como predeterminado.<\/p>\n<p> \u00bfQu\u00e9 opinas?<\/p>\n<p> Di \u00abS\u00ed\u00bb en la secci\u00f3n de comentarios si est\u00e1s de acuerdo conmigo en esto.<\/p>\n<p> Est\u00e1 bien, entonces mira. Para hacer que un argumento sea opcional, simplemente agregue \u00abOpcional\u00bb antes. As\u00ed:<\/p>\n<p> Pero lo importante es hacer que tu c\u00f3digo funcione con o sin el valor de este argumento. Entonces nuestro nuevo c\u00f3digo para la misma funci\u00f3n se ver\u00eda as\u00ed: Ahora en el c\u00f3digo, si ignoras especificar el segundo argumento.<\/p>\n<h3 class=\"wp-block-heading\"> 4. Utilice Array como argumento<\/h3>\n<p> Hay algunas funciones integradas que pueden tomar argumentos de matriz y tambi\u00e9n puede crear su funci\u00f3n VBA personalizada para hacer esto.<\/p>\n<p> Hagamos esto con un ejemplo simple donde necesitas crear una funci\u00f3n donde sumas los valores de un rango donde tienes n\u00fameros y texto. Aqu\u00ed estamos.<\/p>\n<pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">Function addNumbers(CellRef As Range) Dim Cell As Range For Each Cell In CellRef If IsNumeric(Cell.Value) = True Then Result = Result + Cell.Value End If Next Cell addNumbers = Result End Function<\/code><\/pre>\n<p> En el c\u00f3digo anterior de la funci\u00f3n, utilizamos un rango de n\u00fameros enteros A1:A10 en lugar de un valor \u00fanico o referencia de celda. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/une-fonction-vba-personnalisee-pour-additionner-le-nombre-dune-liste-1.png\" sizes=\"\" srcset=\"\" alt=\"una funci\u00f3n vba personalizada para agregar el n\u00famero de una lista\"><\/figure>\n<\/div>\n<p> Usando el bucle FOR CADA, verificar\u00e1 cada celda en el rango y sumar\u00e1 el valor si la celda contiene un n\u00famero.<\/p>\n<h2 class=\"wp-block-heading\"> El alcance de una funci\u00f3n definida por el usuario<\/h2>\n<p> En t\u00e9rminos simples, el alcance de una funci\u00f3n significa si se puede llamar desde otros procedimientos o no. Una FDU puede tener dos tipos diferentes de alcances.<\/p>\n<h3 class=\"wp-block-heading\"> 1. Audiencia<\/h3>\n<p> Puede hacer p\u00fablica su funci\u00f3n personalizada para poder llamarla en todas las hojas de trabajo del libro. Para hacer p\u00fablica una funci\u00f3n, simplemente use la palabra \u00abP\u00fablica\u00bb, como se muestra a continuaci\u00f3n. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/ajouter-pubilc-avant-le-nom-de-la-fonction-personnalisee-vba-1.png\" sizes=\"\" srcset=\"\" alt=\"agregar pubilc antes del nombre de la funci\u00f3n personalizada de vba\"><\/figure>\n<\/div>\n<p> Pero una funci\u00f3n es p\u00fablica de forma predeterminada si no la hace privada. En todos los ejemplos que hemos cubierto, todos son p\u00fablicos.<\/p>\n<h3 class=\"wp-block-heading\"> 2. Privado<\/h3>\n<p> Cuando hace que una funci\u00f3n sea privada, puede usarla en procedimientos en el mismo m\u00f3dulo. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/ajouter-prive-avant-le-nom-de-la-fonction-personnalisee-vba-1.png\" sizes=\"\" srcset=\"\" alt=\"agregar privado antes del nombre de la funci\u00f3n personalizada vba\"><\/figure>\n<\/div>\n<p> Digamos que si tienes tu UDF en \u00abM\u00f3dulo1\u00bb, solo puedes usarla en los procedimientos que tienes en \u00abM\u00f3dulo1\u00bb. Y no aparecer\u00e1 en la lista de funciones de la hoja de trabajo (cuando use el signo = e intente escribir el nombre), pero a\u00fan puede usarlo escribiendo su nombre y especificando argumentos.<\/p>\n<h2 class=\"wp-block-heading\"> Limitaciones de la funci\u00f3n definida por el usuario [UDF]<\/h2>\n<p> Las UDF son muy \u00fatiles. Pero son limitados en determinadas situaciones. Aqu\u00ed hay algunas cosas que quiero que tenga en cuenta y recuerde al crear una funci\u00f3n personalizada en VBA.<\/p>\n<ul>\n<li> No puede editar, eliminar ni formatear celdas y rangos utilizando una funci\u00f3n personalizada.<\/li>\n<li> Tampoco puede mover, cambiar el nombre, eliminar o agregar hojas de trabajo a un libro.<\/li>\n<li> Cambia el valor de otra celda.<\/li>\n<li> Tampoco puede cambiar las opciones del entorno.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"> \u00bfExiste alguna diferencia entre una funci\u00f3n incorporada y una funci\u00f3n definida por el usuario?<\/h2>\n<p> Me alegra que hayas preguntado. Bueno, para responder a esa pregunta, quiero compartir algunos de los puntos que creo que son importantes para ti.<\/p>\n<ol>\n<li> <strong><span style=\"color: #000000;\">M\u00e1s lento que el integrado:<\/span><\/strong> si compara la velocidad de las funciones integradas y las funciones de VBA, encontrar\u00e1 que la primera es r\u00e1pida. La raz\u00f3n detr\u00e1s de esto es que las funciones integradas est\u00e1n escritas en C++ o FORTRAN.<\/li>\n<li> <span style=\"color: #000000;\"><strong>Dificultad para compartir archivos:<\/strong><\/span> a menudo compartimos archivos por correo electr\u00f3nico y la nube. Si est\u00e1 utilizando alguna de las funciones personalizadas, debe compartir este archivo en formato \u00abxlam\u00bb para que otra persona tambi\u00e9n pueda usar su funci\u00f3n personalizada.<\/li>\n<\/ol>\n<p> Pero como dije anteriormente en \u201cPor qu\u00e9 deber\u00eda crear una funci\u00f3n de Excel personalizada\u201d, hay situaciones espec\u00edficas en las que puede optar por una funci\u00f3n personalizada de VBA.<\/p>\n<h2 class=\"wp-block-heading\"> Conclusi\u00f3n<\/h2>\n<p> Crear una funci\u00f3n definida por el usuario es simple. Todo lo que necesita hacer es usar \u00abFunci\u00f3n\u00bb antes del nombre para definirla como una funci\u00f3n, agregar argumentos, establecer el tipo de datos de los argumentos y luego establecer el tipo de datos para el valor de retorno. <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/une-illustration-simple-pour-comprendre-comment-creer-une-fonction-definie-par-lutilisateur-1.png\" sizes=\"\" srcset=\"\" alt=\"una ilustraci\u00f3n sencilla para entender c\u00f3mo crear una funci\u00f3n definida por el usuario\"><\/figure>\n<\/div>\n<p> Al final, agregue c\u00f3digo para calcular el valor que desea obtener de la funci\u00f3n. Esta gu\u00eda que compart\u00ed con ustedes hoy es la m\u00e1s f\u00e1cil para aprender a crear una funci\u00f3n personalizada en VBA y estoy seguro de que la encontr\u00f3 \u00fatil.<\/p>\n<p> Pero ahora dime una cosa.<\/p>\n<p> <strong>Las UDF son \u00fatiles, \u00bfqu\u00e9 opinas?<\/strong><\/p>\n<p> Por favor comparta sus puntos de vista conmigo en la secci\u00f3n de comentarios. Me encantar\u00eda saber de ti y no olvides compartir esta publicaci\u00f3n con tus amigos, estoy seguro de que lo apreciar\u00e1n.<\/p>\n<h2 class=\"wp-block-heading\"> <strong>Tutoriales relacionados<\/strong><\/h2>\n<ul>\n<li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/funciones\/\" data-wpel-link=\"internal\">Lista de funciones de VBA \u2013 explicadas con ejemplos<\/a><\/li>\n<li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/ejecutar-una-macro-2\/\" data-wpel-link=\"internal\">C\u00f3mo ejecutar una macro en Excel<\/a><\/li>\n<li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/si-2\/\" data-wpel-link=\"internal\">C\u00f3mo utilizar la declaraci\u00f3n IF en VBA<\/a><\/li>\n<li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/rango-1\/\" data-wpel-link=\"internal\">C\u00f3mo trabajar con rangos y celdas en VBA<\/a><\/li>\n<li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/es\/agregar-una-nueva-hoja-1\/\" data-wpel-link=\"internal\">Agregue una nueva hoja usando c\u00f3digo VBA<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Probablemente uno de los mayores beneficios de aprender VBA es la capacidad de crear sus propias funciones. En Excel existen m\u00e1s de 450 funciones, y algunas de ellas son muy \u00fatiles en tu trabajo diario. Pero Excel te ofrece la opci\u00f3n de crear una funci\u00f3n personalizada usando VBA. S\u00ed, tiene usted raz\u00f3n. Funci\u00f3n DEFINIDA POR [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"ub_ctt_via":"","footnotes":""},"class_list":["post-391","page","type-page","status-publish","hentry"],"featured_image_src":null,"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?\" \/>\n<meta property=\"og:description\" content=\"Probablemente uno de los mayores beneficios de aprender VBA es la capacidad de crear sus propias funciones. En Excel existen m\u00e1s de 450 funciones, y algunas de ellas son muy \u00fatiles en tu trabajo diario. Pero Excel te ofrece la opci\u00f3n de crear una funci\u00f3n personalizada usando VBA. S\u00ed, tiene usted raz\u00f3n. Funci\u00f3n DEFINIDA POR [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Excel Advisor\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-25T10:25:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/\",\"url\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/\",\"name\":\"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?\",\"isPartOf\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png\",\"datePublished\":\"2023-10-30T18:34:26+00:00\",\"dateModified\":\"2023-12-25T10:25:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#primaryimage\",\"url\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Hogar\",\"item\":\"https:\/\/exceladvisor.org\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/exceladvisor.org\/es\/#website\",\"url\":\"https:\/\/exceladvisor.org\/es\/\",\"name\":\"Excel Advisor\",\"description\":\"Su gu\u00eda para la dominaci\u00f3n de datos!\",\"publisher\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/exceladvisor.org\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/exceladvisor.org\/es\/#organization\",\"name\":\"Excel Advisor\",\"url\":\"https:\/\/exceladvisor.org\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"width\":105,\"height\":36,\"caption\":\"Excel Advisor\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/","og_locale":"es_ES","og_type":"article","og_title":"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?","og_description":"Probablemente uno de los mayores beneficios de aprender VBA es la capacidad de crear sus propias funciones. En Excel existen m\u00e1s de 450 funciones, y algunas de ellas son muy \u00fatiles en tu trabajo diario. Pero Excel te ofrece la opci\u00f3n de crear una funci\u00f3n personalizada usando VBA. S\u00ed, tiene usted raz\u00f3n. Funci\u00f3n DEFINIDA POR [&hellip;]","og_url":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/","og_site_name":"Excel Advisor","article_modified_time":"2023-12-25T10:25:25+00:00","og_image":[{"url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/","url":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/","name":"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?","isPartOf":{"@id":"https:\/\/exceladvisor.org\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#primaryimage"},"image":{"@id":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#primaryimage"},"thumbnailUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png","datePublished":"2023-10-30T18:34:26+00:00","dateModified":"2023-12-25T10:25:25+00:00","breadcrumb":{"@id":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#primaryimage","url":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png","contentUrl":"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/compter-le-mot-udf-pour-savoir-pourquoi-la-creation-dune-fonction-personnalisee-est-importante-1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/exceladvisor.org\/es\/funcion-definida-por-el-usuario-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Hogar","item":"https:\/\/exceladvisor.org\/es\/"},{"@type":"ListItem","position":2,"name":"\u00bfc\u00f3mo crear una funci\u00f3n definida por el usuario en vba?"}]},{"@type":"WebSite","@id":"https:\/\/exceladvisor.org\/es\/#website","url":"https:\/\/exceladvisor.org\/es\/","name":"Excel Advisor","description":"Su gu\u00eda para la dominaci\u00f3n de datos!","publisher":{"@id":"https:\/\/exceladvisor.org\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exceladvisor.org\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/exceladvisor.org\/es\/#organization","name":"Excel Advisor","url":"https:\/\/exceladvisor.org\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/","url":"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","contentUrl":"https:\/\/exceladvisor.org\/es\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","width":105,"height":36,"caption":"Excel Advisor"},"image":{"@id":"https:\/\/exceladvisor.org\/es\/#\/schema\/logo\/image\/"}}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/comments?post=391"}],"version-history":[{"count":1,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages\/391\/revisions"}],"predecessor-version":[{"id":1055,"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/pages\/391\/revisions\/1055"}],"wp:attachment":[{"href":"https:\/\/exceladvisor.org\/es\/wp-json\/wp\/v2\/media?parent=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}