Você está na página 1de 20

Tutorial VBA Professor Erick Ferreira Silva

Funes do VBA Funes de Tipo

A funo IsDate. A funo IsDate recebe uma varivel ou expresso como argumento, e determina se a varivel ou expresso uma data vlida, ou pode ser convertida para uma data vlida. Caso o argumento passado seja uma data vlida, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Podemos utilizar esta funo, por exemplo, para verificar se o usurio digitou uma data vlida, em um campo de um formulrio. A sintaxe da funo IsDate a seguinte: IsDate(NomeDaVarivel) ou

IsDate(expresso) A seguir temos um exemplo de utilizao da funo IsDate. If IsDate(x) Then MsgBox "Voc digitou uma data vlida !" Else MsgBox "Data invlida, digite novamente !" End If A funo IsEmpty. A funo IsEmpty recebe uma varivel ou expresso como argumento, e determina se, em algum momento, foi atribudo algum valor para a varivel ou expresso. Caso tenha sido atribudo algum valor, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Podemos utilizar esta funo, por exemplo, para verificar se um campo de digitao obrigatria, como por exemplo o nome, no foi deixado em branco. A sintaxe da funo IsEmpty a seguinte: IsEmpty(NomeDaVarivel) ou IsEmpty(expresso) A seguir temos um exemplo de utilizao da funo IsEmpty. Vamos declarar uma varivel x, que nunca Ser utilizada no nosso Script Dim a, b, c Dim x a=10 b=23 c=a+b If IsEmpty(x) Then MsgBox "A varivel x, no foi utilizada !" End If A varivel x foi declarada porm no foi inicializada, com isso est vazia, logo a funo IsEmpty(x) ir retornar Verdadeiro. A funo IsNull.

A funo IsNull recebe uma varivel ou expresso como argumento, e determina se, em algum momento, foi atribudo o valor Null para a varivel ou expresso. Caso tenha sido atribudo o valor Null, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Para atribuirmos Null para uma varivel, utilizamos a seguinte sintaxe: NomeDaVarivel = Null IMPORTANTE: Uma varivel com valor Null, no a mesma coisa que uma varivel com valor zero, ou uma varivel de texto com tamanho zero. Quando atribudo o valor Null para a varivel, esta continua existindo na memria, porm sem nenhum valor definido. A sintaxe da funo IsNull a seguinte: IsNull(NomeDaVarivel) ou IsNull(expresso) A seguir temos um exemplo de utilizao da funo IsNull. ' Vamos declarar uma varivel x, e atribuir ' Null, para a varivel. Dim x x = Null If IsNull(x) Then MsgBox "A varivel x Nula !" End If Este exemplo produz o seguinte resultado:

A funo IsNumeric. A funo IsNumeric recebe uma varivel ou expresso como argumento, e determina se o valor atribudo varivel ou expresso numrico, ou pode ser convertido para numrico. Caso o valor seja numrico, ou possa ser convertido, a funo retorna Verdadeiro, caso contrrio, retorna Falso. A sintaxe da funo IsNumeric a seguinte: IsNumeric(NomeDaVarivel) ou

IsNumeric(expresso) A seguir temos um exemplo de utilizao da funo IsNumeric. Dim x,y,z x=123 'Atribuo um valor que no pode ser convertido 'para numrico y = "Riachuelo - 80" z = Date() mensagem = "Valor de x: " & x &" numrico ? " & IsNumeric(x)& Chr(13) mensagem = mensagem & "Valor de y: " & y &" numrico ? " & IsNumeric(y)& Chr(13) mensagem = mensagem & "Valor de z: " & z &" numrico ? " & IsNumeric(z) MsgBox mensagem Cabe salientar a utilizao da funo Date(), para capturar a data do sistema, e atribuir esta data varivel z. Observe que esta data no foi considerada um valor numrico para a funo IsNumeric.

VBA Funes para converso

Nesta lio aprenderemos a utilizar as principais funes para converso de tipos. Existem situaes em que um determinado tipo de dado, deve ser convertido para outro. Por exemplo, se tivermos um nmero, armazenado na forma de texto, precisamos convert-lo para inteiro ou double, para que possamos realizar clculos. Em um dos exemplos do Mdulo 6, faremos um exemplo de clculo do DV do CPF, onde o CPF um valor do tipo texto. Ao extrairmos cada dgito do CPF, estes sero extrados como caracteres de texto. Precisaremos utilizar uma funo de converso, para convert-los para nmeros, a fim de que possamos efetuar os clculos necessrios. Na seqncia, apresento as principais funes de converso, bem como um pequeno fragmento de cdigo, exemplificando a utilizao de cada uma delas. Fun o Cbool A funo Cbool converte uma varivel ou resultado de um expresso, para o subtipo Boolean. Qualquer nmero, com exceo do zero, automaticamente convertido para Verdadeiro. O valor zero sempre convertido para Falso. O argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro em tempo de execuo. Observe este linha de cdigo: MsgBox cbool(10>25) & chr(13) & cbool(3) Esta linha gera a mensagem indicada na Figura a seguir:

