Vous êtes sur la page 1sur 58

APNDICE A Funes Incorporadas

Este apndice descreve todas as funes incorporadas ao Visual Basic, agrupadas por categoria. A Tabela A.1 lista as funes individuais por tipo. Nas sees seguintes, voc encontrar descries detalhadas de cada funo e alguns exemplos simples. Tabela A.1 Funes por tipo. Tipo Entrada/Sada Funo InputBox() MsgBox() Funes de arquivo FileAttr() GetAttr() FileDateTime() FileLen() FreeFile() Tipo de Varivel Array() LBound() UBound() IsArray() IsDate() IsEmpty() IsNull() IsNumeric() IsObject() TypeName() * VarType() Converso de Tipo de Varivel CBool() CByte() CCur() CDate() CDec()

CDbl() CInt() CLng() CSng() CStr() Cvar() CVError() Manipulao de strings Asc() Chr() Format$() InStr() InStr() InStrB() Lcase() Left() Len() LTrim() Mid() Right() Space() Str() StrComp() StrConv() String() StrReverse Ucase() Formatao de Dados Format() FormatCurrency() FormatDateTime() FormatNumber()

FormatPercent() Matemticas Abs() Atn() Cos() Exp() Int() Fix() Log() Oct() Hex() Rnd() Round() Sgn() Sin() Sqr() Tan() Val() Data e Hora Timer() Date() Time() Now() Day() Weekday() Month() Year() Hour() Minute() Second() DateSerial() DateValue() TimeSerial()
3

TimeValue() DateAdd()* DateDiff()* DatePart()* Financeiras IPmt() PPmt() Pmt() FV() PV() NPV() NPer() Rate() IRR() MIRR() DDB() SYD() SLN() Cor QBColor() RGB() Registro SaveSettings() GetSettings() GetAllSettings() Diversas Choose() Environ() IIF() Switch() Shell()

Estas funes so descritas e exemplificadas nas sees a seguir. Elas no esto listadas alfabeticamente dentro de cada categoria. Comeo pelas mais simples e depois apresento exemplos que combinam mais que uma funo.
4

Funes de Entrada/Sada O Visual Basic oferece duas funes bsicas para exibir (ou solicitar) informaes do usurio: MsgBox() e InputBox(). Aplicativos do Windows devem se comunicar com o usurio por meio de formulrios melhor projetados, mas as funes MsgBox() e InputBox() ainda so usadas e so muito teis. InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile], [,context]) A funo InputBox() mostra uma caixa de dilogo com um prompt e um controle TextBox, e espera que o usurio digite algum texto e acione o boto OK ou Cancel. Os argumentos da funo InputBox() so apresentados na Tabela A.2. Tabela A.2 Os argumentos da funo InputBox(). Argumento prompt O Que Descrio

O prompt que aparece na caixa de Se necessrio, o prompt dividido dilogo em vrias linhas automaticamente. Para controlar as quebras de linha dentro do seu cdigo, use um caractere de retorno de carro

