{"id":390,"date":"2023-10-30T18:34:26","date_gmt":"2023-10-30T18:34:26","guid":{"rendered":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/"},"modified":"2023-12-06T11:36:58","modified_gmt":"2023-12-06T11:36:58","slug":"funcao-definida-pelo-usuario-2","status":"publish","type":"page","link":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/","title":{"rendered":"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em vba?"},"content":{"rendered":"<div class=\"excel-before-content-2\" id=\"excel-3887469134\"><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><div class=\"excel-before-content\" id=\"excel-2022741545\"><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>Provavelmente um dos benef\u00edcios mais legais de aprender VBA \u00e9 a capacidade de criar suas pr\u00f3prias fun\u00e7\u00f5es.<\/p><p> No Excel existem mais de 450 fun\u00e7\u00f5es, e algumas delas s\u00e3o muito \u00fateis no seu trabalho di\u00e1rio. Mas o Excel oferece a op\u00e7\u00e3o de criar uma fun\u00e7\u00e3o personalizada usando VBA. Sim voc\u00ea est\u00e1 certo. Fun\u00e7\u00e3o USER\u200c DEFINED, abreviada como UDF, ou voc\u00ea tamb\u00e9m pode cham\u00e1-la de fun\u00e7\u00e3o VBA personalizada.<\/p><p> E h\u00e1 uma coisa que posso dizer com seguran\u00e7a: todo usu\u00e1rio iniciante de VBA deseja aprender como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio. Voc\u00ea n\u00e3o? Diga \u201cSim\u201d na se\u00e7\u00e3o de coment\u00e1rios, se voc\u00ea for uma daquelas pessoas que deseja criar um recurso personalizado.<\/p><p> Tenho o prazer de informar que este \u00e9 um GUIA COMPLETO para ajud\u00e1-lo a criar sua primeira fun\u00e7\u00e3o personalizada usando VBA e, al\u00e9m disso, compartilhei alguns exemplos de FUN\u00c7\u00d5ES DEFINIDAS PELO USU\u00c1RIO para ajudar a inspirar voc\u00ea.<\/p><ol><li> Aqui usarei as palavras fun\u00e7\u00e3o definida pelo usu\u00e1rio, fun\u00e7\u00e3o personalizada e UDF de forma intercambi\u00e1vel. Ent\u00e3o fique comigo, voc\u00ea ser\u00e1 uma estrela do rock do VBA nos pr\u00f3ximos minutos.<\/li><li> Para criar c\u00f3digo para uma fun\u00e7\u00e3o personalizada VBA, voc\u00ea precisa escrev\u00ea-lo, n\u00e3o pode <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/gravar-uma-macro\/\" data-wpel-link=\"internal\">grav\u00e1-lo usando o gravador de macro<\/a> .<\/li><\/ol><h2 class=\"wp-block-heading\"> Por que voc\u00ea deve criar uma fun\u00e7\u00e3o personalizada do Excel<\/h2><p> Como eu disse, existem muitas <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/funcoes-do-excel\/\" data-wpel-link=\"internal\">fun\u00e7\u00f5es integradas no Excel<\/a> que podem ajud\u00e1-lo a resolver quase todos os problemas e realizar todos os tipos de c\u00e1lculos. Mas, \u00e0s vezes, em situa\u00e7\u00f5es espec\u00edficas, voc\u00ea precisa criar uma UDF.<\/p><p> E a seguir listei alguns dos motivos ou situa\u00e7\u00f5es em que voc\u00ea deve usar uma fun\u00e7\u00e3o personalizada.<\/p><h3 class=\"wp-block-heading\"> 1. Quando n\u00e3o h\u00e1 fun\u00e7\u00e3o para isso<\/h3><p> Esse \u00e9 um dos motivos mais comuns para criar uma UDF com VBA, pois \u00e0s vezes \u00e9 preciso calcular algo e n\u00e3o existe uma fun\u00e7\u00e3o espec\u00edfica para isso. Posso dar um exemplo de <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/conte-as-palavras\/\" data-wpel-link=\"internal\">contagem de palavras de uma c\u00e9lula<\/a> e para isso descobri que uma UDF pode ser uma solu\u00e7\u00e3o perfeita. <\/p><div class=\"wp-block-image\"><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=\"conte a palavra udf para saber por que criar uma fun\u00e7\u00e3o personalizada \u00e9 importante\"><\/figure><\/div><h3 class=\"wp-block-heading\"> 2. Substitua uma f\u00f3rmula complexa<\/h3><p> Se voc\u00ea trabalha com f\u00f3rmulas, tenho certeza de que sabe que f\u00f3rmulas complexas s\u00e3o dif\u00edceis de ler e, \u00e0s vezes, mais dif\u00edceis de serem entendidas por outras pessoas. Portanto, uma fun\u00e7\u00e3o personalizada pode ser uma solu\u00e7\u00e3o para esse problema porque, depois de criar uma UDF, voc\u00ea n\u00e3o precisa escrever essa f\u00f3rmula complexa repetidas vezes. <\/p><div class=\"wp-block-image\"><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=\"uma fun\u00e7\u00e3o definida pelo usu\u00e1rio pode ajud\u00e1-lo a evitar c\u00e1lculos demorados\"><\/figure><\/div><h3 class=\"wp-block-heading\"> 3. Quando voc\u00ea n\u00e3o quiser usar a rotina SUB<\/h3><p> Embora voc\u00ea possa usar c\u00f3digo VBA para realizar um c\u00e1lculo, os c\u00f3digos VBA n\u00e3o s\u00e3o din\u00e2micos*. Voc\u00ea deve executar este c\u00f3digo novamente se quiser atualizar seu c\u00e1lculo. Mas se voc\u00ea converter esse c\u00f3digo em uma fun\u00e7\u00e3o, n\u00e3o precisar\u00e1 execut\u00e1-lo repetidamente, pois poder\u00e1 simplesmente inseri-lo como uma fun\u00e7\u00e3o.<\/p><h2 class=\"wp-block-heading\"> Como criar sua primeira fun\u00e7\u00e3o definida pelo usu\u00e1rio no Excel<\/h2><p> Ok, ent\u00e3o olhe. Dividi todo o processo em tr\u00eas etapas:<\/p><ol><li> Declare seu procedimento como uma fun\u00e7\u00e3o<\/li><li> Defina seus argumentos e seu tipo de dados<\/li><li> Adicione c\u00f3digo para calcular o valor desejado<\/li><\/ol><p> Mas deixe-me dar a voc\u00ea:<\/p><p> Voc\u00ea precisa criar uma fun\u00e7\u00e3o que possa retornar o nome do dia a partir de um valor de data. Bem, temos uma fun\u00e7\u00e3o que retorna o n\u00famero do dia da semana, mas n\u00e3o o nome. Voc\u00ea entende o que eu estou dizendo? Sim?<\/p><p> Ent\u00e3o, vamos seguir as etapas abaixo para criar sua primeira fun\u00e7\u00e3o definida pelo usu\u00e1rio:<\/p><ol><li> Em primeiro lugar, abra seu <a href=\"https:\/\/exceladvisor.org\/pt\/editor-visual-basico\/\" data-wpel-link=\"internal\">editor Visual Basic<\/a> usando a tecla de atalho ALT + F11 ou v\u00e1 at\u00e9<a href=\"https:\/\/exceladvisor.org\/pt\/adicione-uma-guia-de-desenvolvedor\/\" data-wpel-link=\"internal\">a aba Desenvolvedor<\/a> e simplesmente clique no bot\u00e3o \u201cVisual Basic\u201d. <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 o editor vb para escrever c\u00f3digo para udf\"><\/li><li> O pr\u00f3ximo passo \u00e9 inserir um m\u00f3dulo, ent\u00e3o clique com o bot\u00e3o direito na janela do projeto VBA, v\u00e1 em inserir e clique em \u201cM\u00f3dulo\u201d. (ALERTA: Voc\u00ea deve inserir uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO apenas em m\u00f3dulos padr\u00e3o. Ambos os m\u00f3dulos Sheet e ThisWorkbook s\u00e3o um tipo especial de m\u00f3dulo e se voc\u00ea inserir uma UDF nesses dois m\u00f3dulos, o Excel n\u00e3o reconhece que voc\u00ea est\u00e1 criando uma 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=\"adicione um m\u00f3dulo no editor vba para escrever um udf\"><\/li><li> A terceira coisa \u00e9 definir um nome para a fun\u00e7\u00e3o e aqui estou usando \u201cmyDayName\u201d. Ent\u00e3o voc\u00ea precisa escrever \u201cFunction mydayName\u201d. Por que fun\u00e7\u00e3o antes do nome? Ao criar uma fun\u00e7\u00e3o VBA, usar a palavra &#8220;Fun\u00e7\u00e3o&#8221; informa ao Excel para tratar esse c\u00f3digo como uma fun\u00e7\u00e3o (certifique-se de ler o escopo de uma UDF antes na mensagem). <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=\"escreva um nome de fun\u00e7\u00e3o vba personalizado\"><\/li><li> Depois disso voc\u00ea precisa definir argumentos para sua fun\u00e7\u00e3o. Portanto, insira par\u00eanteses iniciais e escreva \u201cInputDate As Date\u201d. Aqui, InputDate \u00e9 o nome do argumento e data \u00e9 o seu tipo de dados. \u00c9 sempre melhor definir um tipo de dados para o 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=\"pr\u00f3xima etapa para adicionar argumento \u00e0 fun\u00e7\u00e3o definida pelo usu\u00e1rio\"><\/li><li> Agora feche os par\u00eanteses e escreva \u201cAs String\u201d. Aqui voc\u00ea define o tipo de dado do resultado retornado pela fun\u00e7\u00e3o e como deseja o nome do dia que \u00e9 um texto, ent\u00e3o seu tipo de dado deve ser \u201cString\u201d. Se voc\u00ea quiser que o resultado seja algo diferente de uma string, certifique-se de definir o tipo de dados de acordo. (myDayName (InputDate As Date) como fun\u00e7\u00e3o String). <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=\"depois disso, defina o tipo de dados para o UDF\"><\/li><li> No final, pressione ENTER. Neste ponto, o nome da sua fun\u00e7\u00e3o, seu argumento, tipo de dados do argumento e tipo de dados da fun\u00e7\u00e3o est\u00e3o definidos e voc\u00ea tem algo como abaixo em seu 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=\"fun\u00e7\u00e3o personalizada vba ap\u00f3s definir argumentos de nome\"><\/li><li> Agora em \u201cFun\u00e7\u00e3o\u201d e \u201cFun\u00e7\u00e3o Final\u201d voc\u00ea precisa definir o c\u00e1lculo ou pode dizer o funcionamento desta UDF. No Excel existe uma fun\u00e7\u00e3o de planilha chamada \u201cTexto\u201d e estamos usando a mesma aqui. E para isso voc\u00ea tem que escrever o c\u00f3digo abaixo e com este c\u00f3digo voc\u00ea define o valor que deve ser retornado pela fun\u00e7\u00e3o. meuNomeDia = 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=\"depois de escrever o c\u00f3digo para usar na fun\u00e7\u00e3o personalizada vba\"><\/li><li> Agora feche seu editor VB e volte para a planilha e na c\u00e9lula B2 digite \u201c=myDayName(A2)\u201d pressione Enter e voc\u00ea ter\u00e1 o nome do dia. <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=\"insira sua fun\u00e7\u00e3o vba personalizada na planilha\"><\/li><\/ol><p> Parab\u00e9ns! Voc\u00ea acabou de criar sua primeira fun\u00e7\u00e3o definida pelo usu\u00e1rio. Este \u00e9 o momento da verdadeira alegria. N\u00e3o \u00e9? Digite \u201cAlegria\u201d na se\u00e7\u00e3o de coment\u00e1rios.<\/p><h3 class=\"wp-block-heading\"> Como esta fun\u00e7\u00e3o funciona e retorna o valor em uma c\u00e9lula<\/h3><p> Sua primeira fun\u00e7\u00e3o personalizada est\u00e1 aqui, mas a quest\u00e3o \u00e9 que voc\u00ea precisa entender como isso funciona. Se eu disser em termos simples, \u00e9 um c\u00f3digo VBA, mas voc\u00ea o usou como procedimento de fun\u00e7\u00e3o. Vamos dividir em tr\u00eas partes:<\/p><ul><li> Voc\u00ea o insere em uma c\u00e9lula como uma fun\u00e7\u00e3o e especifica o valor de entrada.<\/li><li> O Excel executa o c\u00f3digo por tr\u00e1s da fun\u00e7\u00e3o e usa o valor que voc\u00ea referenciou.<\/li><li> Voc\u00ea tem o resultado na c\u00e9lula.<\/li><\/ul><p> Mas voc\u00ea precisa entender como essa fun\u00e7\u00e3o funciona por dentro. Ent\u00e3o dividi todo o processo em tr\u00eas partes diferentes onde voc\u00ea pode ver como o c\u00f3digo que voc\u00ea escreveu para a fun\u00e7\u00e3o realmente funciona. <\/p><div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" title=\"fun\u00e7\u00e3o definida pelo usu\u00e1rio\" src=\"https:\/\/exceladvisor.org\/wp-content\/uploads\/2023\/08\/fonction-definie-par-lutilisateur.png\" sizes=\"\" srcset=\"\" alt=\"working-user-defined-function\"><\/figure><\/div><p> Como voc\u00ea especificou &#8220;InputDate&#8221; como argumento da fun\u00e7\u00e3o e quando voc\u00ea insere a fun\u00e7\u00e3o na c\u00e9lula e especifica uma data, o VBA pega esse valor de data e o fornece para a fun\u00e7\u00e3o de texto que voc\u00ea usou no c\u00f3digo.<\/p><p> E no exemplo que citei acima, a data que voc\u00ea tem na c\u00e9lula A1 \u00e9 01\/01\/2019.<\/p><p> Depois disso, a fun\u00e7\u00e3o TEXT converte esta data em um dia usando o c\u00f3digo de formato \u201cdddddd\u201d que voc\u00ea j\u00e1 mencionou no c\u00f3digo da fun\u00e7\u00e3o. E este dia que \u00e9 retornado pela fun\u00e7\u00e3o TEXT \u00e9 atribu\u00eddo a \u201cmyDayName\u201d.<\/p><p> Assim, se o resultado da fun\u00e7\u00e3o TEXT for ter\u00e7a-feira, este valor ser\u00e1 atribu\u00eddo a \u201cmyDayName\u201d.<\/p><p> E aqui termina a opera\u00e7\u00e3o da fun\u00e7\u00e3o. \u201cmyDayName\u201d \u00e9 o nome da fun\u00e7\u00e3o, portanto, qualquer valor atribu\u00eddo a \u201cmyDayName\u201d ser\u00e1 o valor do resultado e a fun\u00e7\u00e3o que voc\u00ea inseriu na planilha o retornar\u00e1 na c\u00e9lula.<\/p><p> <strong><span style=\"color: #ff0000;\">Ao<\/span><\/strong> escrever c\u00f3digo para uma fun\u00e7\u00e3o personalizada, voc\u00ea deve garantir que o valor retornado por esse c\u00f3digo seja atribu\u00eddo ao nome da fun\u00e7\u00e3o.<\/p><h3 class=\"wp-block-heading\"> Como melhorar uma UDF para sempre<\/h3><p> Bem, voc\u00ea sabe como criar uma fun\u00e7\u00e3o VBA personalizada.<\/p><p> AGORA\u2026<\/p><p> H\u00e1 uma coisa que voc\u00ea precisa para garantir que o c\u00f3digo que voc\u00ea usou para trabalhar seja bom o suficiente para lidar com todas as possibilidades. Se voc\u00ea est\u00e1 falando sobre a fun\u00e7\u00e3o que acabou de escrever acima, voc\u00ea pode retornar o nome do dia a partir de uma data.<\/p><p> Mirar\u2026<\/p><p> E se o valor que voc\u00ea especificou n\u00e3o for uma data? E se a c\u00e9lula a que voc\u00ea se referiu estiver vazia? Pode haver outras possibilidades, mas tenho certeza de que voc\u00ea entendeu.<\/p><p> CERTO? Ent\u00e3o, vamos tentar melhorar esta fun\u00e7\u00e3o personalizada que pode corrigir os problemas acima. BOM. Primeiro, voc\u00ea precisa alterar o tipo de dados do argumento e usar:<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">InputDate As Variant<\/code><\/pre><p> Com isso, sua fun\u00e7\u00e3o customizada pode receber qualquer tipo de dado como entrada. Em seguida, precisamos usar <a href=\"https:\/\/exceladvisor.org\/pt\/se-2\/\" data-wpel-link=\"internal\">a instru\u00e7\u00e3o VBA IF<\/a> para verificar InputDate para determinadas condi\u00e7\u00f5es. A primeira condi\u00e7\u00e3o \u00e9 se a c\u00e9lula est\u00e1 vazia ou n\u00e3o. E para isso voc\u00ea deve utilizar o c\u00f3digo abaixo:<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">If InputDate = \"\" Then myDayName = \"\"<\/code><\/pre><p> Isso tornar\u00e1 a fun\u00e7\u00e3o vazia se a c\u00e9lula que voc\u00ea referenciou estiver vazia.<\/p><p> Um problema est\u00e1 resolvido, vamos passar para o pr\u00f3ximo. Al\u00e9m de uma data, voc\u00ea pode ter um n\u00famero ou texto. Ent\u00e3o para isso voc\u00ea tamb\u00e9m precisa criar uma condi\u00e7\u00e3o que dever\u00e1 verificar se o valor referenciado \u00e9 uma data real ou n\u00e3o.<\/p><p> O c\u00f3digo seria:<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">If IsDate(InputDate) = False Then myDateName = \"\"<\/code><\/pre><p class=\"grey-note\"> Aqui estou usando um espa\u00e7o em branco para ambas as condi\u00e7\u00f5es para que, se voc\u00ea tiver dados grandes, possa filtrar facilmente valores onde o valor de entrada n\u00e3o \u00e9 v\u00e1lido. Ent\u00e3o, depois de adicionar as condi\u00e7\u00f5es acima, o c\u00f3digo ficaria assim:<\/p><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><p> E \u00e9 assim que funciona agora: tenho certeza de que voc\u00ea ainda pode fazer altera\u00e7\u00f5es nesse recurso, mas tenho certeza de que entendeu claramente meu ponto.<\/p><h2 class=\"wp-block-heading\"> Como usar uma fun\u00e7\u00e3o VBA personalizada<\/h2><p> Neste ponto, voc\u00ea sabe aproximadamente como criar uma fun\u00e7\u00e3o VBA no Excel. Mas depois de obt\u00ea-lo, voc\u00ea precisa saber como us\u00e1-lo. E nesta parte do post vou compartilhar com voc\u00eas como e onde voc\u00ea pode utiliz\u00e1-lo. Ent\u00e3o, vamos come\u00e7ar.<\/p><h3 class=\"wp-block-heading\"> 1. Simplesmente em uma planilha<\/h3><p> Por que estamos criando uma fun\u00e7\u00e3o personalizada? Simples. Para us\u00e1-lo na planilha. Voc\u00ea pode simplesmente inserir uma UDF em uma planilha usando o sinal de igual e o nome do tipo da fun\u00e7\u00e3o e, em seguida, especificar seus argumentos. <\/p><div class=\"wp-block-image\"><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=\"insira uma fun\u00e7\u00e3o personalizada em uma planilha digitando\"><\/figure><\/div><p> Voc\u00ea tamb\u00e9m pode inserir uma fun\u00e7\u00e3o definida pelo usu\u00e1rio na biblioteca de fun\u00e7\u00f5es. V\u00e1 para a guia F\u00f3rmula \u279c Inserir Fun\u00e7\u00e3o \u279c Definido pelo Usu\u00e1rio. <\/p><div class=\"wp-block-image\"><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=\"insira uma fun\u00e7\u00e3o personalizada em uma planilha a partir de uma f\u00f3rmula\"><\/figure><\/div><p> Nesta lista voc\u00ea pode escolher a UDF que deseja inserir.<\/p><h3 class=\"wp-block-heading\"> 2. Usando outros subprocedimentos e fun\u00e7\u00f5es<\/h3><p> Voc\u00ea tamb\u00e9m pode usar uma fun\u00e7\u00e3o dentro de outras fun\u00e7\u00f5es ou em um procedimento &#8220;Sub&#8221;. Abaixo est\u00e1 um c\u00f3digo VBA no qual voc\u00ea usou a fun\u00e7\u00e3o para obter o nome do dia para a data atual.<\/p><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><p class=\"grey-note\"> Certifique-se de ler &#8220;Escopo de uma UDF&#8221; posteriormente neste artigo para saber mais sobre como usar uma fun\u00e7\u00e3o em outros procedimentos.<\/p><h3 class=\"wp-block-heading\"> 3. Acesse fun\u00e7\u00f5es de outra pasta de trabalho<\/h3><p> Se voc\u00ea tiver uma UDF em uma pasta de trabalho e quiser us\u00e1-la em outra pasta de trabalho ou em todas as pastas de trabalho, fa\u00e7a isso criando um suplemento para ela. Siga estas etapas simples:<\/p><ul><li> Primeiro, voc\u00ea precisa salvar o arquivo (no qual possui o c\u00f3digo da fun\u00e7\u00e3o personalizada) como um suplemento.<\/li><li> Para fazer isso, v\u00e1 at\u00e9 a aba Arquivo \u279c Salvar como \u279c \u201cSuplementos do Excel (.xalm). <\/li><\/ul><div class=\"wp-block-image\"><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=\"salve o arquivo como um complemento para usar todas as fun\u00e7\u00f5es personalizadas em outras wworkbooks\"><\/figure><\/div><ul><li> Depois disso, clique duas vezes no add-in e instale-o. <\/li><\/ul><div class=\"wp-block-image\"><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=\"clique em adicionar para adicionar todas as fun\u00e7\u00f5es definidas pelo usu\u00e1rio em outra pasta de trabalho\"><\/figure><\/div><p> \u00c9 isso. Agora voc\u00ea pode usar todas as suas fun\u00e7\u00f5es VBA em qualquer pasta de trabalho.<\/p><h2 class=\"wp-block-heading\"> Diferentes maneiras de criar uma fun\u00e7\u00e3o VBA personalizada [n\u00edvel avan\u00e7ado]<\/h2><p> Neste ponto, voc\u00ea sabe como criar uma fun\u00e7\u00e3o personalizada no VBA. Mas o fato \u00e9 que quando usamos fun\u00e7\u00f5es In-Built, elas v\u00eam com diferentes tipos de argumentos.<\/p><p> Portanto, nesta se\u00e7\u00e3o deste guia, voc\u00ea aprender\u00e1 como criar uma UDF com os diferentes tipos de argumentos.<\/p><ul><li> <strong>Sem qualquer argumento<\/strong><\/li><li> <strong>Com um \u00fanico argumento<\/strong><\/li><li> <strong>Com v\u00e1rios argumentos<\/strong><\/li><li> <strong>Usando array como argumento<\/strong><\/li><\/ul><p> \u2026 seguindo em frente.<\/p><h3 class=\"wp-block-heading\"> 1. Sem argumentos<\/h3><p> Lembra de fun\u00e7\u00f5es como AGORA e HOJE, nas quais voc\u00ea n\u00e3o precisa inserir um argumento?<\/p><p> Sim. Voc\u00ea pode criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio onde n\u00e3o precisa inserir nenhum argumento. Vamos fazer isso com um exemplo:<\/p><p> Vamos criar uma fun\u00e7\u00e3o personalizada que possa retornar a localiza\u00e7\u00e3o do arquivo atual. E aqui est\u00e1 o c\u00f3digo:<\/p><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><p> Esta fun\u00e7\u00e3o retorna o caminho do local onde o arquivo atual est\u00e1 armazenado e se a pasta de trabalho n\u00e3o estiver armazenada em nenhum lugar, mostrar\u00e1 uma mensagem dizendo \u201cO arquivo ainda n\u00e3o foi salvo\u201d. <\/p><div class=\"wp-block-image\"><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=\"crie uma fun\u00e7\u00e3o definida pelo usu\u00e1rio sem argumentos\"><\/figure><\/div><p> Agora, se voc\u00ea prestar muita aten\u00e7\u00e3o ao c\u00f3digo desta fun\u00e7\u00e3o, n\u00e3o precisar\u00e1 definir um argumento (entre par\u00eanteses). Voc\u00ea acabou de definir o tipo de dados para o resultado da fun\u00e7\u00e3o.<\/p><p> A regra b\u00e1sica para criar uma fun\u00e7\u00e3o sem argumentos \u00e9 um c\u00f3digo no qual voc\u00ea n\u00e3o precisa digitar nada.<\/p><p> Simplificando, o valor que voc\u00ea deseja obter da fun\u00e7\u00e3o deve ser calculado automaticamente.<\/p><p> E nesta fun\u00e7\u00e3o voc\u00ea tem a mesma coisa.<\/p><p> Este ActiveWorkbook.FullName retorna a localiza\u00e7\u00e3o do arquivo e este ActiveWorkbook.Name retorna o nome. Voc\u00ea n\u00e3o precisa inserir nada.<\/p><h3 class=\"wp-block-heading\"> 2. Com um \u00fanico argumento<\/h3><p> J\u00e1 abordamos isso aprendendo como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio. Mas vamos nos aprofundar um pouco mais e criar uma fun\u00e7\u00e3o diferente. Esta \u00e9 a fun\u00e7\u00e3o que criei h\u00e1 alguns meses para <a href=\"https:\/\/exceladvisor.org\/pt\/extrair-hiperlink\/\" data-wpel-link=\"internal\">extrair a URL de um hiperlink<\/a> .<\/p><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><p> Agora nesta fun\u00e7\u00e3o voc\u00ea s\u00f3 tem um argumento. <\/p><div class=\"wp-block-image\"><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=\"fun\u00e7\u00e3o personalizada simples para extrair URL de um hiperlink\"><\/figure><\/div><p> Quando voc\u00ea insere isso em uma c\u00e9lula e especifica a c\u00e9lula onde h\u00e1 um hiperlink, ele retornar\u00e1 a URL do hiperlink. Agora nesta fun\u00e7\u00e3o o trabalho principal \u00e9 feito por:<\/p><pre class=\"wp-block-code\"> <code class=\"language-visual-basic\" lang=\"visual-basic\">rng.Hyperlinks(1).Address<\/code><\/pre><p> Mas o rng \u00e9 o que voc\u00ea precisa especificar. Diga &#8220;F\u00e1cil&#8221; na se\u00e7\u00e3o de coment\u00e1rios se achar f\u00e1cil criar uma UDF.<\/p><h3 class=\"wp-block-heading\"> 3. Com v\u00e1rios argumentos<\/h3><p> Normalmente, <a style=\"outline: none; display: inline-block;\" href=\"https:\/\/exceladvisor.org\/pt\/funcoes-do-excel\/\" data-wpel-link=\"internal\">a maioria das fun\u00e7\u00f5es integradas do Excel<\/a> possuem v\u00e1rios argumentos. Portanto \u00e9 essencial que voc\u00ea aprenda como criar uma fun\u00e7\u00e3o customizada com m\u00faltiplos argumentos.<\/p><p> Vejamos um exemplo: voc\u00ea deseja remover letras espec\u00edficas de uma sequ\u00eancia de texto e deseja manter o resto da parte.<\/p><p> Bem, voc\u00ea tem fun\u00e7\u00f5es como RIGHT e LEN que usar\u00e1 nesta fun\u00e7\u00e3o personalizada. Mas aqui n\u00e3o precisamos disso. Tudo o que precisamos \u00e9 de uma fun\u00e7\u00e3o personalizada usando VBA.<\/p><p> Ent\u00e3o, aqui est\u00e1 a fun\u00e7\u00e3o:<\/p><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><p> Ok, ent\u00e3o olhe: <\/p><div class=\"wp-block-image\"><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=\"fun\u00e7\u00e3o vba com v\u00e1rios argumentos\"><\/figure><\/div><p> Nesta fun\u00e7\u00e3o voc\u00ea tem dois argumentos:<\/p><ul><li> <strong><span style=\"color: #000000;\">rng:<\/span><\/strong> Neste argumento, voc\u00ea deve especificar a c\u00e9lula da qual deseja remover o primeiro caractere de um texto.<\/li><li> <strong><span style=\"color: #000000;\">cnt:<\/span><\/strong> E no argumento voc\u00ea precisa especificar o n\u00famero de caracteres a serem removidos (se quiser remover v\u00e1rios caracteres do texto).<\/li><\/ul><p> Quando voc\u00ea insere em uma c\u00e9lula, funciona como abaixo:<\/p><h4 class=\"wp-block-heading\"> 3.1 Criando uma fun\u00e7\u00e3o definida pelo usu\u00e1rio com argumentos opcionais e obrigat\u00f3rios<\/h4><p> Se voc\u00ea pensar na fun\u00e7\u00e3o que acabamos de criar no exemplo acima, onde voc\u00ea tem dois argumentos diferentes, bem, ambos s\u00e3o necess\u00e1rios. E, se voc\u00ea perder alguma dessas op\u00e7\u00f5es, receber\u00e1 um erro como este.<\/p><p> Agora se voc\u00ea pensar logicamente, a fun\u00e7\u00e3o que criamos \u00e9 remover o primeiro caractere. Mas aqui voc\u00ea precisa especificar o n\u00famero de caracteres a serem removidos. Portanto, meu argumento \u00e9 que esse argumento deve ser opcional e deve considerar um como padr\u00e3o.<\/p><p> O que voc\u00ea acha?<\/p><p> Diga \u201cSim\u201d na se\u00e7\u00e3o de coment\u00e1rios se voc\u00ea concorda comigo nisso.<\/p><p> Ok, ent\u00e3o olhe. Para tornar um argumento opcional, basta adicionar \u201cOpcional\u201d antes dele. Bem desse jeito:<\/p><p> Mas o importante \u00e9 fazer o seu c\u00f3digo funcionar com ou sem o valor deste argumento. Portanto, nosso novo c\u00f3digo para a mesma fun\u00e7\u00e3o ficaria assim: Agora no c\u00f3digo, se voc\u00ea ignorar a especifica\u00e7\u00e3o do segundo argumento.<\/p><h3 class=\"wp-block-heading\"> 4. Use Array como argumento<\/h3><p> Existem algumas fun\u00e7\u00f5es integradas que podem receber argumentos de array e voc\u00ea tamb\u00e9m pode criar sua fun\u00e7\u00e3o VBA personalizada para fazer isso.<\/p><p> Vamos fazer isso com um exemplo simples onde voc\u00ea precisa criar uma fun\u00e7\u00e3o onde voc\u00ea soma os valores de um intervalo onde voc\u00ea tem n\u00fameros e texto. Aqui estamos.<\/p><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><p> No c\u00f3digo da fun\u00e7\u00e3o acima, usamos um intervalo de n\u00fameros inteiros A1:A10 em vez de um \u00fanico valor ou refer\u00eancia de c\u00e9lula. <\/p><div class=\"wp-block-image\"><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=\"uma fun\u00e7\u00e3o vba personalizada para adicionar o n\u00famero de uma lista\"><\/figure><\/div><p> Usando o loop FOR EACH, ele verificar\u00e1 cada c\u00e9lula do intervalo e somar\u00e1 o valor se a c\u00e9lula contiver um n\u00famero.<\/p><h2 class=\"wp-block-heading\"> O escopo de uma fun\u00e7\u00e3o definida pelo usu\u00e1rio<\/h2><p> Em termos simples, o escopo de uma fun\u00e7\u00e3o significa se ela pode ser chamada a partir de outros procedimentos ou n\u00e3o. Uma FDU pode ter dois tipos diferentes de escopos.<\/p><h3 class=\"wp-block-heading\"> 1. P\u00fablico<\/h3><p> Voc\u00ea pode tornar p\u00fablica sua fun\u00e7\u00e3o personalizada para poder cham\u00e1-la em todas as planilhas da pasta de trabalho. Para tornar uma fun\u00e7\u00e3o p\u00fablica, basta utilizar a palavra \u201cP\u00fablico\u201d, conforme abaixo. <\/p><div class=\"wp-block-image\"><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=\"adicione pubilc antes do nome da fun\u00e7\u00e3o personalizada vba\"><\/figure><\/div><p> Mas uma fun\u00e7\u00e3o \u00e9 p\u00fablica por padr\u00e3o se voc\u00ea n\u00e3o a tornar privada. Em todos os exemplos que cobrimos, todos eles s\u00e3o p\u00fablicos.<\/p><h3 class=\"wp-block-heading\"> 2. Privado<\/h3><p> Ao tornar uma fun\u00e7\u00e3o privada, voc\u00ea pode us\u00e1-la em procedimentos no mesmo m\u00f3dulo. <\/p><div class=\"wp-block-image\"><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=\"adicione private antes do nome da fun\u00e7\u00e3o personalizada vba\"><\/figure><\/div><p> Digamos que se voc\u00ea tiver sua UDF no &#8220;M\u00f3dulo1&#8221;, voc\u00ea s\u00f3 poder\u00e1 utiliz\u00e1-la nos procedimentos que tiver no &#8220;M\u00f3dulo1&#8221;. E n\u00e3o aparecer\u00e1 na lista de fun\u00e7\u00f5es da planilha (quando voc\u00ea usar o sinal = e tentar digitar o nome), mas ainda poder\u00e1 us\u00e1-lo digitando seu nome e especificando argumentos.<\/p><h2 class=\"wp-block-heading\"> Limita\u00e7\u00f5es da fun\u00e7\u00e3o definida pelo usu\u00e1rio [UDF]<\/h2><p> UDFs s\u00e3o muito \u00fateis. Mas eles s\u00e3o limitados em certas situa\u00e7\u00f5es. Aqui est\u00e3o algumas coisas que quero que voc\u00ea observe e lembre ao criar uma fun\u00e7\u00e3o personalizada no VBA.<\/p><ul><li> Voc\u00ea n\u00e3o pode editar, excluir ou formatar c\u00e9lulas e intervalos usando uma fun\u00e7\u00e3o personalizada.<\/li><li> Tamb\u00e9m n\u00e3o \u00e9 poss\u00edvel mover, renomear, excluir ou adicionar planilhas a uma pasta de trabalho.<\/li><li> Altere o valor de outra c\u00e9lula.<\/li><li> Tamb\u00e9m n\u00e3o pode alterar as op\u00e7\u00f5es de ambiente.<\/li><\/ul><h2 class=\"wp-block-heading\"> Existe uma diferen\u00e7a entre uma fun\u00e7\u00e3o interna e uma fun\u00e7\u00e3o definida pelo usu\u00e1rio?<\/h2><p> Estou feliz que voc\u00ea perguntou. Bem, para responder a essa pergunta, quero compartilhar alguns pontos que considero importantes para voc\u00ea.<\/p><ol><li> <strong><span style=\"color: #000000;\">Mais lento que o integrado:<\/span><\/strong> se voc\u00ea comparar a velocidade das fun\u00e7\u00f5es integradas e das fun\u00e7\u00f5es VBA, descobrir\u00e1 que a primeira \u00e9 r\u00e1pida. A raz\u00e3o por tr\u00e1s disso \u00e9 que as fun\u00e7\u00f5es integradas s\u00e3o escritas em C++ ou FORTRAN.<\/li><li> <span style=\"color: #000000;\"><strong>Dificuldade para compartilhar arquivos:<\/strong><\/span> Frequentemente compartilhamos arquivos por e-mail e pela nuvem. Se voc\u00ea estiver usando alguma das fun\u00e7\u00f5es personalizadas, precisar\u00e1 compartilhar esse arquivo no formato &#8220;xlam&#8221; para que outra pessoa tamb\u00e9m possa usar sua fun\u00e7\u00e3o personalizada.<\/li><\/ol><p> Mas como eu disse acima em \u201cPor que voc\u00ea deve criar uma fun\u00e7\u00e3o personalizada do Excel\u201d, existem situa\u00e7\u00f5es espec\u00edficas em que voc\u00ea pode optar por uma fun\u00e7\u00e3o VBAcustom.<\/p><h2 class=\"wp-block-heading\"> Conclus\u00e3o<\/h2><p> Criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio \u00e9 simples. Tudo o que voc\u00ea precisa fazer \u00e9 usar \u201cFun\u00e7\u00e3o\u201d antes do nome para defini-lo como uma fun\u00e7\u00e3o, adicionar argumentos, definir o tipo de dados dos argumentos e, em seguida, definir o tipo de dados para o valor de retorno. <\/p><div class=\"wp-block-image\"><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=\"uma ilustra\u00e7\u00e3o simples para entender como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio\"><\/figure><\/div><p> No final, adicione c\u00f3digo para calcular o valor que deseja obter da fun\u00e7\u00e3o. Este guia que compartilhei com voc\u00ea hoje \u00e9 o mais f\u00e1cil para aprender como criar uma fun\u00e7\u00e3o personalizada no VBA e tenho certeza que voc\u00ea o achou \u00fatil.<\/p><p> Mas agora me diga uma coisa.<\/p><p> <strong>UDFs s\u00e3o \u00fateis, o que voc\u00ea acha?<\/strong><\/p><p> Por favor, compartilhe suas opini\u00f5es comigo na se\u00e7\u00e3o de coment\u00e1rios. Eu adoraria ouvir de voc\u00ea e n\u00e3o se esque\u00e7a de compartilhar esta postagem com seus amigos, tenho certeza que eles ir\u00e3o gostar.<\/p><h2 class=\"wp-block-heading\"> <strong>Tutoriais relacionados<\/strong><\/h2><ul><li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/funcoes\/\" data-wpel-link=\"internal\">Lista de fun\u00e7\u00f5es VBA \u2013 explicadas com exemplos<\/a><\/li><li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/executar-uma-macro-2\/\" data-wpel-link=\"internal\">Como executar uma macro no Excel<\/a><\/li><li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/se-2\/\" data-wpel-link=\"internal\">Como usar a instru\u00e7\u00e3o IF em VBA<\/a><\/li><li><a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/intervalo-1\/\" data-wpel-link=\"internal\">Como trabalhar com intervalos e c\u00e9lulas em VBA<\/a><\/li><li> <a style=\"outline: none;\" href=\"https:\/\/exceladvisor.org\/pt\/adicione-uma-nova-planilha-1\/\" data-wpel-link=\"internal\">Adicione uma nova planilha usando c\u00f3digo VBA<\/a><\/li><\/ul>","protected":false},"excerpt":{"rendered":"","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-390","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>Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em VBA?<\/title>\n<meta name=\"description\" content=\"Neste tutorial, expliquei como criar uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO (UDF) do Excel usando VBA e tamb\u00e9m\" \/>\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\/pt\/funcao-definida-pelo-usuario-2\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em VBA?\" \/>\n<meta property=\"og:description\" content=\"Neste tutorial, expliquei como criar uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO (UDF) do Excel usando VBA e tamb\u00e9m\" \/>\n<meta property=\"og:url\" content=\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Excel Advisor\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-06T11:36:58+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=\"Tempo estimado de leitura\" \/>\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\/pt\/funcao-definida-pelo-usuario-2\/\",\"url\":\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/\",\"name\":\"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em VBA?\",\"isPartOf\":{\"@id\":\"https:\/\/exceladvisor.org\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-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-06T11:36:58+00:00\",\"description\":\"Neste tutorial, expliquei como criar uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO (UDF) do Excel usando VBA e tamb\u00e9m\",\"breadcrumb\":{\"@id\":\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-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\/pt\/funcao-definida-pelo-usuario-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lar\",\"item\":\"https:\/\/exceladvisor.org\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em vba?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/exceladvisor.org\/pt\/#website\",\"url\":\"https:\/\/exceladvisor.org\/pt\/\",\"name\":\"Excel Advisor\",\"description\":\"O seu guia definitivo para dominar os dados!\",\"publisher\":{\"@id\":\"https:\/\/exceladvisor.org\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/exceladvisor.org\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/exceladvisor.org\/pt\/#organization\",\"name\":\"Excel Advisor\",\"url\":\"https:\/\/exceladvisor.org\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/exceladvisor.org\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/exceladvisor.org\/pt\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"contentUrl\":\"https:\/\/exceladvisor.org\/pt\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png\",\"width\":105,\"height\":36,\"caption\":\"Excel Advisor\"},\"image\":{\"@id\":\"https:\/\/exceladvisor.org\/pt\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em VBA?","description":"Neste tutorial, expliquei como criar uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO (UDF) do Excel usando VBA e tamb\u00e9m","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\/pt\/funcao-definida-pelo-usuario-2\/","og_locale":"pt_PT","og_type":"article","og_title":"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em VBA?","og_description":"Neste tutorial, expliquei como criar uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO (UDF) do Excel usando VBA e tamb\u00e9m","og_url":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/","og_site_name":"Excel Advisor","article_modified_time":"2023-12-06T11:36:58+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":{"Tempo estimado de leitura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/","url":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/","name":"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em VBA?","isPartOf":{"@id":"https:\/\/exceladvisor.org\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/#primaryimage"},"image":{"@id":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-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-06T11:36:58+00:00","description":"Neste tutorial, expliquei como criar uma FUN\u00c7\u00c3O DEFINIDA PELO USU\u00c1RIO (UDF) do Excel usando VBA e tamb\u00e9m","breadcrumb":{"@id":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-usuario-2\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/exceladvisor.org\/pt\/funcao-definida-pelo-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\/pt\/funcao-definida-pelo-usuario-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Lar","item":"https:\/\/exceladvisor.org\/pt\/"},{"@type":"ListItem","position":2,"name":"Como criar uma fun\u00e7\u00e3o definida pelo usu\u00e1rio em vba?"}]},{"@type":"WebSite","@id":"https:\/\/exceladvisor.org\/pt\/#website","url":"https:\/\/exceladvisor.org\/pt\/","name":"Excel Advisor","description":"O seu guia definitivo para dominar os dados!","publisher":{"@id":"https:\/\/exceladvisor.org\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/exceladvisor.org\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/exceladvisor.org\/pt\/#organization","name":"Excel Advisor","url":"https:\/\/exceladvisor.org\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/exceladvisor.org\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/exceladvisor.org\/pt\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","contentUrl":"https:\/\/exceladvisor.org\/pt\/wp-content\/uploads\/2023\/12\/exceladvisor.org_.png","width":105,"height":36,"caption":"Excel Advisor"},"image":{"@id":"https:\/\/exceladvisor.org\/pt\/#\/schema\/logo\/image\/"}}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/pages\/390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/comments?post=390"}],"version-history":[{"count":1,"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/pages\/390\/revisions"}],"predecessor-version":[{"id":1001,"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/pages\/390\/revisions\/1001"}],"wp:attachment":[{"href":"https:\/\/exceladvisor.org\/pt\/wp-json\/wp\/v2\/media?parent=390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}