A expresso 10>25 avaliada, como a expresso falsa, a funo Cbool retorna Falso. J no segundo uso da funo Cbool, foi passado o parmetro 3 para a funo. Qualquer valor diferente de zero (com exceo de texto), a funo interpreta como Verdadeiro, o que comprovado pela Figura anterior. Fun o CByte A funo CByte converte uma varivel ou resultado de um expresso, para o subtipo Byte. O valor a ser convertido, deve estar na faixa aceitvel para o tipo by te, que vai de 0 255. Caso o nmero esteja fora desta faixa, ser gerada uma mensagem de erro, em tempo de execuo. O argumento desta funo, no pode ser Texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CByte(10+34) & chr(13) & CByte(35) Esta linha gera a mensagem indicada na Figura a seguir:

A expresso 10+34 calculada, e o resultado (44), convertido para o tipo byte. A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, pois o valor a ser convertido para byte, est fora da faixa de 0 255. MsgBox CByte(100+200) Essa linha de cdigo ir gerar a seguinte mensagem de erro:

Fun o CCur

A funo CCur converte uma varivel ou resultado de um expresso, para o subtipo Currency (semelhante ao formato Moeda, porm sem o smbolo do real: R$). O argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro. Observe este linha de cdigo: MsgBox CCur(250.335677+324.3333) & chr(13) & CCur(1250.326582) Esta linha gera a mensagem indicada na Figura a seguir:

A expresso 250.335677+324.3333 calculada, e o resultado convertido para o tipo Currency. Se passarmos um argumento de texto para a funo CCur, ser gerado um erro de execuo, conforme indicado na Figura a seguir:

Fun o CDate A funo CDate converte uma varivel ou resultado de um expresso, para o subtipo Date. O argumento desta funo deve estar em um formato que seja aceitvel para datas, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CDate( 31/10/1980) & chr(13) & CDate(23-01-2007) Esta linha gera a mensagem indicada na Figura a seguir:

A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, conforme indicado na prxima figura:

MsgBox CDate( 31/02/1980)

Fun o CDbl A funo CDbl converte uma varivel ou resultado de um expresso, para o subtipo Double. O tipo Doubl utilizado para nmeros grandes com casas decimais. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CDbl("4.940651247E-17") Esta linha gera a mensagem indicada na Figura a seguir:

Na prxima lio estudaremos mais algumas funes para converso de tipos.

VBA Funes para converso

Vamos apresentar mais algumas funes do VBA, para a converso de tipos de dados. Fun o CInt A funo CInt converte uma varivel ou resultado de um expresso, para o subtipo Integer. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CInt(32.36) & Chr(13) & CInt(20.35+40.45) Esta linha gera a mensagem indicada na Figura a seguir:

A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo. Fun o CLng A funo CLng converte uma varivel ou resultado de um expresso, para o subtipo Long. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida pelo subtipo Long, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CLng("3462315") Esta linha gera a mensagem indicada na Figura a seguir:

Fun o CSng A funo CSng converte uma varivel ou resultado de um expresso, para o subtipo Single. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida pelo subtipo Single, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CSng("3.1418256927") Esta linha gera a mensagem indicada na Figura a seguir:

Fun o CStr A funo CStr converte uma varivel ou resultado de um expresso, para o subtipo String. Observe este linha de cdigo:

MsgBox CStr("12345" & " hectares de terra") Esta linha gera a mensagem indicada na Figura a seguir:

Fun o Int A funo Int retorna somente a parte inteira de um determinado nmero. A linha de cdigo a seguir: MsgBox Int(-7.35) & Chr(13) & Int(10.35) Esta linha gera a mensagem indicada na Figura a Seguir:

Com isso, terminamos a nossa apresentao sobre as principais funes para a converso de tipos de dados. Na prxima lio, analisaremos mais algumas funes do VBA, para operaes com dados do tipo String e do tipo Data/Hora.

VBA Funes para tratamento de Texto