(Chr(13) ou de alimentao de linha feed (Chr(10)). title O ttulo da caixa de dilogo Se voc omitir este argumento, o nome do aplicativo aparecer como ttulo. default A entrada padro (se houver) Se voc antecipar a resposta do usurio, use este argumento para exibi-la quando a caixa de dilogo for aberta inicialmente. xpos, ypos As coordenadas do canto superior Expressas em twips. esquerdo da caixa de dilogo helpfile O nome do arquivo de ajuda Oferece ajuda sensvel ao contexto para a caixa de dilogo. context O nmero dentro do arquivo de Atribudo ao tpico especfico. ajuda

O formato mais simples da funo InputBox() o seguinte: INSS = InputBox("Favor digitar o nmero de sua inscrio no INSS") A string que o usurio informa na caixa de dilogo atribuda varivel INSS. O valor retornado sempre uma string, mesmo que o usurio digite informaes numricas. Ao solicitar a entrada com a funo InputBox(), verifique sempre o valor retornado pela funo. No mnimo, verifique se h uma string em branco. Use a funo IsNumeric() caso espere que o usurio ir informar um nmero; use a funo IsDate() se voc espera que o usurio ir digitar uma data, e assim por diante. Nasc = InputBox("Favor digitar sua data de nascimento") If IsDate(Nasc) Then MsgBox "Preparando o seu horscopo" Else MsgBox "Favor tentar novamente. Informe uma data de nascimento vlida" End If MsgBox(prompt[,buttons][,title][,helpfile],[context]) A funo MsgBox mostra uma caixa de dilogo com uma mensagem e espera que o usurio a feche dando um clique em um boto. A mensagem o primeiro argumento (prompt). A forma mais simples da funo MsgBox() a seguinte: MsgBox "A memria de seu computador est se esgotando!" Esta funo apresenta uma mensagem em uma caixa de dilogo que possui um boto OK. A funo MsgBox() pode exibir outros botes e/ou um cone na caixa de dilogo e retornar um valor numrico, dependendo de qual boto foi acionado. A Tabela A.3 resume os valores do argumento buttons. Tabela A.3 Os valores para o argumento buttons. Constante Valor Valores de botes vbOKOnly vbOKCancel vbAbortRetryIgnore vbYesNoCancel 0 1 2 3 Mostra apenas o boto OK. Mostra os botes OK e Cancelar. Mostra os botes Anular, Repetir e Ignorar. Mostra os botes Sim, No e Cancelar.
6

Descrio

vbYesNo vbRetryCancel

4 5 Valores de cones

Mostra os botes Sim e No. Mostra os botes Repetir e Cancelar.

vbCritical vbQuestion vbExclamation vbInformation

16 32 48 64 Botes Padro

Mostra o cone de mensagem crtica. Mostra o cone de advertncia. Mostra o cone de advertncia de pergunta. Mostra o cone de informao.

VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4

0 256 512 768 Modalidade

O primeiro boto o padro. O segundo boto o padro. O terceiro boto o padro. O quarto boto o padro.

VbApplicationModal

Modal com respeito ao aplicativo; o usurio deve responder caixa de mensagem antes de passar para qualquer outro formulrio do aplicativo atual.

VbSystemModal

4096

Modal com respeito ao sistema; todos os aplicativos so suspensos at que o usurio responda caixa de mensagem.

Os valores de boto determinam quais botes aparecem na caixa de dilogo. Observe que voc no pode exibir botes individuais; s pode escolher grupos de botes. Os valores de cone determinam os cones opcionais que voc pode exibir na caixa de dilogo. Estes so os cones comuns usados pela interface com o usurio do Windows para notificar o usurio sobre um evento incomum ou excepcional. Os valores de boto padro determinam qual boto o padro; pressionar Enter ativa este boto. Os valores 0 e 4096 determinam se a caixa de mensagem modal. Para combinar essas opes em um nico valor, basta somar seus valores individuais.

Finalmente, a funo MsgBox() retorna um inteiro, que indica o boto pressionado, conforme a Tabela A.4. Tabela A.4 Os valores dos botes. Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valor 1 2 3 4 5 6 7 Descrio OK Cancelar Anular Repetir Ignorar Sim No

Para exibir uma caixa de dilogo com os botes OK e Cancelar e o cone de mensagem de advertncia, some os valores 1 e 48, da seguinte forma: cont = MsgBox("Esta operao pode levar vrios minutos", 48+1); O programa continuar com a operao se o valor de cont for 1 (boto OK) ou ento sair do programa. Para exibir uma caixa de dilogo com os botes Sim e No e o cone de mensagem crtica, some os valores 4 e 16, da seguinte forma: cont = MsgBox("Dados incompletos. Gostaria de tentar novamente?", 4+16); If cont = 6 Then Else End If O argumento title o ttulo apresentado na barra de ttulo da caixa de mensagem. Veja na descrio da funo InputBox() uma explicao sobre os argumentos helpfile e context. Funes de E/S de Arquivo As seguintes funes do Visual Basic manipulam arquivos (criam um novo arquivo, abrem um arquivo existente, lem e gravam em um arquivo, examinam suas propriedades etc.). FileAttr(filenumber, returntype)
8

// O usurio clicou em Sim

{apresenta prompt novamente} // O usurio clicou em No {sai do procedimento}

A funo FileAttr() retorna um inteiro longo representando o modo dos arquivos abertos usando a instruo Open. O argumento filenumber o nmero do arquivo, e returntype deve ser 1. O valor retornado um dos apresentados na Tabela A.5. Tabela A.5 Os valores retornados pela funo FileAttr(). Valor 1 2 4 8 32 Modo Entrada Sada Acesso aleatrio Acrscimo ("append") Binrio

GetAttr(filename) Esta funo retorna um inteiro representando os atributos de um arquivo, um diretrio ou uma pasta, de acordo com a Tabela A.6. Tabela A.6 Os valores retornados pela funo GetAttr(). Constante vbNormal vbReadOnly vbHidden vbSystem vbDirectory vbArchive Valor 0 1 2 4 16 32 Descrio Normal Somente leitura Oculto De sistema Diretrio ou pasta O arquivo foi alterado desde o ltimo backup

Para determinar quais atributos so configurados, use o operador AND para realizar uma comparao bit a bit entre o valor retornado pela funo GetAttr() e o valor de um ou mais atributos. Se o resultado for diferente de zero, esse atributo ser configurado com o arquivo especificado. Por exemplo, para descobrir se um arquivo somente para leitura, use uma instruo como esta: Result GetAttr(nomeArq) And vbReadOnly Se o arquivo nomeArq tiver seu atributo de leitura marcado, o resultado ser um arquivo somente para leitura.

FileDateTime(filename) Esta funo informa a data e a hora em que um arquivo foi criado ou modificado pela ltima vez. A instruo a seguir: Print FileDateTime("meuDocumento.txt") retorna um valor de data/hora como 16/03/99 16:15:26. FileLen(filename) A funo FileLen() informa um valor inteiro longo indicando o tamanho do arquivo. O arquivo cujo tamanho voc deseja descobrir passado como um argumento para a funo. A instruo a seguir: MsgBox FileLen(".\docs\meuDocumento.txt") apresenta, em uma caixa de mensagem, o tamanho do arquivo especificado. FreeFile() Cada arquivo aberto com o Visual Basic deve ter um nmero (handle) exclusivo que atribudo ao arquivo no momento em que ele aberto, sendo usado para se referir ao arquivo em operaes futuras. O handle liberado (ou seja, ele se torna disponvel para ser usado por outro arquivo) quando o arquivo fechado. FreeFile() retorna um inteiro representando o prximo nmero de arquivo disponvel para uso pela instruo Open. A colocao de um nmero de arquivo dentro do cdigo uma prtica de programao no recomendada. Voc deve geralmente chamar a funo FreeFile() para descobrir o prximo nmero de arquivo disponvel e depois abrir o arquivo usando o valor retornado pela funo, da seguinte forma: numArq = FreeFile Open "meuDocumento.txt" For Output As #numArq O valor real do nmero do arquivo no importa, desde que voc use a varivel numArq para se referir ao arquivo meuDocumento.txt. Funes de Tipo de Varivel As funes a seguir determinam o tipo das variveis. Algumas delas permitem determinar o tipo exato de uma varivel de dentro do cdigo, e uma srie de funes determina o tipo geral de uma varivel (como as variveis numricas, variveis de data etc.). Alm disso, existem trs funes que lhe permitem preencher elementos de array e verificar rapidamente os limites de arrays. VarType(variable)
10

A funo VarType() retorna um valor indicando o subtipo de uma varivel, de acordo com a Tabela A.7. Tabela A.7 Os valores retornados pela funo VarType(). Constante vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString vbObject vbError vbBoolean vbVariant vbDataObject vbDecimal vbByte vbArray Valor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 8192 Descrio Vazio (no-inicializado) Nulo (nenhum dado vlido) Inteiro Inteiro longo Nmero de ponto flutuante de preciso simples Nmero de ponto flutuante de preciso dupla Valor monetrio Valor de data String Objeto Valor de erro Valor booleano Variante (usado apenas com arrays de variantes) Um objeto de acesso a dados Valor decimal Valor de byte Array

A funo VarType() no informa o tipo dos elementos de um array diretamente. Em vez disso, o valor do tipo de elemento somado a 8192. Se voc passar um array de strings funo VarType(), o valor retornado ser 8200 (ou seja, 8192 + 8). Array(argumentList) Esta funo retorna um variante contendo um array cujos elementos recebem valores de argumentList. O argumento argumentList uma lista delimitada por vrgulas com valores atribudos a elementos consecutivos do array. A omisso da argumentList cria um array sem elementos. Para us-lo, voc deve redimension-lo com o comando ReDim. As instrues a seguir criam um array com os nomes dos dias da semana: Dim DiasSemana
11

DiasSemana = Array("Segunda", "Tera", "Quarta", "Quinta", _ "Sexta, "Sbado", "Domingo") PrimeiroDia = DiasSemana(0) SegundoDia = DiasSemana(1) ' Segunda ' Tera

O limite inferior de um array criado com a funo Array sempre 0. Observe que a funo Array no dimensiona o array. Ela s atribui valores aos seus elementos. LBound(arrayname[,dimension]) Esta funo informa o menor ndice da dimenso indicada de um array. O argumento arrayname o nome do array e dimension um inteiro indicando a dimenso cujo limite inferior ser retornado. Se o dimension for omitido, a primeira dimenso ser considerada. A funo LBound() usada com a funo UBound(), que informa o maior ndice de uma dimenso de um determinado array, para determinar-lhe o tamanho. UBound(Arrayname [,dimension]) Esta funo retorna o maior ndice da dimenso indicada de um array. O argumento Arrayname o nome do array e dimension um inteiro indicando a dimenso cujo limite superior ser retornado. Se o dimension for omitido, a primeira dimenso ser considerada. Para analisar todos os elementos de um array unidimensional, use as funes LBound() e UBound(). As instrues a seguir convertem os elementos do array de strings String() em maisculas: Inf = LBound(Strings) Sup = UBound(Strings) For i = Inf to Sup String(i) = Ucase(Strings(i)) Next IsArray(variable) Esta funo informar True se o seu argumento for um array. Se a varivel Nomes tiver sido definida como: Dim Nomes(100) a funo: IsArray(Nomes) retornar True. IsDate(expression)

12

Esta funo retornar True se expression for uma data vlida. Use a funo IsDate() para validar dados do usurio. As datas podem ser especificadas em vrios formatos e sua validao sem a ajuda da funo IsDate() seria por si s uma tarefa rdua. Nasc = InputBox("Favor informar sua data de nascimento") If IsDate(Nasc) Then MsgBox "Data aceita" End If IsEmpty(variable) Esta funo informar True se a variable estiver vazia. Uma varivel vazia ainda no foi inicializada ou explicitamente configurada como Empty. Aps a execuo das instrues: varNum = 0 varStr = "" as variveis varNum e varStr no ficam vazias, pois foram inicializadas. Se uma varivel foi declarada com uma instruo Dim, mas no inicializada ou usada de outra forma pelo seu programa, ela est vazia. Esta varivel tem de ser inicializada antes de ser usada; voc poder descobrir seu status com a funo IsEmpty(). IsNull(expression) Esta funo retornar True se expression for Null. Um valor Null um valor invlido e diferente de um valor Empty. Variveis normais no podem ser Null, a menos que voc lhes atribua o valor Null. Variveis objeto podem ser Null. IsNumeric(expression) Esta funo retornar True se expression for um nmero vlido. Use esta funo para verificar a validade das strings contendo dados numricos da seguinte forma: idade = InputBox("Favor digitar sua idade") If Not IsNumeric(idade) Then MsgBox("Tente novamente, dessa vez com um nmero vlido") End If

13

IsObject(expression) Esta funo retorna um valor booleano (True/False) indicando se expression representa uma varivel objeto. Para descobrir o tipo do objeto, use as funes TypeName() ou VarType(), que so descritas a seguir. TypeName(Varname) Esta funo informa uma string que identifica o tipo da varivel. Ela semelhante funo VarType(), mas em vez de retornar um inteiro, retorna o nome do tipo da varivel. A varivel cujo tipo voc est examinando com a funo TypeName pode ter sido declarada implicitamente ou explicitamente. Suponha que voc declare as seguintes variveis: Dim nome As String Dim a As instrues a seguir produzem os resultados mostrados (voc pode emitir as instrues na janela Immediate e observar os valores que elas retornam na mesma janela): Print TypeName(nome) String Print TypeName(a) Empty a = "Sou uma string" Print TypeName(a) String a = #11/5/97# Print TypeName(a) Date Print TypeName(b) Empty Observe que a varivel b, que no foi declarada, Empty, mas no Null. Funes de Converso de Tipo de Varivel Estas funes convertem seu argumento numrico para o tipo correspondente. Com a introduo do tipo de dados variante, essas funes no tm muita aplicao. Voc pode us-las para documentar seu cdigo e mostrar que o resultado de uma operao deve ser de um determinado tipo, mas lembre-se de que todos os operandos em uma operao aritmtica so primeiro convertidos para nmeros de preciso dupla, para gerar a maior

14

preciso possvel. A Tabela A.8 lista as funes de converso de tipo de varivel e explica o que elas fazem. Tabela A.8 As funes de converso de tipo de varivel. Funo CBool(expression) O Que Ela Faz Converte seu argumento para o tipo Boolean (True/False), avaliar como True se a expresso final for qualquer valor diferente de zero. CByte(expression) CCur(expression) CDate(expression) CDec(expression) CDbl(expression) CInt(expression) CLng(expression) CSng(expression) CStr(expression) CVar(expression) Converte o seu argumento para o tipo Byte. Converte o seu argumento para o tipo Currency. Converte o seu argumento para o tipo Date. Converte o seu argumento para o tipo Decimal. Converte o seu argumento para o tipo Double. Converte o seu argumento para o tipo Integer. Converte o seu argumento para o tipo Long. Converte o seu argumento para o tipo Single. Converte o seu argumento para o tipo String. Converte o seu argumento para o tipo variant. As expresses numricas so convertidas para preciso dupla e as expresses alfanumricas so convertidas em strings.

CVErr() Esta funo aceita um valor numrico como argumento sendo este valor numrico o nmero de um erro e retorna um variante do tipo Error contendo o nmero de erro especificado de uma funo que poder retornar um resultado (caso no ocorra nenhum erro) ou ento ele pode ser um objeto erro se algo de errado acontecer durante sua execuo. O Captulo 3 contm mais informaes sobre o uso desta funo, bem como alguns exemplos. Funes de Manipulao de Strings O VBScript suporta todas as funes de manipulao de strings do Visual Basic. Um aplicativo tpico gasta grande parte de seu tempo de execuo manipulando strings (testes de validade, anlise do contedo) e o Visual Basic oferece diversas funes para essa finalidade.

15

Asc(string), AscB(string), AscW(string) A funo Asc() retorna o cdigo do caractere correspondente ao 1 caractere do argumento string, e funciona em todos os sistemas, independentemente de aceitarem ou no caracteres Unicode. A funo AscB() semelhante, mas em vez de retornar o cdigo para o primeiro caractere, ela informa o primeiro byte. A funo AscW() informa o cdigo de caractere Unicode, exceto em plataformas que no aceitam Unicode, quando o comportamento idntico ao da funo Asc(). Chr(number), ChrB(number), ChrW(number) A funo Chr() o inverso da funo Asc(), e informa o caractere associado ao cdigo de caractere especificado. Use esta funo para imprimir caracteres que no aparecem no teclado (como quebras de linha ou smbolos especiais). A funo ChrB() usada com dados de byte contidos em uma string. Em vez de retornar um caractere, que pode ter um ou dois bytes, ChrB() sempre retorna um nico byte. A funo ChrW() retorna uma string contendo o caractere Unicode, exceto em plataformas que no aceitam o Unicode, quando o comportamento idntico ao da funo Chr(). LCase(string), UCase(string) A funo LCase() aceita uma string como argumento e a converte para minsculas; a funo UCase() aceita uma string como argumento e a converte para maisculas. Aps as instrues a seguir serem executadas: Ttulo = "Dominando o Visual Basic" TtMinsc = LCase(Ttulo) TtMaisc = UCase(Ttulo) a varivel TtMinsc conter a string dominando o visual basic e a varivel TtMaisc conter a string DOMINANDO O VISUAL BASIC. Uma funo til, e que falta no VBScript, aquela que converte uma string para maisculas iniciais. Em outras palavras, uma funo que converte todos os caracteres na string para minsculas e depois converte o primeiro caractere de cada palavra para maisculas. Agora que voc j viu algumas das funes de manipulao de strings, poder escrever uma funo LowerCaps() da seguinte forma: Function LowerCaps(str As String) As String
16

posio = InStr(str, " ") ' Localiza o primeiro espao While posio ' enquanto houver espaos na string novaPalavra = Left$(str, posio) ' extrai a palavra ' e converte seu primeiro caractere para maiscula novaStr = novaStr & UCase$(Left$(novaPalavra, remove a 1)) & da Mid$(novaPalavra, 2) str = Right$(str, Len(str) posio) ' string posio = InStr(str, " ") Wend novaPalavra = str ' converte a ltima palavra na string novaStr = novaStr & UCase$(Left$(novaPalavra, 1)) _ & Mid$(novaPalavra, 2) LowerCaps = novaStr End Function A funo LowerCaps() usa a funo InStr() para localizar ocorrncias sucessivas do caractere de espao em branco na string. Depois, ela isola as palavras entre os espaos, muda seu primeiro caractere para maiscula e o restante da palavra para minsculas, depois os anexa string novaStr. Quando a funo termina, seu valor a string original formatada com maisculas iniciais. Se voc chamar a funo LowerCaps() com o seguinte argumento: Empresa = "ABC industrial ltda. " novaString = LowerCaps(Empresa) o valor da varivel novaString ser: "ABC Industrial Ltda." InStr([Start],[String1],[String2],[Compare]) A funo InStr() informa a posio de String2 dentro de String1. O primeiro argumento, que opcional, determina onde em String1 a consulta iniciada. Se o argumento Start for omitido, a consulta comear no primeiro caractere de String1. Se voc executar as seguintes instrues: str1 = "The quick brown fox jumped over the lazy dog" str2 = "the" Pos = Instr(str1, str2)
17

palavra

' retorna a string em LowerCaps

a varivel Pos ter o valor 33. Se voc procurar pela string he configurando: str2 = "he" o valor da varivel Pos ser 2. Se a consulta comear no terceiro caractere da string, a primeira ocorrncia de he aps o terceiro caractere ser localizada: Pos = Instr(3, str1, str2) Dessa vez, Pos ser 34. Como padro, a consulta diferencia maisculas de minsculas. Para localizar the, The ou THE na string, especifique o ltimo argumento opcional cujo valor padro 0 (para diferenciar maisculas de minsculas) e 1 (para no fazer a diferenciao). A instruo a seguir localiza a primeira ocorrncia de the na string, independentemente do tipo de letra: str1 = "The quick brown fox jumped over the lazy dog" str2 = "the" Pos = Instr(1, str1, str2, 1) O valor de Pos ser 1. Se voc configurar o argumento em 0, a varivel Pos se tornar 33. Observe que se voc quiser usar o ltimo argumento opcional da funo InStr(), tambm dever especificar o primeiro argumento. A funo InStrB() usada com dados de byte contidos em uma string. Em vez de retornar a posio do caractere da primeira ocorrncia de uma string dentro de outra, InStrB() informar a posio do byte. InStrRev(String1, String2, [Start],[Compare]) Esta funo retorna a posio de uma string dentro de outra (da mesma forma que a funo InStr()), porm ela inicia no final da string. O argumento String1 a string que est sendo pesquisada e o argumento String2 a string que est sendo procurada dentro da primeira. Os outros dois argumentos so opcionais. O argumento Start a posio inicial para a pesquisa. Se este argumento for omitido, a pesquisa comear no ltimo caractere. O argumento Compare indica o tipo de comparao a ser usada na localizao das sub-strings e seus valores so explicados na funo Filter. Se compare for omitido, ser feita uma comparao binria. StrComp(string1, string2, [Compare]) Esta funo compara duas strings e informa um valor indicando o resultado de acordo com a Tabela A.9.
18

Tabela A.9 Os valores que a funo StrComp() retorna. Valor -1 0 1 Null Descrio String1 menor do que string2 String1 igual a string2 String1 maior do que string2 String1 e/ou string2 Null

O ltimo argumento da funo StrComp() determina se a comparao diferenciar maisculas de minsculas. Se o valor for 0 (ou se for omitido), a comparao diferenciar maisculas de minsculas. Se for 1, a comparao no diferenciar os dois tipos de letra. A funo a seguir: StrComp("Makron", "MAKRON") retorna 1 (Makron maior do que MAKRON, pois a letra minscula a vem aps a letra maiscula A na seqncia de caracteres ASCII). A funo a seguir retorna 0. StrComp("Makron", "MAKRON", 1) Left(string, number), LeftB(string, number) Esta funo retorna um nmero de caracteres do incio de uma string. Ela aceita dois argumentos: a string e o nmero de caracteres a ser extrado. Se a string date1 comear com o nome do ms, a funo Left() a seguir poder extrair a abreviatura do ms a partir da string, da seguinte forma: data1 = "Dezembro de 1999" msAbreviado = Left(date1, 3) O valor da varivel msAbreviado Dez. Use a funo LeftB() com dados de byte contidos em uma string. Em vez de especificar o nmero de caracteres, os argumentos especificam os nmeros de bytes. Right(string, number), RightB(string, number) A funo Right semelhante funo Left, exceto por informar uma certa quantidade de caracteres a partir do final da string. A instruo a seguir: Ano = Right(data1, 4) atribui o ano atual varivel Ano.

19

Use a funo RightB() com dados de byte contidos em uma string. Em vez de especificar o nmero de caracteres, os argumentos especificam os nmeros de bytes. Mid(string, start, [length]), MidB(string, start, [length]) A funo Mid() retorna parte de uma string com length caracteres, comeando na posio start. A funo a seguir: Mid("9 de Fevereiro de 1957"), 6, 9) extrai o nome do ms a partir da string especificada. Se voc omitir o argumento length, a funo Mid() retornar todos os caracteres da posio inicial at o final da string. Se o tamanho especificado exceder o nmero de caracteres na string aps a posio inicial, ser retornada a string restante a partir da posio inicial. Use a funo MidB() com dados de byte contidos em uma string. Em vez de especificar o nmero de caracteres, os argumentos especificam o nmero de bytes. Len(string), LenB(string) A funo Len() informa o tamanho de uma string. Aps a execuo destas instrues: Nome = InputBox("Digite seu primeiro nome") Tamanho = Len(Nome) a varivel Tamanho ter o tamanho da string inserida pelo usurio na caixa de entrada. A funo Len() constantemente usada como primeiro teste para uma entrada invlida, como nas linhas a seguir: If Len(Nome) = 0 Then MsgBox "O campo NOME no pode ser vazio" Else MsgBox "Obrigado por registrar-se conosco" End If Use a funo LenB() com dados de byte contidos em uma string. Em vez de retornar o nmero de caracteres em uma string, LenB() retorna o nmero de bytes usados para representar essa string. LTrim(string), RTrim(string), Trim(string) Estas funes removem os espaos no incio, no final ou tanto no incio quanto no final de uma string. Elas so constantemente usadas na validao de entradas do usurio, como a seguir:
20

If EMail <> "" Then MsgBox "Um endereo de correio eletrnico obrigatrio" End If O trecho, no entanto, no apanhar a string que s possui espaos. Para detectar strings vazias, use a funo Trim() em seu lugar: If Trim(EMail) = "" Then MsgBox "Entrada invlida!" End If Space(number) Esta funo retorna uma string contendo a quantidade de espaos especificada no argumento. O argumento number a quantidade de espaos que voc deseja na string. Esta funo til para formatar a sada e limpar dados em strings de tamanho fixo. String(number, character) Esta funo retorna uma string de number caracteres, todos eles sendo character. A funo: String(12, "*") retorna a string ************. Use a funo String() para criar padres longos de smbolos especiais. StrConv(string, com version) Esta funo retorna uma varivel string convertida conforme especificado pelo argumento conversion, cujos valores aparecem na Tabela A.10. Tabela A.10 Constante vbUpperCase vbLowerCase vbProperCase Os valores retornados pela funo StrConv(). Valor 1 2 3 Descrio Converte a string para caracteres maisculos. Converte a string para caracteres minsculos. Converte a primeira letra de cada palavra da string para maisculas. vbWide* 4* Converte caracteres de byte simples da string em caracteres de byte duplo. vbNarrow* 8* Converte caracteres de byte duplo da string em caracteres de (byte simples). vbKatakana* 16* Converte caracteres Hiragana da string para caracteres Katakana.
21

vbHiragana*

32*

Converte

caracteres

Katakana

da

string

para

caracteres Hiragana. vbUnicode 64 Converte a string para Unicode usando a pgina de cdigo padro do sistema. vbFromUnicode 128 Converte a string de Unicode para a pgina de cdigo padro do sistema.
* Aplica-se a verses locais para o Extremo Oriente.

Para realizar vrias converses, some os valores correspondentes. Para converter uma string para minsculas e para o formato Unicode, use uma instruo como esta: novaStr = StrConv(txt, vbLowercase + vbUnicode) StrReverse(expression) Esta funo inverte a ordem dos caracteres de seu argumento. Sua sintaxe a seguinte: StrReverse(expression) O argumento expression a string cujos caracteres sero invertidos. Filter(InputStrings, Value, Include, Compare) Esta funo retorna um array de base zero contendo parte de um array de strings, tendo como base critrios de filtragem especificados. O argumento InputStrings um array unidimensional das strings a serem pesquisadas e o argumento Value a string a ser procurada. Os dois ltimos argumentos so opcionais e podem indicar se a funo deve conter substrings que incluam ou no o valor especificado. Se for True, a funo Filter() retornar o subconjunto do array que contm o Value na forma de uma substring. Se for False, a funo Filter() retornar o subconjunto do array que no contm Value como substring. O argumento Compare indica o tipo de comparao de string a ser usada e ele pode assumir um dos valores apresentados na Tabela A.11. Tabela A.11 Os valores do argumento Compare. O Que Ele Faz Efetua uma comparao binria (diferenciando letras maisculas de minsculas). vbTextCompare Efetua uma comparao binria (no fazendo a diferenciao entre letras maisculas e minsculas). vbDatabaseCompare Efetua uma comparao binria tomando como base as

Valor de Compare vbBinaryCompare

22

informaes contidas no banco de dados no qual a comparao efetuada.

O array retornado pela funo Filter() contm apenas os elementos suficientes para conter o nmero de itens que satisfazem a comparao. Para usar a funo Filter(), voc deve declarar um array sem especificar o nmero de elementos. Digamos que voc tenha que declarar o array Nomes como indicado a seguir: Dim Nomes Nomes = Array ("Arnaldo", "Joo", "Ronaldo", "Jos") Podemos descobrir se o nome armazenado na varivel meuNome encontra-se no array Nomes chamando a funo Filter() como segue: b = Filter(a, meuNome) Se o nome armazenado na varivel meuNome no fizer parte do array Nomes, b ser um array sem nenhum elemento. A funo: UBbound(b) retornar -1. Se o nome armazenado na varivel meuNome for Arnaldo, o limite superior do array ser 0 e o elemento b(0) ser Arnaldo. Se a varivel meuNome for Joo, o limite superior do array Nomes ser 1 e os elementos b(0) e b(1) tero o valor Joo. Tambm podemos criar um array que contm todos os elementos do original, exceto em relao a um determinado valor. O array criado com a instruo: b = Filter(a, "Ronaldo", False) ter quatro elementos que so todos os elementos do array Nomes exceto Ronaldo. Replace(expression, find, replace,[start],[count],[compare] Esta funo retorna uma string na qual uma substring especificada foi substituda por uma outra substring um determinado nmero de vezes. O argumento expression uma string contendo a string a ser substituda sobre a qual a funo Replace atua. O argumento find a substring a ser substituda e replace a string de substituio. Os argumentos restantes so opcionais. O argumento start a posio do caractere onde a pesquisa comea. Se ele for omitido, a pesquisa comear pelo primeiro caractere. O argumento count o nmero de substituies a serem executadas.

23

Se for omitido, todas as substituies possveis sero feitas. Finalmente, o argumento compare especifica o tipo de comparao a ser efetuada. os valores do argumento compare so descritos na funo Filter. Join(SourceArray[,Delimiter]) Esta funo retorna uma string criada pela juno de uma srie de substrings contidas em um array. O argumento SourceArray um array unidimensional contendo substrings a serem unidas e o argumento delimiter um caractere usado para separar as substrings da string retornada. Se este for omitido, o caractere de espao ( ) ser usado. Se o delimiter for uma string de comprimento nulo, todos os itens da lista sero concatenados sem nenhum delimitador. Split(expression,[delimiter],[limit],[compare]) Esta funo o oposto da funo Join(0. Ela retorna um array unidimensional de base zero contendo um nmero especificado de substrings. O argumento expression uma string que contm a string original que ser subdividida em substrings e o argumento opcional delimiter um caractere usado para delimitar as substrings. Se o delimiter for omitido, ser assumido o caractere de espao ( ) como delimitador. Se o delimiter for uma string de comprimento zero, ser retornado um array de um nico elemento contendo toda a expresso. O argumento limit tambm opcional e ele determina o nmero de substrings a serem retornadas. Se ele for -1, todas as substrings sero retornadas. O ltimo argumento, compare, tambm opcional e indica o tipo de comparao a ser usada ao avaliar substrings. Seus valores vlidos so descritos na funo Filter(). Digamos que voc tenha declarado uma varivel string com o seguinte nome de caminho: path = "c:\win\desktop\ActiveX\Exemplos\VBSCRIPT" A funo Split() pode extrair os componentes do caminho e atribu-los ao array Parts por meio da seguinte instruo: Parts = Split("c:\win\desktop\ActiveX\Exemplos\VBSCRIPT", "\") Para exibir as partes do caminho, configure um lao como o seguinte: For i = 0 To ubound(Parts) MsgBox parts(i) Next Funes de Formatao

24

At o Visual Basic 5, havia apenas uma funo para formatao de nmeros e de datas, a funo Format(). O Visual Basic 6 possui uma srie de novas funes de formatao especficas ao tipo de dados aos quais eles se aplicam (nmeros, valores monetrios e datas). Format(expresso[,formato[,primeiroDiaSemana[,primeiraSemanaAno]]]) Esta funo retorna uma string contendo uma expresso formatada de acordo com as instrues contidas em uma expresso de formato. A varivel expression o nmero, string ou data a serem convertidos e format uma string que informa ao Visual Basic como formatar o valor. A string hh:mm.ss, por exemplo, apresenta a expresso como um formato de hora. A funo Format() usada para preparar nmeros, datas e strings para exibio. Se voc tentar imprimir a seguinte expresso: Print atn(1)*4 ser apresentado o nmero 3,14159265358979. Se esse valor tiver que aparecer em um controle de texto, provavelmente ele no caber no espao disponvel. Voc pode controlar o nmero de dgitos decimais a serem apresentados com a seguinte chamada funo Format(): Print Format(atn(1)*4, "##.####") Esta instruo imprime o resultado 3,1416. Se voc estiver realizando clculos financeiros e o resultado tiver que ser 13.454,332345201, ele ser impresso melhor como $13.454,33, com uma instruo como esta: valor = 13454.332345201 Print Format(valor, "$###,###.##") Estas instrues imprimem o valor $13,454.33, que um valor monetrio apropriado. O argumento firstdayofweek determina qual o primeiro dia da semana e pode assumir um dos valores apresentados na Tabela A.12. Tabela A.12 Constante vbUseSystem vbSunday vbMonday vbTuesday vbWednesday Os valores do argumento firstdayofweek. Valor 0 1 2 3 4 Descrio Usa a configurao da API NLS Domingo (padro) Segunda Tera Quarta
25

vbThursday vbFriday vbSaturday

5 6 7

Quinta Sexta Sbado

De forma semelhante, firstweekofyear determina qual a primeira semana do ano, e pode assumir um dos valores apresentados na Tabela A.13. Tabela A.13 Constante vbUseSystem vbFirstJan1 vbFirstFourDays Os valores do argumento firstweekofyear. Valor 0 1 2 Descrio Usa a configurao da API NLS. Inicia com a semana de 1 de janeiro. Inicia com a primeira semana que possui pelo menos quatro dias no ano. vbFirstFullWeek 3 Inicia com a primeira semana completa do ano.

Os argumentos firstdayofweek e firstdayofyear so usados apenas na formatao de datas. Existem muitas strings de formatao para todos os trs tipos de variveis: numricas, string e data e hora. As Tabelas A.14, A.14 e A.16 os apresentam. Tabela A.14 Caractere : A formatao de data e hora definida pelo usurio. Descrio Separador de hora. Em algumas verses locais, outros caracteres podem ser usados para representar o separador de hora. Ele separa horas, minutos e segundos quando os valores de hora so formatados. / Separador de data. Em algumas verses locais, outros caracteres podem ser usados para representar o separador de data. Ele separa dia, ms e ano quando os valores de data so formatados. c d dd ddd dddd Mostra a data como ddddd e a hora como ttttt. Mostra o dia como um nmero (1-31). Mostra o dia como um nmero com zero inicial (01-31). Mostra o dia como uma abreviatura (Dom-Sb). Mostra o dia como um nome completo (Domingo-Sbado).
26

ddddd

Mostra a data completa (incluindo dia, ms e ano), formatada de acordo com a configurao de formato de data curta do sistema. O formato de data curta padro m/d/a.

dddddd

Mostra a data completa, formatada de acordo com a opo de data longa reconhecida pelo sistema.

Mostra o dia da semana como um nmero (1 para Domingo a 7 para Sbado).

ww m

Mostra a semana do ano como um nmero (1-54). Mostra o ms como um nmero (1-12). Se m aparece imediatamente aps h ou hh, em vez do ms apresentado o minuto.

mm

Mostra o ms como um nmero com um zero inicial (01-12). Se m aparece imediatamente aps h ou hh, em vez do ms apresentado o minuto.

mmm mmmm q y yy yyyy h hh n nn s ss ttttt

Mostra o ms como uma abreviatura (Jan-Dez). Mostra o ms como um nome de ms completo (Janeiro-Dezembro). Mostra o trimestre do ano como um nmero (1-4). Mostra o dia do ano como um nmero (1-366). Mostra o ano como um nmero de 2 dgitos (00-99). Mostra o ano como um nmero de 4 dgitos (100-9999). Mostra as horas como um nmero (0-23). Mostra as horas com zeros iniciais (00-23). Mostra os minutos sem zeros iniciais (0-59). Mostra os minutos com zeros iniciais (00-59). Mostra os segundos sem zeros iniciais (0-59). Mostra os segundos com zeros iniciais (00-59). Mostra a hora completa (incluindo hora, minuto e segundo), formatada usando o separador de hora definido pelo formato de hora do sistema. O formato de hora padro hh:mm:ss.

AM/PM am/pm A/P

Usa o formato de 12 horas e mostra a indicao AM/PM. Usa o formato de 12 horas e mostra a indicao am/pm. Usa o formato de 12 horas e mostra a indicao A/P.

27

a/p AMPM

Usa o formato de 12 horas e mostra a indicao a/p. Usa o formato de 12 horas e mostra a literal de string AM/PM conforme definida pelo sistema. Use o programa Configuraes Regionais do Painel de Controle para configurar esse literal para o seu sistema.

Tabela A.15 Caractere Nenhum 0

Formatao de nmeros definida pelo usurio. O Que Ele ou Faz Descrio Mostra o nmero sem formatao. Marcador de posio de dgito Mostra um dgito ou zero. Se a expresso tiver um dgito na posio onde o 0 aparece na string de formato, ele apresentar o dgito; caso

contrrio, aparecer um zero nessa posio. Se o nmero tiver menos dgitos do que os zeros na expresso de formato, zeros no significativos ou significativos sero apresentados. Se o nmero tiver mais dgitos direita do separador decimal, o nmero ser arredondado at a quantidade de zeros no formato. Se o nmero tiver mais dgitos esquerda do separador decimal, os dgitos extras aparecero sem modificao. # Marcador de posio de dgito Mostra um dgito ou nada. Se a expresso tiver um dgito na posio onde o # aparece na string de formato, ele apresentar o dgito; caso

contrrio, no aparece coisa alguma nessa posio. O smbolo funciona como o marcador de dgito 0, exceto

28

que os zeros no significativos e significativos no sero exibidos caso o nmero tiver uma quantidade igual ou menor de dgitos do que caracteres # em qualquer lado do separador decimal na expresso de formato. . Marcador de posio decimal O marcador de posio decimal

determina quantos dgitos aparecero esquerda e direita do separador decimal se a expresso de formato tiver apenas sinais numricos

esquerda

deste

smbolo;

nmeros

menores do que 1 comeam com um separador decimal. Para apresentar um zero no significativo com nmeros fracionrios, use 0 como marcador de posio do primeiro dgito esquerda do separador decimal. % Marcador de posio de A expresso multiplicada por 100. O caractere de porcentagem (%)

porcentagem

inserido na posio onde ele aparece na string de formato. , Separador de milhares Separa milhares das centenas dentro de um nmero maior que 1000. Dois separadores de milhares adjacentes ou um separador de milhares do

imediatamente

esquerda

separador decimal (exista ou no um decimal especificado) significa

dimensionar o nmero dividindo-o por 1000, arredondando conforme a

29

necessidade. Por exemplo, voc pode usar a string de formato ##0, para representar 100 milhes como 100. Os nmeros menores do que 1 milho aparecem como 0. Dois separadores de milhares adjacentes em qualquer posio imediatamente separador diferente daquela do

esquerda so

decimal

tratados

simplesmente como especificando o uso de um separador de milhares. : Separador de hora Separa horas, minutos e segundos quando os valores de hora so

formatados.

Separador de data

Separa o dia, ms e ano quando os valores de data so formatados.

E+,e-,e+

Formato cientfico

Se a expresso de formato tiver pelo menos um marcador de posio de dgito (0 ou #) direita de E-, E+, e- ou e+, o nmero aparecer em formato cientfico; E ou e inserido entre o nmero e seu expoente. O nmero de marcadores de dgito direita

determina o nmero de dgitos no expoente. Use E- ou e- para colocar um sinal de subtrao junto aos expoentes negativos. Use E+ ou e+ para colocar um sinal de subtrao junto aos expoentes negativos e um sinal de adio junto aos expoentes

30

positivos. + $ (espao) Mostra um caractere literal Para mostrar um caractere diferente daqueles listados, preceda-o com uma barra invertida (\) ou coloque-o entre aspas ( ). \ Mostra o prximo caractere na Para mostrar um caractere que tenha string de formato significado especial como um caractere literal, preceda-o com uma barra

invertida (\). A barra invertida em si no aparece. Usar uma barra invertida o mesmo que colocar o prximo caractere entre aspas. Para exibir uma barra invertida, use duas (\\). Os exemplos podem de ser caracteres que no como

apresentados

caracteres literais so os caracteres de formatao de data e hora (a, c, d, h, m, n, p, q, s, t, w, y, / e :), os caracteres de formatao numrica (#, 0, %, E, e,
vrgula e ponto) e os caracteres de formatao de strings (@, &, <<, >> e !).

ABC

Mostra a string entre as aspas Para incluir uma string no formato ( ) dentro do cdigo, voc deve usar Chr(34) para fechar o texto (34 o cdigo de caractere das aspas).

Tabela A.16 Caractere @

Formatao de strings definida pelo usurio. O Que Ele ou Faz Marcador de posio de caractere Descrio Mostra um caractere ou um espao. Se a string tiver um caractere na posio onde o sinal de arroba (@) aparece na string

31

de formato, ela ser apresentada. Caso contrrio, nessa posio ser

apresentado um espao. Os marcadores de posio so preenchidos da direita para a esquerda, a menos que haja um ponto de exclamao (!) na string de formato. & Marcador de posio de caractere Se a string tiver um caractere na posio onde o & aparece, ela o apresentar. Caso contrrio, nada ser apresentado. Os marcadores de posio so

preenchidos da esquerda para a direita a menos que haja um caractere de ponto de exclamao (!) na string de formato. < Fora minsculas Todos os caracteres so antes

convertidos para minsculas. > Fora maisculas Todos os caracteres so antes

convertidos para maisculas. ! Localiza marcadores de posio da A ordem padro usar marcadores de esquerda para a direita posio da direita para a esquerda.

FormatCurrency(Expression,[NumDigitsAfterDecimal], [IncludeLeadingDigit],[UseParensForNegativeNumbers], [GroupDigits]) Esta funo retorna uma expresso numrica formatada como valor monetrio usando o smbolo de moeda definido no Painel de Controle do Windows. Todos os argumentos so opcionais, exceto o argumento Expression que o nmero a ser formatado como moeda. NumDigtsAfterDecimal um valor indicando o nmero de dgitos que devem aparecer direita do ponto decimal. O valor padro -1 indicando que a configurao regional do sistema deve ser a adotada. IncludeLeadingDigit uma constante de trs estados que indica se um zero no significativo deve ser exibido para valores fracionrios. O argumento

32

UseParensForNegativeNumbers tambm uma constante de trs estados que indica se os valores negativos devem ser colocados entre parnteses. O ltimo argumento, GroupDigits, mais uma constante de trs estados que indica se os nmeros so agrupados usando-se o delimitador de grupo especificado nos ajustes de configurao regional do sistema.

33

NOTA Uma varivel de trs estados aquela que pode assumir trs valores: True, False e UseDefault. O ltimo valor usa a configurao regional do sistema. Quando um ou mais argumentos opcionais forem omitidos, os valores para os argumentos omitidos sero fornecidos pelos ajustes de configurao regional do sistema. FormatDateTime(Expression[,NamedFormat]) Esta funo formata um valor de data ou de hora. O argumento Expression um valor de data que ser formatado e o argumento opcional NemedFormat indica o formato de data/hora a ser usado. Ele pode assumir os valores mostrados na Tabela A.17. Tabela A.17 Valor vbGeneralDate Os valores do argumento NamedFormat. O Que Ele Faz Exibe uma data e/ou hora. Se um trecho com data estiver presente, ele ser exibido como uma data curta. Se um trecho com hora estiver presente, ele ser exibido como uma hora longo. Se ambas as partes estiverem presentes, ambas sero exibidas. vbLongDate Exibe uma data usando o formato de data longo conforme especificado nas configuraes regionais do computador cliente. vbShortDate Exibe uma data usando o formato de data curto conforme especificado nas configuraes regionais do computador cliente. vbLongTime Exibe uma hora usando o formato de hora especificado nas configuraes regionais do computador cliente. vbShortTime Exibe uma hora usando o formato de 24 h.

FormatNumber(Expression,[NumDigitsAfterDecimal], [IncludeLeadingDigit], [UseParensforNegativeNumbers], [GroupDigits]) Esta funo retorna um valor numrico formatado como um nmero. Os argumentos da funo FormatNumber() so idnticos aos argumentos da funo FormatCurrency(). FormatPercent(Expression,[NumDigitsAfterDecimal], [IncludeLeadingDigit],[UseParensNegativeNumbers], [GroupDigits])

34

Esta funo retorna uma expresso formatada como uma porcentagem (multiplicada por 100) com um caractere de % aps o valor. Sua sintaxe e argumentos so idnticos s funes FormatCurrency() e FormatNumber(). Funes Matemticas As funes a seguir realizam operaes matemticas. Seus argumentos so valores de preciso dupla, assim como seus resultados. Abs(expression) Esta funo informa o valor absoluto de seu argumento. Tanto Abs(1.01) como Abs(-1.01) retornam o valor 1,01. Atn(expression) Esta funo informa o arco tangente de um ngulo expresso em radianos. O valor informado em radianos. Para convert-lo para graus, multiplique por 180/, onde 3,14159.... Para calcular com preciso dupla, use a seguinte instruo: Atn(1)*4 Cos(expression) Esta funo informa o cosseno de um ngulo expresso em radianos. O valor do ngulo deve ser expresso em radianos. Para convert-lo para graus, multiplique por 180/, onde 3.14159.... Para calcular com preciso dupla, use a seguinte instruo: Atn(1)*4 Exp(expression) Esta funo informa a base dos logaritmos naturais elevada a uma potncia. O argumento expression a potncia e seu valor pode ser um no-inteiro, positivo ou negativo. A funo Exp() complementa a operao da funo Log() e tambm chamada antilogaritmo. Int(expression), Fix(expression) Essas duas funes aceitam um argumento numrico e retornam sua parte inteira. Se expresso for positiva, as duas funes se comportaro da mesma forma. Se for negativa, a funo Int() informar o primeiro inteiro negativo menor ou igual a expression, e Fix informa o primeiro inteiro negativo maior ou igual a expression. Por exemplo, Int(-1.1) retorna -2, e Fix(-1.1) retorna -1. As funes Int(1.8) e Fix(1.8) retornam 1. Se voc quiser se livrar da parte decimal de um nmero e tambm arredond-lo, use a seguinte expresso: Int(valor + 0.5)
35

O argumento valor o nmero a ser arredondado. A funo: Int(100.1 + 0.5) retorna 100, e a funo: Int(100.8 + 0.5) retorna 101. Esta tcnica tambm funciona com nmeros negativos. A funo a seguir: Int(-100.1 + 0.5) retorna -100, e a funo: Int(-100.8 + 0.5) retorna -101. Round(expression, [NumDigitsAfterDecimal]) Esta funo retorna uma expresso numrica arredondada para um nmero especificado de casas decimais. O argumento NumDigitsAfterDecimal opcional e indica quantas casas direita do separador decimal sero usadas no arredondamento. Se ele for omitido, um valor inteiro ser retornado. A expresso Round(3.49) retorna 3 e a expresso Round(3.51) retorna 4. Use esta nova funo para evitar instrues como Int(valor + 0.5) que era usada com verses anteriores do Visual Basic para arredondar um valor para um inteiro. Log(expression) A funo Log() retorna o logaritmo natural de um nmero. O argumento expression deve ser um nmero positivo. A expresso a seguir: Log(Exp(N)) retorna N, e tambm esta expresso: Exp(Log(N)) Se voc combinar o logaritmo com o antilogaritmo, acabar obtendo o mesmo nmero de volta. O logaritmo natural o logaritmo na base e, que aproximadamente 2,718282. O valor exato de e dado pela funo Exp(1). Para calcular logaritmos de outras bases, divida o logaritmo natural do nmero pelo logaritmo natural da base. A instruo a seguir calcula o logaritmo de um nmero na base 10: Log10 = Log(nmero) / Log(10) Hex(expression), Oct(expression)

36

Estas duas funes aceitam um valor numrico decimal como argumento e informam as representaes hexadecimal e octal do nmero em uma string. A funo Hex(47) retorna o valor 2F, e a funo Oct(47) retorna o valor 57". Para especificar um nmero hexadecimal, use como prefixo os smbolos &H. A notao equivalente para os nmeros octais &O. Dadas as definies a seguir: valorD = 199: valorO = &O77 a funo Oct(valorD) retorna a string 307, e a funo Hex(valorO) retorna 3F. Para exibir o valor decimal de 3F, use uma instruo como esta: MsgBox ("O nmero 3F em decimal " & &H3F) O valor que ser impresso 63. Rnd([expression]) Esta funo retorna um nmero pseudo-aleatrio no intervalo de 0 a 1. O argumento opcional chamado semente e usado como ponto de partida nos clculos que geram o nmero aleatrio. Se a semente for negativa, a funo Rnd() sempre retornar o mesmo nmero. Por mais estranho que esse comportamento possa parecer, voc pode precisar desse recurso para criar nmeros aleatrios repetitivos para testar o seu cdigo. Se a semente for positiva (ou se for omitida), a funo Rnd() retornar os prximos nmeros aleatrios na seqncia. Finalmente, se a semente for zero, a funo Rnd() retornar o nmero aleatrio gerado por ltimo. Na maioria dos casos, voc no precisa de um nmero aleatrio entre 0 e 1, mas entre outros dois valores inteiros. O valor de um jogo de cartas um inteiro no intervalo entre 1 e 13. Para simular o lanamento de um dado, voc precisa de um nmero entre 1 e 6. Para gerar um nmero aleatrio no intervalo de inf a sup, em que os dois limites so nmeros inteiros, use a seguinte instruo: numAleatorio = Int((sup inf + 1)*rnd() + inf); A instruo a seguir mostra um nmero aleatrio no intervalo entre 1 a 49. Debug.Print Int(Rnd * 49 + 1) Se voc repetir esta instruo seis vezes, obter os seis nmeros para apostar na Sena. NOTA A seqncia de nmeros aleatrios produzida pelo Visual Basic sempre a mesma! Digamos que voc tenha um aplicativo que mostre trs nmeros aleatrios. Se voc
37

interromper e executar novamente o aplicativo, os mesmos trs nmeros sero mostrados. No se trata de um erro, mas sim uma caracterstica do Visual Basic que lhe permite depurar aplicativos que usam nmeros aleatrios (se a seqncia fosse diferente, no seria possvel recriarmos o problema). Para mudar este comportamento padro, chame a instruo Randomize no incio do programa. Esta instruo ir inicializar o gerador de nmeros aleatrios tendo como base o valor do relgio do computador e as seqncias de nmeros aleatrios sero diferentes cada vez que voc executar o aplicativo. Sgn(expression) Esta funo retorna um inteiro indicando o sinal de seu argumento: 1 se o argumento for maior do que zero, 0 se o argumento for 0 e -1 se o argumento for menor do que zero.

38

Sin(expression) Esta funo retorna o seno de um ngulo, especificado em radianos. Veja a descrio de Cos(). Sqr(expression) Esta funo retorna a raiz quadrada de um nmero positivo. Se o nmero do argumento for negativo, a funo Sqr() causar um erro em tempo de execuo, pois por definio a raiz quadrada de um nmero negativo indefinida. Se o seu programa usar a funo Sqr(), voc dever incluir algum cdigo de captura de erro como o seguinte: If var >=0 Then raiz = Sqr(var) Else MsgBox "O resultado no pode ser calculado" End If Tan(expression) Esta funo informa a tangente de um ngulo, que deve ser expressa em radianos. Val(string) Esta funo informa o valor numrico de uma string composta de dgitos. A funo Val() comea lendo a string da esquerda para a direita, e pra quando encontra um caractere que no faz parte de um nmero. Se o valor da varivel a for: a = "18:6.05" a instruo a seguir: Debug.Print Val(a) retornar 18. Funes de Data e Hora As funes de data e hora informam (ou configuram) a data e a hora do sistema. O Visual Basic entende muitos formatos para a data. Alm dos formatos comuns como 2/9/1999 e 5/25/1995, ele reconhece nomes de meses. Datas como February 1999 e May 25, 1996 so expresses de datas vlidas. Veja mais detalhes sobre formatos de data e hora na descrio de Format(string). Timer()

39

Esta funo retorna um nico nmero representando o nmero de segundos passados desde a meia-noite. Ela usada freqentemente para fins de cronometragem, desde que a preciso desejada no seja menor do que um segundo. Para cronometrar uma operao que leve algum tempo para ser completada, use uma estrutura como esta: T1 = Timer {clculos demorados} Debug.Print Int(Timer T1) A ltima instruo mostra a parte inteira da diferena, que o nmero de segundos passados desde que os clculos comearam. Date() Esta funo informa a data atual no formato dia/ms/ano, a menos que voc tenha especificado outro formato de data (tal como ms/dia /ano) nas configuraes regionais do Windows. A instruo a seguir: MsgBox "A data do sistema " & Date() mostra uma data como 23/06/99 em uma caixa de mensagem. Para configurar a data do sistema, use uma instruo como a seguinte: date = "01/01/97" Time() Esta funo informa a hora do sistema no formato definido pelas configuraes regionais do Windows. A instruo a seguir: MsgBox "A hora do sistema " & Time() mostra uma hora como 22:10:35 em uma caixa de mensagem. Para configurar a hora do sistema, use a seguinte instruo: Time = "13:00.00" Now() Esta funo informa a data e a hora do sistema, no mesmo formato em que so informadas pelas funes Date() e Time(). A instruo a seguir: Debug.print Now() mostra uma combinao de data/hora como 23/06/97 22:11:24 PM em uma caixa de mensagem. Existe apenas um espao em branco entre a data e a hora. A funo Now equivalente ao seguinte par de funes: Date() & " " & Time()

40

Day(date) Esta funo retorna o nmero do dia referente data especificada pelo argumento. O argumento date deve ser uma data vlida (no formato dado pelas configuraes regionais do Windows). 1 Se a funo a seguir fosse chamada com o valor 12/01/95, ela retornaria 12. Day(Date()) A funo Day(Now()) informa o mesmo resultado. Weekday(date, [firstdayofweek]) Esta funo retorna um inteiro no intervalo de 1 a 7, representando o dia da semana (1 para Domingo, 2 para Segunda e assim por diante). O primeiro argumento, date, pode ser qualquer expresso de data vlida. O segundo argumento, que opcional, especifica o primeiro dia da semana. Configure-o como 1 para comear a contar a partir de Domingo (o padro) ou configure-o como 2 para comear a contar a partir de Segunda. O valor 3 corresponde Tera, o valor 4 Quarta e assim por diante. O segmento de cdigo a seguir imprime o nome do dia: NomesDia = Array("Domingo", "Segunda", "Tera", "Quarta", _ "Quinta", "Sexta", "Sbado") nomedia = "Hoje " & NomesDia(Weekday(Now)-1) Debug.Print nomedia Observe que o cdigo subtrai 1 do dia da semana, levando em considerao que o array inicia no ndice zero. Month(date) Esta funo retorna um inteiro no intervalo entre 1 e 12, representando o nmero do ms da data especificada. Month(Date) informa o nmero do ms atual. MonthName(month[, Abbreviate]) Esta funo retorna o nome do ms especificado pelo argumento month (um valor numrico que 1 para janeiro, 2 para fevereiro e assim por diante). O argumento opcional abbreviate um valor booleano que indica se o nome do ms deve ser abreviado. Como padro, os nomes dos meses no so abreviados. Year(date)

Se a data for invlida no sistema usado nas configuraes regionais mas vlida no sistema norte-americano (por exemplo, 1/13/99), o VB assumir que a data est no formato norteamericano e a interpreta desta forma.
41

Esta funo retorna um inteiro representando o ano da data passada como argumento. A funo a seguir: Year(Now()) retorna o ano atual. Hour(time) Esta funo retorna um inteiro no intervalo de 0 a 24 que representa o valor da hora no horrio especificado. As instrues a seguir: Debug.Print Now Debug.Print Hour(Now) produzem algo como: 23/06/99 22:21:32 22 Minute(time) Esta funo retorna um inteiro no intervalo de 0 a 60 que representa o valor do minuto no horrio especificado. As instrues a seguir: Debug.Print Now Debug.Print Minute(Now) produzem algo como: 23/06/99 22:21:32 21 Second(time) Esta funo informa um inteiro no intervalo de 0 a 60 que representa o valor do segundo no horrio especificado. As instrues a seguir: Debug.Print Now Debug.Print Second(Now) produzem algo como: 23/06/99 22:21:32 32 DateSerial(year,month,day) Esta funo aceita trs argumentos numricos que correspondem a um ano, um ms e um dia e retorna a data correspondente. A instruo a seguir: MsgBox DateSerial(1999, 10, 1) apresenta a string 01/10/99 na caixa de mensagem.
42

Embora raramente possa ser considerada uma operao til, a funo DateSerial pode tratar de operaes aritmticas com datas. Por exemplo, voc pode descobrir a data do 90. dia do ano chamando a funo DateSerial() com os seguintes argumentos: DateSerial(1996, 1, 90) (30/3/96, caso esteja interessado). Para descobrir a data 1.000 dias a partir de agora, chame a funo DateSerial da seguinte forma: DateSerial(Year(Date), Month(Date), Day(Date)+1000) Voc tambm pode somar (ou subtrair) um nmero de meses no argumento month e um nmero de anos no argumento year.

43

DateValue(date) Esta funo retorna um variante do tipo Date. Ela prtica quando voc est realizando clculos financeiros com base no nmero de dias entre duas datas. A diferena na seguinte instruo: MsgBox DateValue("25/12/1996") DateValue("25/12/1993") o nmero de dias entre as duas datas, que neste caso 1.096. Voc pode verificar esse resultado somando 1.096 dias data anterior: MsgBox DateValue("25/12/1993") + 1096 ou subtraindo 1.096 dias da data posterior: MsgBox DateValue("25/12/1996") 1096 TimeSerial(hour, minute, second) Esta funo informa uma hora, conforme especificado pelos trs argumentos. A funo a seguir: TimeSerial(4, 10, 55) retorna: 4:10:55 AM A funo TimeSerial() constantemente usada para calcular horas relativas. A chamada a TimeSerial() a seguir retorna 2 horas, 15 minutos e 32 segundos antes de 16:13:40 TimeSerial(16 2, 13 15, 40 32) que 13:58:08. TimeValue(time) Esta funo retorna um variante do tipo Time. Assim como a funo DateValue(), ela pode ser usada em operaes que envolvam horrios. Se as variveis Hora1 e Hora2 forem definidas como: Hora1 = "04.10.55" Hora2 = "18.50.00" voc poder descobrir as horas, minutos e segundos entre as duas horas com as seguintes instrues: Dif = TimeValue(Hora2) _ TimeValue(Hora1) DifHora = Hour(Dif) DifMin = Minute(Dif) DifSeg = Second(Dif) Neste exemplo, os valores so:
44

DifHora = 14 DifMin = 39 DifSeg = 5 DateAdd(interval, number, date) Esta funo informa uma data que corresponde a uma data mais algum intervalo. A varivel interval uma unidade de tempo (dias, horas, semanas etc.), number o nmero de intervalos a serem somados data inicial, e date a data inicial. Se o number for positivo, a data retornada por DateAdd ser no futuro. Se for negativo, a data retornada ser no passado. O argumento de intervalo pode assumir um dos valores da Tabela A.18. Tabela A.18 Valor yyyy q m y d w ww h n s Os valores do argumento intervalo. Descrio Ano Trimestre Ms Dia do ano Dia Dia da semana Semana Hora Minuto Segundo

Para descobrir a data um ms aps 31 de janeiro de 1996, use a seguinte instruo: Print DateAdd("m", 1, "31-Jan-96") O resultado : 29/02/96 e no uma data invlida como 31 de fevereiro. A funo DateAdd() tambm leva em considerao os anos bissextos. A instruo a seguir: Print DateAdd("m", 1, "31-Jan-96") mostra a data 29/02/96 na janela Immediate.

45

A funo DateAdd() semelhante funo DateSerial(), mas leva em considerao a durao real de um ms. Para DateSerial(), cada ms possui 30 dias. As instrues a seguir: dia1=#31/1/1996# Print DateSerial(year(dia1), month(dia1)+1, day(dia1)) resultam em: 02/03/96 que uma data em maro, no em fevereiro. DateDiff(Interval, Date1, Date2,[firstdayofweek],[firstweekofyear]) Esta funo a correspondente da funo DateAdd() e retorna o nmero de intervalos entre duas datas. O argumento intervalo o intervalo de tempo que voc usa para calcular a diferena entre as duas datas (veja os valores vlidos na Tabela A.18). Os argumentos data1 e data2 so datas a serem usadas no clculo, e firstdayofweek e firstweekofyear so argumentos opcionais que especificam o primeiro dia da semana e a primeira semana do ano. A Tabela A.19 mostra os valores vlidos do argumento FirstDayofweek e a Tabela A.20 mostra os valores vlidos para o argumento firstdayofyear. Tabela A.19 Os valores para o argumento firstdayofweek.

Constante vbUseSystem vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday

Valor 0 1 2 3 4 5 6 7

Descrio Usa a configurao da API NLS Domingo (padro) Segunda Tera Quarta Quinta Sexta Sbado

Tabela A.20 Constante vbUseSystem

Os valores do argumento firstweekofyear. Valor 0 Descrio Usa a configurao da API NLS.

46

vbFirstJan1 vbFirstFourDays

1 2

Inicia com a semana de 1 de janeiro (padro). Inicia com a primeira semana que possui pelo menos quatro dias no ano.

vbFirstFullWeek

Inicia com a primeira semana completa do ano.

Voc pode usar a funo DateDiff() para descobrir quantos dias, semanas e at mesmo segundos h entre duas datas. A instruo a seguir mostra o nmero de dias e minutos at o incio do ano 2000 ou desde o incio do ano 2000, dependendo de quando voc a executa): ano2000=#01/01/2000 00:00:00# Print DateDiff("n", now(), ano2000) Se voc colocar este cdigo em um evento Timer de um controle Timer, poder atualizar um controle de texto a cada segundo ou a cada minuto com uma contagem regressiva para o ano 2000. Se voc usar a funo DateValue() desta maneira: Print minute(DateValue("01/01/2000 00:00:00") DateValue(now()) o resultado ser um nmero no intervalo entre 0 e 60. Voc precisa considerar a diferena de anos, meses, dias, horas e minutos para calcular o valor correto. DatePart(Interval, Date,[FirstDayofWeek],[FirstWeekofYear]) Esta funo retorna a parte especificada de uma determinada data. O argumento interval o formato desejado em que a parte da data ser retornada (veja os seus valores descritos na Tabela A.18) e Date a parte da data que voc est procurando. Os argumentos opcionais FirstDayofWeek e FirstWeekofyear so iguais aos da funo DateDiff(). As instrues Print a seguir produzem os resultados mostrados abaixo delas: dia1=#23/03/1999 15:03:30# Print DatePart("yyyy", dia1) 1999 Print DatePart("q", dia1) 1 Print DatePart("m", dia1) 3 Print DatePart("d", dia1) 23 Print DatePart("w", dia1)
47

7 Print DatePart("ww", dia1) 12 Print DatePart("h", dia1) 15 Print DatePart("n", dia1) 3 Print DatePart("s", dia1) 30 Funes Financeiras Voc usa as funes descritas a seguir para calcular os parmetros de um emprstimo ou de um investimento. Explicarei apenas as funes que retornam os parmetros bsicos de um emprstimo (como o pagamento mensal ou a durao do emprstimo). As funes financeiras mais avanadas so descritas na documentao on-line do Visual Basic. IPmt(Rate,Per,nper,pv[FV],[Due]) Esta funo informa o pagamento dos juros para um determinado perodo de uma anuidade com base nos pagamentos peridicos e fixos e na taxa de juros fixa. O resultado um valor Double. O argumento Rate um valor Double especificando a taxa de juros para o perodo de pagamento. Por exemplo, se a taxa percentual de juros anual do emprstimo (APR) for 10%, pagos em parcelas mensais, a taxa por perodo ser 0.1/12, ou 0.0083. O argumento Per um valor Double especificando o perodo de pagamento atual; Per um nmero no intervalo de 1 a NPer. O argumento NPer um valor Double especificando o nmero total de pagamentos. Por exemplo, se voc estiver fazendo pagamentos por um perodo de cinco anos, NPer ser 5 * 12 (ou seja, 60). O argumento pv um valor Double especificando o valor principal ou valor presente. O valor do emprstimo o valor presente para quem recebe os pagamentos mensais. O argumento fv um valor variante especificando o valor futuro, ou saldo em caixa, aps o pagamento final. O valor futuro de um emprstimo $0, pois esse o seu valor aps o ltimo pagamento. No entanto, se voc quiser acumular $10.000 em sua conta de poupana por 5 anos, o valor futuro ser $10.000. Se o argumento fv for omitido, ser assumido 0.

48

O argumento Due um variante especificando quando os pagamentos vencem. Use 0 se os pagamentos vencerem no final do perodo de pagamento; use 1 se os pagamentos vencerem no incio do perodo. Se o argumento Due for omitido, ser assumido 0. Suponha que voc tome emprestado $30.000 a uma taxa anual de 11,5%, a serem pagos em 3 anos com pagamentos no final de cada ms. Veja como voc pode calcular o total de juros, alm dos juros mensais: ValP = 30000& ValF = 0& APR = 0.115 / 12 Pagamentos = 3 * 12 For Periodo = 1 To Pagamentos PagJuros = IPmt(APR, Periodo, Pagamentos, -ValP, ValF, 1) Debug.Print PagJuros TotJuros = TotJuros + PagJuros Next Periodo Debug.Print "Total de juros pagos: " & TotJuros A parte de juros do primeiro pagamento $287,11, e a parte de juros do ltimo pagamento menor do que $10. O total de juros $5.276,02. PPmt(Rate,Per,NPer,pv,[FV],[Due]) Esta funo semelhante funo IPmt, exceto por retornar o pagamento principal para um determinado perodo de um emprstimo com base em pagamentos peridicos e fixos e uma taxa de juros fixa. Para ver uma descrio dos argumentos da funo, consulte a funo IPmt. O cdigo para calcular o pagamento principal do exemplo anterior quase igual ao usado para calcular os juros: ValP = 30000& ValF = 0& APR = 0.115 / 12 Pagamentos = 3 * 12 For Periodo = 1 To Pagamentos Pago = PPmt(APR, Periodo, Pagamentos, -ValP, ValF, 1) Debug.Print Pago TotPrincipal = TotPrincipal + Pago

49

Next Periodo Debug.Print "Total de principal pago: " & TotPrincipal Neste exemplo, os pagamentos aumentam com o tempo ( por isso que o pagamento total permanece fixo). O valor total ser igual ao valor do emprstimo, claro, e o pagamento fixo a soma do pagamento dos juros (conforme retornado pela funo IPmt()) mais o pagamento do principal (conforme retornado pela funo PPmt()). Pmt(Rate,NPer,pv,[FV],[Due]) Esta funo uma combinao das funes IPmt() e PPmt(). Ela retorna o pagamento (incluindo principal e juros) para um emprstimo com base em pagamentos peridicos e fixos e uma taxa de juros fixa. Para obter uma descrio dos argumentos da funo, consulte a funo IPmt. Observe que a funo Pmt() no exibe o argumento Per, pois todos os pagamentos so iguais. O cdigo para calcular o pagamento mensal semelhante aos exemplos de cdigo nas funes IPmt() e PPmt(): ValP = 30000& ValF = 0& APR = 0.115 / 12 Pagamentos = 3 * 12 For Periodo = 1 To Pagamentos PagMensal = Pmt(APR, Periodo, Pagamentos, -ValP, ValF, 1) Debug.Print PagMensal ValorTotal = ValorTotal + PagMensal Next Periodo Debug.Print "Valor total pago: " & ValorTotal FV(Rate,NPer,Pmt,[PV],[Due]) Esta funo retorna o valor futuro de um emprstimo com base em pagamentos peridicos e fixos e uma taxa de juros fixa. Os argumentos da funo FV() so explicados na funo IPmt(), e o argumento Pmt o pagamento feito em cada perodo. Suponha que voc queira calcular o valor futuro de um investimento com uma taxa de juros de 6,25%, 48 pagamentos mensais de $180 e um valor presente de $12.000. Use a funo FV() com os seguintes argumentos: Pagamento = 180 APR = 6.26 / 100
50

Pagamentos = 48 ValP = 12000 ValF = FV(APR / 12, Pagamentos, -Pagamento, -ValP, Tipo) MsgBox "Aps " & Pagamentos & " suas economias sero de $" & ValF O resultado real prximo a $25.000. NPer(Rate,Pmt,pv,[FV],[Due]) A funo Nper() informa o nmero de perodos para um emprstimo com base em pagamentos peridicos e fixos e uma taxa de juros fixa. Para obter uma descrio dos argumentos da funo, veja a funo IPmt. Suponha que voc tome emprestado $25.000 a 11,5%, e possa pagar $450 por ms. Para descobrir o que isso representa para a sua situao financeira no futuro, voc gostaria de saber quantos anos sero necessrios para pagar o emprstimo. Veja como voc pode usar a funo Nper() para isso: ValF = 0 ValP = 20000 APR = 0.115 / 12 Pagamento = 450 Tipo = 0 TotPags = NPer(APR, -Pagamento, ValP, ValF, Tipo) If Int(TotPags) <> TotPags Then TotPags = Int(TotPags) + 1 Debug.Print "A durao do emprstimo ser: " & TotPags & " meses" A durao real deste emprstimo ser de 80 meses, o que corresponde a aproximadamente 6,5 anos. Se o pagamento passar de $450 para $500, a durao do emprstimo cair para 69 meses, e o pagamento mensal de $550 gerar uma durao de 60 meses. Rate(NPer,Pmt,PV,[FV],[Due],[guess]) Voc usa esta funo para descobrir a taxa de juros por perodo de pagamento para um emprstimo. Seus argumentos so iguais aos das funes financeiras anteriores, exceto pelo argumento Guess que a taxa de juros estimada. Se voc omitir o argumento Guess, ser assumido o valor 0.1 (10%). Suponha que voc queira tomar emprestado $10.000 e pagar em 36 meses com um pagamento mensal de $350 no mximo. Veja como voc pode usar a funo Rate() para calcular a taxa de juros:
51

ValF = 0 ValP = 10000 Pagamento = 350 Pagamentos = 36 Tipo = 0 estimado = 0.1 Taxa = Rate(Pagamentos, -Pagamento, ValP, ValF, TipoPag, estimado) Debug.Print "A taxa de juros desejada : " & Taxa * 12 * 100 & "%" A taxa de juros de aproximadamente 15,7%. A Tabela A.21 apresenta as funes financeiras restantes: Tabela A.21 Funo PV NPV As funes financeiras avanadas. O Que Ela Retorna Retorna o valor presente de um investimento. Retorna um Double especificando o valor lquido presente de um investimento com base em uma srie de fluxos de caixa peridicos e uma taxa de desconto. IRR MIRR Retorna a taxa interna de retorno para um investimento. Retorna um Double especificando a taxa interna de retorno modificada para uma srie de fluxos de caixa peridicos. DDB Retorna um Double especificando a depreciao de um bem por um perodo de tempo especfico usando o mtodo de saldo por declnio duplo ou algum outro mtodo que voc especificar. SYD Retorna um Double especificando a depreciao pelo mtodo da soma dos dgitos dos anos de um bem por um perodo de tempo especificado. SLN Retorna um Double especificando a depreciao por linha reta de um bem para um nico perodo.

Funes de Cor As duas funes descritas a seguir especificam valores de cor que podem ser usados com os mtodos de desenho do Visual Basic ou com as propriedades que configuram a cor de

52

vrios controles (ForeColor, BackColor). A funo QBColor() a mais simples, normalmente usada com aplicativos comerciais. QBColor(color) Esta funo retorna um inteiro longo representando o cdigo de cor RGB correspondente ao nmero de cor especificado. O argumento color um nmero no intervalo de 0 a 15. Cada valor retorna uma cor diferente, como mostra a Tabela A.22. Tabela A.22 Nmero 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Os valores para o argumento color. Cor Preto Azul Verde Ciano Vermelho Magenta Amarelo Branco Cinza Azul claro Verde claro Ciano claro Vermelho claro Magenta claro Amarelo claro Branco intenso

Use a funo QBColor() para especificar cores se voc quiser focalizar as necessidades dos usurios com o adaptador grfico de menor capacidade (que no pode exibir mais de 16 cores). Use-a tambm para aplicativos comerciais que no exijam muitas cores. RGB(Red,Green,Blue) Esta funo retorna um inteiro longo representando o valor de uma cor. Os argumentos red, green e blue so valores inteiros no intervalo de 0 a 255, representando os valores das trs

53

cores bsicas. A Tabela A.23 apresenta algumas das cores mais comuns e suas componentes vermelho, verde e azul correspondentes. As cores correspondem aos oito cantos do cubo de cores RGB. Tabela A.23 Cor Preto Azul Verde Ciano Vermelho Magenta Amarelo Branco Cores comuns e suas componentes RGB correspondentes. Vermelho 0 0 0 0 255 255 255 255 Verde 0 0 255 255 0 0 255 255 Azul 0 255 0 255 0 255 0 255

Para uma discusso detalhada sobre como especificar as cores com o auxlio do cubo RGB, leia o Captulo 6. A instruo a seguir: Text1.BackColor = RGB(255, 0, 0) atribui uma cor vermelha pura ao fundo do controle Text1. Funes do Registro No Captulo 13, discutimos funes de API para manipulao do Registro do Windows. Pelo fato de o sistema operacional e todas as demais operaes dependerem muito do Registro, voc deve ter muito cuidado ao usar o Registro. Estas funes so mais seguras do que as funes de API e elas acessam apenas um nico segmento do Registro (em outras palavras, impossvel estragarmos por engano o segmento referente a um outro aplicativo). SaveSetting (AppName, Section, Key, Setting) Esta uma instruo que armazena uma nova configurao no Registro ou atualiza alguma j existente. a nica instruo discutida nesta seo. O argumento AppName o nome do aplicativo (ou projeto) que armazena as informaes no Registro. Ele no tem necessariamente que ser o verdadeiro nome do aplicativo; ele pode ser qualquer string que voc fornea desde que ela seja exclusiva para seu aplicativo. O argumento Section o nome da seo do registro onde o ajuste de configurao de chave ser salvo. O argumento
54

Key o nome da configurao de chave que ser salvo. O ltimo argumento, Setting, o valor da chave a ser salva. Se por algum motivo Setting no puder ser salva, ser gerado um erro que pode ser capturado em tempo de execuo. As instrues a seguir armazenam as chaves Esq e Topo na seo Startup do segmento do aplicativo no Registro: SaveSetting "MeuAplic", "Inic", "Topo", Me.Top SaveSetting "MeuAplic", "Inic", "Esq", Me.Left Estes valores devero ser salvos no Registro quando o aplicativo for encerrado e eles devero ser lidos quando ele for iniciado para inserir um formulrio na rea de trabalho. GetSetting (AppName, Section, Key [, Defaut]) Esta funo retorna uma configurao de chave do segmento de um aplicativo do Registro. Os argumentos AppName, Section e Key so os mesmos da funo anterior. O ltimo argumento, Default, opcional e contm o valor a ser retornado caso no exista nenhum valor para a chave especificada no Registro. Para ler os valores-chave armazenados no Registro por meio das instrues na entrada SaveSettings(), use o seguinte trecho de programa: Me.Top = GetSetting("MeuAplic", "Inic", "Topo", 100) Me.Left = GetSetting("MeuAplic ", " Inic ", "Esq", 150) No omita os valores padro aqui pois o formulrio pode ser dimensionado de forma estranha caso estejam faltando chaves. GetAllSettings(AppName, Section) Esta funo retorna uma lista de chaves e seus respectivos valores da entrada referente a um aplicativo no Registro. O argumento AppName o nome do aplicativo (ou projeto) cujas configuraes de chaves so desejadas. O argumento Section o nome da seo cujas configuraes de chaves so desejadas. A funo GetAllSettings() retorna todas as chaves e configuraes na seo especificada do Registro na forma de um array bidimensional. O elemento (0, 0) do array contm o nome da primeira chave e o elemento (0,1) contm a configurao desta chave. Os dois prximos elementos (1,0) e (1, 1) contm a chave e a configurao do segundo elemento e assim por diante. Para descobrir o nmero de chaves armazenadas em uma determinada seo do Registro, use as funes LBound() e UBound().

55

A instruo a seguir recupera todas as chaves da seo Inic para o aplicativo MeuAplic e as armazena no array TodasConfig: TodasConfig = GetAllSettings("MeuAplic", "Inic") Voc pode ento configurar um lao para varrer o array e exibir os pares configuraochave: For i = LBound(TodasConfig, 1) To UBound(TodasConfig, 1) Debug.Print TodasConfig (i, 0) & " - " & TodasConfig (i, 1) Next Funes Diversas Esta seo descreve as funes usadas no controle do fluxo do programa. Choose(index, choice-1[, choice-2, ... [, choice-n]]) Esta funo seleciona e retorna um valor de uma lista de argumentos. O argumento index um valor numrico entre 1 e o nmero de opes disponveis. Os argumentos a seguir so as opes disponveis. A funo retornar a primeira opo se index for 1, a segunda se index for 2 e assim por diante. Voc pode usar a funo Choose() para converter dgitos simples em strings. A funo IntToString() retorna o nome do dgito passado como argumento. Function IntToString(int As IntegeR) As String IntToString = Choose (i + 1, "zero", "um", "trs", _ "quatro", "cinco", "seis", "sete", "oito", "nove") End Sub Se ndice for menor do que 1 ou maior do que o nmero de opes, a funo Choose retornar um valor Null. IIf(Expression,TruePart, FalsePart) Esta funo retorna uma de duas partes, dependendo da avaliao de Expression. Se o argumento expression for True, o argumento TruePart ser retornado. Se Expression no for True, o argumento FalsePart ser retornado. A funo IIF() equivalente seguinte estrutura: If expression Then resultado = TruePart Else resultado = FalsePart End If
56

Em muitas situaes, esta lgica reduz bastante a quantidade de cdigo. As funes Min() e Max(), por exemplo, podem ser facilmente implementadas com a funo IIf(): Min = IIf(a<b, a, b) Max = IIf(a>b, a, b) Switch(Expression1, value1, Expression2, value2,...) Esta funo avalia uma lista de expresses e retorna um valor associado primeira expresso na lista que seja True. Se nenhuma das expresses for True, a funo retornar Null. A instruo a seguir seleciona o quadrante apropriado, dependendo dos sinais das variveis X e Y: Quadrante = Switch(X>0 AND Y>0, 1, X<0 AND Y>0, 1, X<0 AND _ Y<0, 3, X<0 AND Y<0, 4) Se tanto X como Y forem negativos, ser atribudo o valor 1 varivel Quadrante. Se X for negativo e Y for positivo, Quadrante ser 2, e assim por diante. Se tanto X como Y forem zero, nenhuma das expresses ser True e Quadrante ser Null. Environ() Esta funo retorna as variveis ambiente (variveis do sistema operacional configuradas com o comando SET). Para acessar uma varivel ambiente, use um ndice numrico ou o nome da varivel. Se voc acessar as variveis ambiente com um valor de ndice, como em: Print Environ(2) voc obter uma string que contm tanto o nome da varivel ambiente como seu valor, como em: TMP=C:\WINDOWS\TEMP Para recuperar apenas o valor da varivel TMP, use a expresso: Print Environ("TMP") e a funo retornar o valor: C:\WINDOWS\TEMP Se voc especificar uma varivel ambiente inexistente, ser retornada uma string de comprimento zero (). Shell(PathName [WindowStyle]) Esta funo inicia um outro aplicativo e retorna um valor representando o ID da tarefa do programa caso seja bem-sucedido; caso contrrio, ela retorna zero. O argumento PathName o nome de caminho completo do aplicativo a ser iniciado e quaisquer argumentos que ele
57

possa esperar. O argumento opcional Windowstyle determina o estilo da janela na qual o aplicativo ser executado e ele pode assumir um dos valores apresentados na Tabela A.24. Tabela A.24 Valor vbHide(0) vbNormalFocus(1) Os valores do argumento PathName. Descrio A janela est oculta e o foco passado a ela. A janela tem o foco e restaurada para seu tamanho e posio originais. vbMinimizedFocus(2) vbMaximizedFocus(3) vbNormalFocus(4) A janela exibida como um cone que possui o foco. A janela maximizada e possui o foco. A janela restaurada para seu tamanho e posio mais recentes. A janela atualmente ativa permanece ativa. vbMinimizedFocus(6) A janela exibida como um cone. A janela atualmente ativa permanece ativa. A funo Shell executa outros programas assincronamente. Isto significa que um programa iniciado com a funo Shell talvez no finalize a execuo antes que as instrues aps a funo Shell sejam executadas.

58

Vous aimerez peut-être aussi