Nessa lio veremos as principais funes para tratamento de String. Fun o Asc A funo Asc, retorna o valor numrico do cdigo ASCII, para a primeira letra de uma String. Considere o exemplo: Asc(Ainda chovia) Este exemplo de uso da funo retorna o valor 65, o qual o cdigo ASCII, para a letra A maiscula. Caso fosse a letra "a" minscula, o cdigo retornado seria 97 e assim por diante. Fun o Chr A funo Chr(nmero), recebe um nmero como parmetro, e retorna o caractere ASCII, associado ao nmero passado como parmetro. Considere o exemplo: Chr(65)

Este exemplo de uso da funo retorna o caractere "A" maisculo. NOTA: At agora, utilizamos a funo Chr em diversos exemplos. Utilizamos o Chr(13), para simular um ENTER, o que faz uma quebra de linha, nas mensagens montadas com o MsgBox. Fun o Len Esta funo determina o tamanho da String que foi passada como parmetro para a funo. Considere o exemplo: MsgBox Len(Este um exemplo de uso da funo Len !!) Este exemplo de uso da funo, retorna 41, conforme indicado na Figura a seguir:

importante observar que os espaos em branco tambm contam para o tamanho da string. Fun o LCase Esta funo converte para minsculas, a String que foi passada como parmetro para a funo. Considere o exemplo: MsgBox Lcase(ESTE UM EXEMPLO DE USO DA FUNO LCASE!!) Este exemplo de uso da funo, converte o parmetro passado, para letras minsculas, conforme indicado na Figura a seguir:

Fun o UCase Esta funo converte para MAI SCULAS, a String que foi passada como parmetro para a funo. Considere o exemplo: MsgBox Lcase(este um exemplo do uso da funo ucase !!) Este exemplo de uso da funo, converte o parmetro passado, para letras maisculas, conforme indicado na Figura a seguir: Fun o Left Esta funo retorna um nmero especificado de caracteres, a partir do incio (Left Esquerda) de uma String. importante salientar que espaos em branco tambm devem ser considerados.

O formato geral da funo o seguinte: Left(String, n) onde n o nmero de caracteres a retornar. Considere o exemplo: MsgBox Left(Jlio Cesar Fabris Battisti,5) Este exemplo de uso da funo, retorna as cinco primeiras letras da String passada, neste caso, retornar Jlio. Vamos alterar um pouco o nosso exemplo: MsgBox Left(Jlio Cesar Fabris Battisti,7) Ir retornar: Jlio C Observe que o espao em branco tambm considerado. Fun o Right Esta funo retorna um nmero especificado de caracteres, a partir do final (Right Direita) de uma String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Right(String, n) onde n o nmero de caracteres a retornar. Considere o exemplo: MsgBox Right(Jlio Cesar Fabris Battisti,6) Este exemplo de uso da funo, retorna as seis ultimas letras da String passada, neste caso, retornar ttisti. Vamos alterar um pouco o nosso exemplo: MsgBox Right(Jlio Cesar Fabris Battisti,10) Ir retornar: s Battisti Observe que o espao em branco tambm considerado. Fun o Mid Esta funo retorna um nmero especificado de caracteres, a partir de uma posio especificada, dentro da String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Mid(String, posicao_inicio, n)

onde: posicao_inicio a posio a partir da qual devem ser retornados caracteres n o nmero de caracteres a retornar. Considere alguns exemplos: Mid(Jlio Cesar Fabris Battisti,7,5) Este exemplo de uso da funo, retorna, a partir da posio 7, 5 caracteres, neste caso, retornar Cesar. Mid(SANTA MARIA,3,7) , ir retornar NTA MAR. Observe que o espao em branco tambm considerado. Um detalhe interessante, que podemos utilizar o valor retornado por uma funo, como parmetro para outra funo. Considere o seguinte exemplo: LCase(Mid(SANTA MARIA,3,7)) Este exemplo retorna nta mar . A funo Mid retira os caracteres NTA MAR, os quais so passados como parmetros para a funo LCase, a qual converte os caracteres para minsculos. Fun o String Esta funo retorna um determinado caractere, um nmero especificado de vezes. O formato geral da funo o seguinte: String(n, Caracter) onde n o nmero de vezes que Caractere deve ser repitido. Considere o exemplo: MsgBox String(35,*) A Figura a seguir mostra o resultado deste comando:

VBA Funes de Data/Hora e Matemticas


Funes para tratamento de Data e Hora

Veremos as principais funes para tratamento de Data e Hora. Fun o Date Retorna a data corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo: MsgBox Data do Sistema: & Date() O resultado deste comando, est indicado na Figura a seguir:

Fun o Time Retorna a hora corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo: MsgBox Hora do Sistema: & Time( ) O resultado deste comando, est indicado na Figura a seguir:

Fun o Day Recebe como parmetro uma data, e retorna um nmero entre 1 e 31, indicando o dia do ms. O formato geral o seguinte: Day (data) Considere o exemplo abaixo: MsgBox Dia do ms: & Day(Date( )) O resultado deste comando, est indicado na Figura a seguir: A funo Date() captura a data do sistema e passa como parmetro para a funo Day, a qual por sua vez, retorna apenas o dia do ms.

Fun o Month Recebe como parmetro uma data, e retorna um nmero entre 1 e 12, indicando o ms do ano. O formato geral o seguinte: Month(data) Considere o exemplo abaixo: MsgBox Ms do ano: & Month(Date( )) O resultado deste comando, est indicado na Figura a seguir:

A funo Date() captura a data do sistema e passa como parmetro para a funo Month, a qual por sua vez, retorna apenas o ms do ano Fun o Now Retorna a hora e a data corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo: MsgBox Data e Hora do Sistema: & Now( ) O resultado deste comando, est indicado na Figura a seguir:

Fun o MonthName Recebe como parmetro um nmero, indicativo do ms do ano (1 Janeiro, 2 Fevereiro, e assim por diante), e um segundo parmetro que pode ser Verdadeiro ou Falso. Se o segundo parmetro for verdadeiro, o nome do ms ser exibido abreviadamente. O formato geral o seguinte: MonthName(nmero_do_ms, abreviar) Considere o exemplo abaixo: MsgBox "Ms do ano: " & MonthName(Month(Date)) O resultado deste comando, est indicado na Figura a seguir:

A funo Date() captura a data do sistema e passa como parmetro para a funo Month. A funo Month retorna o nmero do ms retornado pela data. Este nmero passado como primeiro parmetro para a funo MonthName. Fun o Hour Recebe como parmetro uma hora, e retorna um nmero entre 0 e 23, indicando o hora do dia. O formato geral o seguinte: Hour(horrio) Considere o exemplo abaixo: MsgBox Hora do dia: & Hour(Time( )) O resultado deste comando, est indicado na Figura a seguir:

A funo Time() captura a hora do sistema e passa como parmetro para a funo Hour(), a qual por sua vez, retorna apenas o hora do dia. A funo DateDiff Esta funo pode ser utilizada para determinar o nmero de intervalos (em dias, trimestres, semestres, anos, etc), entre duas datas. A sintaxe desta funo o seguinte: DateDiff(intervalo, data1, data2) O parmetro intervalo uma String que diz que tipo de intervalo vamos calcular. Por exemplo, este parmetro que define se queremos calcular o nmero de dias, ou o nmero de meses entre duas datas. Na Tabela a seguir, temos os valores possveis para o parmetro intervalo. Valores para o parmetro intervalo Valor Descrio yyyy Anos q Trimestres m Meses

y Dias do ano (o mesmo que dias) d Dias w Semanas ww Semanas do ano (o mesmo que semanas) h Horas n Minutos s Segundos A ttulo de exemplo, vamos calcular o nmero de meses, desde o descobrimento do Brasil, at 31 de Dezembro de 1999. Para isso, utilizaramos o seguinte comando MsgBox Meses desde o descobrimento: & DateDiff(m,22/04/1500,31/12/1999) O resultado deste comando, pode ser conferido na Figura a seguir:

Vamos modificar um pouco o nosso exemplo, e calcular o nmero de horas desde o descobrimento. Para isto, podemos utilizar o seguinte comando: MsgBox Meses desde o descobrimento: & DateDiff(h,22/04/1500,31/12/1999) O resultado deste comando, pode ser conferido na Figura a seguir:

A funo DateAdd Esta funo pode ser utilizada para determinar uma data futura, com base em uma data fornecida, o tipo de perodo a ser acrescentado (dias, meses, anos, etc), e o nmero de perodos a serem acrescentados. A sintaxe desta funo o seguinte: DateAdd(intervalo, nmero_de_intervalos, data) O parmetro intervalo uma String que diz que tipo de intervalo vamos acrescentar. Por exemplo, este parmetro que define se queremos acrescentar um nmero especificado de dias, meses, anos, etc. Na Tabela a seguir, temos os valores possveis para o parmetro intervalo. Valores para o parmetro intervalo.

Valor Descrio yyyy Anos q Trimestres m Meses y Dias do ano (o mesmo que dias) d Dias w Semanas ww Semanas do ano h Horas n Minutos s Segundos A ttulo de exemplo, vamos calcular a data em que tivemos um perodo de 1000 meses, aps o descobrimento do Brasil. Para isso, utilizaramos o seguinte comando: MsgBox Mil meses aps o descobrimento foi em : & DateAdd(m,1000,22/04/1500) O resultado deste comando, pode ser conferido na Figura a seguir:

Vamos modificar um pouco o nosso exemplo, e calcular em que data teremos passado um milho de dias aps o descobrimento. MsgBox Um milho de dias aps o descobrimento em : & DateAdd(d,1000000,22/04/1500) O resultado deste comando, pode ser conferido na Figura a seguir:

Fun o Year Recebe como parmetro uma data, e retorna um nmero indicativo do ano. O formato geral o seguinte:

Year(data) Considere o exemplo abaixo: MsgBox Ano atual: & Year(Date( )) O resultado deste comando, est indicado na Figura a seguir:

A funo Date() captura a data do sistema e passa como parmetro para a funo Year, a qual por sua vez, retorna apenas o ano. Fun o WeekDay Recebe como parmetros uma data, e um parmetro opcional, que indica qual o primeiro dia da semana. Se este parmetro for omitido, o primeiro dia da semana ser considerado Domingo. O valor para o primeiro dia da semana numrico: 1 Domingo, 2 Segunda feira, e assim por diante. WeekDay(data, prim_dia_semana.) Considere o exemplo abaixo: MsgBox Dia da semana: & WeekDay(31/12/1999) O resultado deste comando, est indicado na Figura a seguir:

O valor 6, indica que foi uma Sexta-feira, o que confere com o calendrio. Poderamos determinar que o primeiro dia da semana a Segunda-feira (2 para o ltimo parmetro). Com isso o nosso exemplo, ficaria assim: MsgBox Dia da semana: & WeekDay(31/12/1999,2) O resultado deste comando, est indicado na Figura a seguir:

O valor 5, indica que foi uma Sexta-feira, pois agora a Segunda-feira passou a ser o dia 1, a Tera-feira o dia 2, e assim por diante. Novamente confere com o calendrio. Fun o WeekDayName Recebe como parmetro um nmero, indicativo do dia da semana, e um segundo parmetro que pode ser Verdadeiro ou Falso. Se o segundo parmetro for verdadeiro, o nome do dia da semana ser exibido abreviadamente. O formato geral o seguinte: WeekDayName(nmero_do_dia, abreviar) Considere o exemplo abaixo: MsgBox Dia da semana: & WeekDayName(6,False) O resultado deste comando, est indicado na Figura a seguir:

Funes para Clculos matemticos Veremos as principais funes para efetuar clculos matemticos. Na Tabela a seguir, temos a descrio das principais funes matemticas, disponveis no VBA. Funes para clculos matemticos. Fun o Descrio Abs(n) Retorna o valor absoluto (sem sinal), do nmero n. Atn(n) Retorna o valor do arco, cuja tangente o nmero n. O nmero n deve ser fornecido em radianos. Cos(n) Retorna o coseno do nmero n. O nmero n deve ser fornecido em radianos. Exp(n) Retorna o nmero e (logaritmo neperiano e=2,7183), elevado no nmero n. Log(n) Retorna o logaritmo natural de um nmero n. Rnd(n) Retorna um nmero aleatrio entre 0 e 1. Sgn(n) Retorna um nmero inteiro, indicando o sinal do nmero n. Retorna 1 para nmeros negativos e 1 para nmeros positivos. Sin(n) Retorna o seno do nmero n. O nmero n deve ser fornecido em radianos

Sqr(n) Retorna a Raiz quadrada do nmero n. Tan(n) Retorna a tangente do nmero n. O nmero n deve ser fornecido em radianos. NOTA: Para converter graus para radianos, multiplique o valor em graus por pi (3.14), e divida o resultado por 180. Na Tabela a seguir temos alguns exemplos de utilizao das funes matemticas do VBA. Alguns exemplos de utilizao das funes matemticas. Exemplo Valor de retorno. Abs(-2350) 2350 Atn(2) 1,1071487177 Cos(0) 1 Exp(1) 2,71828182845905 Log(1000) 6,90775527898214 Rnd*10 Gera um nmero aleatrio entre 0 e 10 Sgn(-235) Retorna 1, pois o nmero negativo Sin(0) Retorna 0 Sqr(400) Retorna 20 Tan(0) Retorna 0

Você também pode gostar