Você está na página 1de 477

ABS Categoria: Funo Matemtica Finalidade: Retorna o valor absoluto de um nmero.

Sintaxe: ABS(Nmero) Em que: Nmero - Qualquer valor numrico vlido. Se Nmero contm Null, o valor retornado pela funo ser Null tambm. Caso Nmero seja igual a zero, este ser o valor de retorno da funo. Exemplo:
Teste = ABS(2.99) Teste = ABS(-2.99) Teste = 2.99 Teste = 2.99

Array Categoria: Funes de Array Finalidade: Retorna um dado Variant contendo um Array. Sintaxe: Array(Lista de Argumentos) Em que: Lista de Argumentos - Consiste em uma srie de argumentos separados por vrgulas. Se nenhum argumento for fornecido funo, ser criado um array de comprimento zero. Exemplo:
MeuArray(Jan,Fev,Mar,Abr) MeuArray(1,3,5,7) MeuArray(2) = Fev MeuArray(3) = 5

Asc Categoria: Funes de Converso de Dados Finalidade: Retorna o cdigo ASCII corresponde quente do primeiro caractere da string indicada. Sintaxe: ASC(String) Em que: String - O argumento string qualquer expresso de caracteres vlida. Se a string especificada no contiver caracteres, ocorrer um erro de Run-Time. Exemplo:
Teste = Asc("A") Teste = Asc("a") Teste = Asc("ASCII") Teste = 65 Teste = 97 Teste = 65

Atn Categoria: Funes Matemticas Finalidade: Calcula o Arco Tangente de um nmero. Sintaxe: Atn(Nmero) Em que: Nmero - A funo Atn retorna o nmero de radianos referentes ao arco tangente do ngulo especificado. Exemplo:
Teste = Atn(30) Teste = Atn(45) Teste = 1.53747533091665 Teste = 1.54857776146818

Cbool Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso em Boolean. Sintaxe: CBool(Expresso) Em que: Expresso - Se o valor da expresso resultante for zero, o valor False ser retornado pela funo Cbool; caso contrrio, a resposta ser True. Exemplo:
Primeiro = 10 Segundo = 10 Valor = 0 Teste = Cbool(Primeiro = Segundo) Teste2 = Cbool(Valor) Teste = True Teste2 = False

Cbyte Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso em Byte. Sintaxe: CByte(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido. Exemplo:
Dim Teste as Double Teste = 222.3322 MeuByte = CByte(Teste) MeuByte = 222

CCur Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso em Currency. Funes Internas

Sintaxe: CCur(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim Dado as Double Dado = 656.123456 Dado = Dado * 2 MinhaMoeda = Ccur(Dado)

MinhaMoeda = 1312.2469

CDate Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso no tipo de dados Date. Sintaxe: CDate(Data) Exemplo:
Hoje = June 18, 1999" DataCurta = CDate(Hoje) DataCurta = 18/06/99

CDbl Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso em Double. Sintaxe: CDbl(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim MinhaMoeda As Currency MinhaMoeda = 255.123456 Dado = CDbl(MinhaMoeda) Dado = 255.1235

CDec Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso em Decimal. Sintaxe: CDec(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim ValorTeste MeuValor = 3.05E+15 ValorTeste = CDec(MeuValor) 'ValorTeste= 3050000000000000

Choose Categoria: Funes de Verificao Finalidade: Seleciona e retorna um valor de uma lista de argumentos existente em funo do ndice passado. Sintaxe: Choose(index, choice-1[, choice-2, ... [,choice-n]]) Em que: Index - Expresso numrica ou campo que resulta em um valor entre 1 e o nmero de escolhas disponveis. Choice - Expresso Variant contendo uma das possveis escolhas. Exemplo:
Teste = Escolha(2) Teste = Valor2

Funo Escolha:
Function Escolha(Indice As Integer) Escolha = Choose(Indice, "Valor1", "Valor2", "Valor3") End Function

Chr Categoria: Funes de Converso de Dados Finalidade: Retorna o caractere correspondente ao cdigo ASCII informado. Sintaxe: Chr(Cdigo ASCII) Exemplo:
Teste = Chr(65) Teste = Chr(97) Teste = Chr(64) Teste = A Teste = a Teste = @

CInt Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso no tipo de dados Inteiro. Sintaxe: CInt(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim Duplo As Double Duplo = 8765.4321 Teste = CInt(Duplo) Teste = 8765

CLng Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso no tipo de dados Longo. Funes Internas

Sintaxe: CLng(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim Dado As Double Dado = 65432.123 Teste = CLng(Dado) Teste = 65432

Command Categoria: Funes de Sistema Operacional Finalidade: Retorna o argumento informado na linha de comando utilizado na inicializao do Visual Basic ou de um programa executvel desenvolvido nesta linguagem. Sintaxe: Command Exemplo: Inicie a criao de um aplicativo qualquer e inclua os comandos abaixo na procedure Form_Load. A seguir, selecione o comando Options... no menu Tools, escolhendo em seguida a aba Advanced. Inclua o seguinte argumento na caixa de texto Command Line Arguments: Start. A seguir, execute seu aplicativo com e sem este argumento e veja o que acontece.
Dim Msg If Command = "" Then Msg = "No existe uma linha de comando Else Msg = "A linha de comando : & Command End If MsgBox Msg

Cos Categoria: Funes Matemticas Finalidade: Calcula o cosseno de um ngulo. Sintaxe: Cos(Nmero) Em que: Nmero - Pode ser qualquer expresso numrica vlida que expresse um ngulo em radianos. Exemplo:
Const PI = 3.14159265 Teste = Cos(PI) Teste = Cos(PI/2) Teste = -1 Teste = 1.79489651491878E-09

CSng Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso no tipo de dados Single. Sintaxe: CSng(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim Teste As Double Teste = 22.12345678 Teste = CSng(Teste) Teste = 22.12346

CStr Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso no tipo de dados String. Sintaxe: CStr(Expresso) Em que: Expresso - O argumento da funo poder ser qualquer valor numrico vlido ou expresso string. Exemplo:
Dim Dado As Double Dado = 555.4321 Teste = CStr(Dado) Teste = "555.4321"

CurDir Categoria: Funes de Sistema Operacional Finalidade: Retorna a pasta (ou diretrio) atual. Sintaxe: CurDir[(Drive)] Em que: Drive - Expresso string que especifica uma unidade de disco existente. Se a unidade no for especificada ou se a string for de tamanho zero, a funo CurDir retornar o caminho (Path) para o drive atual. Exemplo:
Teste = CurDir Teste = C:\WINDOWS

CVar Categoria: Funes de Converso de Dados Finalidade: Converte uma expresso no tipo de dados Variant. Sintaxe: CVar(Expresso) Em que:

Funes Internas

Expresso - Qualquer valor numrico vlido ou expresso string. Exemplo:


Dim Inteiro As Integer Inteiro = 2222 Teste = CVar(Inteiro & "000") Teste = 2222000

CVErr Categoria: Funes de Converso de Dados Finalidade: Retorna o nmero do erro especificado pelo usurio Sintaxe: CVErr(Nmero do Erro) Voc pode utilizar a funo CVErr para definir seus prprios nmeros de erro. Como voc j deve ter notado ao longo de nosso estudo, sempre que ocorre um erro em tempo de execuo, o VB exibe um bloco de dilogo que mostra o nmero do erro ocorrido e a mensagem correspondente a esse erro. Voc tambm pode criar suas prprias mensagens de erro e com isso controlar o comportamento de seu aplicativo no caso da ocorrncia de situaes indesejadas. Voc pode utilizar a funo IsError para avaliar o erro ocorrido e tomar as devidas providncias. Exemplo:
Dado = TxtIn.TEXT Teste = CalculoGeral(Dado) If IsError(Teste) Then Teste = CStr(Teste) End If TxtOut.TEXT = Teste Entrada de Dado Se Teste um Nmero de erro Converto no tipo de dados String

Funo CalculoGeral:
Function CalculoGeral(Nmero) If IsNumeric(Nmero) Then CalculoGeral = Nmero * 100 Else CalculoGeral = CVErr(1000) End If End Function Se nmero processo normalmente Define Nmero de Erro igual a 1000

Date Categoria: Funes de Data e Hora Finalidade: Retorna a Data atual do sistema. Sintaxe: Date Exemplo:
Teste = Date Teste = 04/10/99

DateAdd Categoria: Funes de Data e Hora Finalidade: Retorna um valor Variant contendo a data especificada acrescida do intervalo de tempo fornecido funo. Sintaxe: DateAdd(Intervalo, Nmero, Data) Em que: Intervalo - Expresso do tipo string indicando o intervalo de tempo a ser adicionado data especificada. Pode ser horas, dias, semanas, meses, anos, etc., conforme especificado na seo ajustes, logo em seguida. Nmero -Expresso numrica indicando o nmero de intervalos de tempo que voc deseja acrescer data indicada. Ele pode ser positivo para indicar datas futuras ou mesmo negativo, obtendo datas j ocorridas. Data - Data ou nome de varivel do tipo Date que ser utilizada para o clculo da funo. Ajustes: Ajuste Descrio yyyy Year (Ano) q Quarter (Trimestre) m Month (Ms) y Day of year (Dia do Ano) d Day (Dia) w Weekday (Dia da Semana) ww Week (Semana) h Hour (Hora) n Minute (Minuto) s Second (Segundo) Exemplo:
REM Acresce trs anos data atual Teste = DateAdd("yyyy", 3, #10/04/99#) Teste = 04/10/02 REM Diminui 6 meses da data atual Teste = DateAdd("m", -6, #10/04/99#) REM Soma uma semana data atual Teste = 04/04/99

Funes Internas

Teste = DateAdd("ww", 1, #10/4/99#)

Teste = 11/10/99

Para efeito de clculo, o VB considera os anos bissextos, de modo que o ms de fevereiro ser considerado com 28 ou 29 dias de acordo com a data especificada e o intervalo de tempo informado. DateDiff Categoria: Funes de Data e Hora Finalidade: Retorna o intervalo de tempo decorrido entre duas datas de acordo com a unidade de tempo especificada. Sintaxe: DateDiff(Intervalo, Data1, Data2[, firstdayofweek[, firstweekofyear]]) Em que: Intervalo - Expresso do tipo string indicando o intervalo de tempo que ser calculado entre Data1 e Data2. Pode ser horas, dias, semanas, meses, anos, etc., conforme especificado na seo ajustes, logo em seguida. Data1, Data2 - As duas datas entre as quais ser calculado o intervalo de tempo decorrido. Firstdayofweek - Uma constante que define o primeiro dia da semana. Caso voc no especifique, o domingo ser considerado como primeiro dia. Veja a seo ajustes, logo em seguida, para maiores detalhes. Firstweekofyear - Esta constante define a primeira semana do ano. Se voc no especificar este argumento, ser considerada como a primeira do ano a semana em que ocorre o dia 1 de janeiro. Ajustes: Para Intervalo: Ajuste Descrio yyyy Year (Ano) q Quarter (Trimestre) m Month (Ms) y Day of year (Dia do Ano) d Day (Dia) w Weekday (Dia da Semana) ww Week (Semana) h Hour (Hora) n Minute (Minuto) s Second (Segundo) Para Firstdayofweek: Ajuste Descrio 0 O atual do sistema 1 Domingo (default) 2 Segunda 3 Tera 4 Quarta 5 Quinta 6 Sexta 7 Sbado Para Firstweekofyear: Ajuste Descrio 0 O atual do sistema (se houver) 1 2 3 Exemplo:
REM Dias decorridos de 1/1/99 at 4/10/99: Teste = DateDiff("d", #1/1/99#, #10/4/99#) Teste = 276

A semana em que ocorre dia 1 de janeiro A primeira semana que tem pelo menos 4 dias do novo ano A primeira semana que contiver sete dias do novo ano

REM Horas decorridas entre 1/10/99 at 4/10/99: Teste = DateDiff("h", #10/1/99#, #10/4/99#)Teste = 72

Se Data2 for menor que a Data1, o nmero de intervalos decorridos ser negativo. A opo Firstdayofweek afeta os clculos efetuados com base nos intervalos de tempo "w" (dia da semana) e "ww" (Semana). DatePart Categoria: Funes de Data e Hora Finalidade: Retorna a parte especificada de uma determinada data. Sintaxe: DatePart(Intervalo, Data[, Firstdayofweek[, Firstweekofyear]]) Em que: Intervalo - Expresso do tipo string indicando o intervalo de tempo que ser retornado pela funo. Veja a seo Ajustes em seguida. Data - A data a ser avaliada pela funo.

Funes Internas

Firstdayofweek - Uma constante que define o primeiro dia da semana. Caso voc no especifique, o domingo ser considerado como primeiro dia. Veja a seo ajustes, logo em seguida, para maiores detalhes. Firstweekofyear - Esta constante define a primeira semana do ano. Se voc no especificar este argumento, ser considerada como a primeira do ano a semana em que ocorre o dia 1o de janeiro. Ajustes: Esta funo utiliza os mesmos ajustes da funo DateDiff. Exemplo:
REM Calcula a semana atual da data indicada Teste = DatePart("ww", #10/4/99#) Teste = 41

DateSerial Categoria: Funes de Data e Hora Finalidade: Retorna a data para o dia, ms e ano especificados. Sintaxe: DateSerial(Ano, Ms, Dia) Em que: Ano - Nmero entre 100 e 9999 inclusive. Ms - Qualquer expresso numrica. Dia - Qualquer expresso numrica. Exemplo:
REM Retorna a data de 1 de maio de 1999 Teste = DateSerial(99, 5, 1) Teste = 01/05/99

DateValue Categoria: Funes de Data e Hora Finalidade: Retorna uma data. Sintaxe: DateValue(Data) Em que: Data - Expresso string representando uma data. O VB pode manipular datas que vo de 1/1/100 at 31/12/9999! Voc tambm pode utilizar qualquer expresso que represente data, hora ou ambas. Exemplo:
REM Converte uma string numa data Teste = DateValue("6/22/99") Teste = 22/06/99

Day Categoria: Funes de Data e Hora Finalidade: Retorna um nmero de 1 a 31 representando o dia do ms. Sintaxe: Day(Data) Exemplo:
Teste = Day(#4/10/99#) Teste = 10

DDB Categoria: Funes Financeiras Finalidade: Calcula a depreciao de um ativo pelo mtodo do Declnio de Balano. Sintaxe: DDB(Cost, Salvage, Life, Period[, Factor]) Em que: Cost - Custo inicial do bem. Salvage - Valor do bem ao final de sua vida til. Life - Vida til do bem. Period - Perodo de depreciao. Factor - Taxa de declnio do balano. Exemplo:
Teste = DDB(1000, 100, 5, 1) Teste = 400

Dir Categoria: Funes de Sistema Operacional Finalidade: Retorna o nome dos arquivos ou diretrios que combinam com o padro especificado ou atributo de arquivo, ou volume de um drive. Sintaxe: Dir[(Pathname[, Attributes])] Em que: Pathname - Expresso string que especifica o nome do arquivo. Essa string tambm pode conter o caminho completo (drive e diretrio) do arquivo procurado. Se o caminho no for encontrado, Null ser retornado. Attributes - Constante ou expresso numrica que indica os atributos do arquivo selecionado. Se omitido, somente sero retornados os arquivos normais, ou seja, arquivos ocultos de sistema e diretrios no sero exibidos. Ajustes: Ajuste Descrio 0 Normal 2 Hidden (Oculto) 4 System (Sistema) 8 Volume 16 Diretrio Exemplo:
Teste = Dir("C:\WINDOWS\WIN.INI") Teste = WIN.INI

Funes Internas

Para mltiplos arquivos: Teste = Dir("C:\WINDOWS\*.INI") List1.AddItem Teste Do While Teste <> Empty Teste = Dir List1.AddItem Teste Loop

Quando voc utiliza caracteres curinga como * e ?, o VB retorna o primeiro nome de arquivo que atende s condies de busca indicadas na funo Dir. A partir da, basta chamar a funo Dir sem argumentos para que os prximos arquivos que atendem condio proposta sejam exibidos. Quando no existirem mais arquivos, a funo Dir retornar uma string de comprimento zero. DoEvents Categoria: Funes de Sistema Operacional Finalidade: Interrompe momentaneamente a execuo de seu aplicativo para que o sistema operacional possa processar outros eventos pendentes. Sintaxe: DoEvents( ) Exemplo:
For a = 1 To 30000 If a Mod 1000 = 0 Then 'Se o loop foi repetido 1000 vezes. DoEvents 'Passa o controle para o sistema operacional. End If Next a

Quando seu aplicativo realiza tarefas muito demoradas, o sistema operacional deixa de processar a ocorrncia de alguns eventos, que ficam pendentes em uma fila de execuo. mais ou menos o que ocorre quando voc d dois cliques sobre o cone do VB para inicializ-lo. Enquanto o seu micro vai carregando este aplicativo, as teclas que voc est acionando e os cliques de mouse dados sobre a tela so ignorados pelo Windows. Depois que a sua aplicao j est carregada que o Windows processa os eventos pendentes. A funo DoEvents tambm retorna o nmero de formulrios abertos no Windows. Environ Categoria: Funes de Sistema Operacional Finalidade: Retorna a string associada a uma varivel de ambiente do sistema operacional (como Path e Prompt, por exemplo). Sintaxe: Environ({Envstring | Nmero}) Em que: Envstring - Expresso string contendo o nome da varivel de ambiente. Nmero - Expresso numrica correspondente ordem da varivel na tabela de variveis de ambiente. Exemplo:
Teste = Environ("PATH") REM Teste = C:\WINDOWS;C:\WINDOWS\COMMAND;C:\;C:\DOS;C:\UTIL Teste = Environ("TEMP") Teste = C:\WINDOWS\TEMP

Se a varivel de ambiente especificada no for encontrada, a funo Environ retornar uma string de comprimento zero. Error Categoria: Funes de Sistema Operacional Finalidade: Retorna a mensagem de erro que corresponde a um dado nmero de erro. Sintaxe: Error[(Errornumber)] Em que: Errornumber - Qualquer nmero de erro vlido para o Visual Basic. Um nmero de erro corresponde ao valor da propriedade Number do objeto Err, e seus valores vlidos vo de 0 a 65535, inclusive. Quando combinado com a propriedade Name do objeto Err, esse nmero representa uma mensagem de erro particular. Se Errornumber um nmero de erro vlido, porm indefinido, a funo Error retorna a string definida pelo usurio. Se Errornumber no um nmero de erro vlido, um erro ocorre. Se Errornumber omitido, a mensagem correspondente ao erro de Run-time mais recente exibida. Se nenhum erro de Run-time ocorreu recentemente ou o nmero do erro for 0, a funo Error retornar uma string de comprimento zero. Exemplo:
Teste = Error(5) Teste = Error(6) Teste = Error(7) Teste = Invalid procedure call Teste = Overflow Teste = Out of memory

Para erros indefinidos:


Teste = Error(4) Rem Teste = Application-defined or object-defined error

Exp Categoria: Funes Matemticas Finalidade: Retorna o valor de e (base de um logaritmo natural) elevado a uma potncia qualquer. Sintaxe: Exp(Nmero) Em que: Nmero - Qualquer expresso numrica vlida.

Funes Internas

Exemplo:
Teste = Exp(1) Teste = Exp(2) Teste = Exp(-2) Teste = 2.71828182845905 Teste = 7.38905609893065 Teste = 0.13533528323661

O valor de e aproximadamente 2,718282. Se o valor do nmero for superior a 709,782712893, ocorrer um erro de overflow. FileDateTime Categoria: Funes de Acesso a Arquivos Finalidade: Retorna a data e hora em que o arquivo foi criado ou modificado pela ltima vez. Sintaxe: FileDateTime(Pathname) Em que: Pathname - Expresso string que especifica o nome do arquivo. Essa string tambm pode conter o caminho completo (drive e diretrio) do arquivo procurado. Exemplo:
Teste = FileDateTime("C:\WINDOWS\WIN.COM") REM Teste = 15/05/98 20:01:00

FileLen Categoria: Funes de Acesso a Arquivos Finalidade: Retorna um valor Long contendo o tamanho do arquivo especificado em bytes. Sintaxe: FileLen(Pathname) Em que: Pathname - Expresso string que especifica o nome do arquivo. Essa string tambm pode conter o caminho completo (drive e diretrio) do arquivo procurado. Exemplo:
Teste = FileLen("C:\WINDOWS\WIN.COM") Teste = 25271

Fix Categoria: Funes Matemticas Finalidade: Retorna a parte inteira de um nmero. Sintaxe: Fix(Nmero) Em que: Nmero - Qualquer expresso numrica vlida. Se nmero contm Null, o valor de retorno ser Null tambm. Exemplo:
Teste = Fix(12.556) Teste = Fix(-12.556) Teste = Fix(1.6) Teste = 12 Teste = -12 Teste = 1

Format Categoria: Funes de Data e Hora Finalidade: Formata uma expresso de acordo com as instrues definidas pelo usurio. Sintaxe: Format(Expresso[, Formato[, Firstdayofweek[, Firstweekofyear]]]) Em que: Expresso - Qualquer expresso vlida. Formato - Uma expresso de formato definida pelo usurio. Veja na seo Ajustes em seguida, os formatos existentes. Firstdayofweek - Uma constante que define o primeiro dia da semana. Veja a funo DateDiff para maiores detalhes. Firstweekofyear - Esta constante define a primeira semana do ano. Veja a funo DateDiff para maiores detalhes. Ajustes: Nmeros: Nome do Formato Descrio General Number Exibe o nmero como ele , ou seja, sem separadores de milhares. Currency Exibe o nmero com separadores de milhares, smbolo de moeda e dois dgitos direita do ponto decimal. Fixed Exibe pelo menos um dgito esquerda e dois direita do ponto decimal. Standard Exibe o nmero com separadores de milhares, com pelo menos um dgito esquerda e dois direita do ponto decimal. Percent Exibe o nmero multiplicado por 100 e com o smbolo de porcentagem(%) exibido sua direita. Sempre exibe duas casas decimais. Scientific Usa a notao cientfica padro. Yes/No True/False On/Off Data e Hora: Nome do Formato General Date Exibe No se o nmero for zero. Caso contrrio, exibe Yes. Exibe False se o nmero for zero. Caso contrrio, exibe True. Exibe Off se o nmero for zero. Caso contrrio, exibe On. Descrio Para nmeros reais exibe a data e hora, como em 22/6/96 08:33 PM. Se o nmero no possuir nenhuma parte fracionria, exibe somente a data, como em 22/6/96. Se no houver parte inteira, exibe apenas a hora, como em 08:33 PM. A exibio da data Funes Internas

Long Date Medium Date Short Date Long Time Medium Time Short Time Exemplo:

obedece aos ajustes atuais de seu sistema. Exibe a data de acordo com o ajuste atual de seu sistema para datas longas. Ex. Sbado, 22 de junho de 1996. Exibe a data de acordo com o ajuste atual de seu sistema para datas mdias. Ex. 22-Jun-96. Exibe a data de acordo com o ajuste atual de seu sistema para datas curtas. Ex. 22/06/96. Exibe a hora de acordo com o ajuste atual de seu sistema para horas longas. Ex. 20:33:51. Exibe a hora de acordo com o ajuste atual de seu sistema para horas mdias. Ex. 08:33 PM. Exibe a hora de acordo com o ajuste atual de seu sistema para horas curtas. Ex. 20:33.

Teste = Format(12345678, General Number) REM Teste = 12345678 Teste = Format(12345678, Currency) REM Teste = R$12.345.678.00 Teste = Format(12345678, Fixed) REM Teste = 12345678.00 Teste = Format(12345678, Standard) REM Teste = 12.345.678.00 Teste = Format(12345678, Scientific) REM Teste = 1.23E+07 Teste = Format(12345678, Yes/No) REM Teste = Yes Teste = Format(#22/6/96#, Long Date) REM Teste = Sbado, 22 de Junho de 1996 Teste = Format(#22/6/96#, Medium Date) REM Teste = 22-Jun-96 Teste = Format(#22/6/96#, Short Date) REM Teste = 22/06/96 Teste = Format("20:33",Long Time) REM Teste = 20:33:00 Teste = Format("20:33",Medium Time) REM Teste = 08:33 PM Teste = Format("20:33",Short Time) REM Teste = 20:33

FV Categoria: Funes Financeiras Finalidade: Calcula o Valor Futuro de uma anuidade ou prestao. Sintaxe: FV(Rate, Nper, Pmt[, Pv[, Type]]) Em que: Rate - Taxa de juros no perodo. Nper - Nmero total de pagamentos. Pmt - Pagamento a ser feito em cada perodo. Pv - Valor presente de uma srie de pagamentos. Type - Nmero indicando quando os pagamentos sero feitos. Use 0 se os pagamentos ocorrem no fim do perodo e 1 se os pagamentos sero feitos antecipadamente. Se omitido, 0 assumido. Exemplo:
Rem Quanto obterei se depositar $100 por seis meses a REM uma taxa de 2% ao ms? Teste = FV(0.02, 6, -100) Teste = 630.81 Rem Resposta: $ 630.81

GetAttr Categoria: Funes de Acesso a Arquivos Finalidade: Retorna um nmero que representa os atributos de um arquivo ou diretrio. Sintaxe: GetAttr(Pathname) Em que: Pathname - Expresso string que especifica o nome do arquivo. Essa string tambm pode conter o caminho completo (drive e diretrio) do arquivo procurado. Se o caminho no for encontrado, Null ser retornado.

Funes Internas

Valores de Retorno: Valor 0 1 2 4 16 32 Exemplo:


Teste = GetAttr("C:\IO.SYS) Teste = 7 Rem O Arquivo IO.SYS Read-only, Hidden e System ao mesmo tempo Rem por isso 1 + 2 + 4 = 7 Teste = GetAttr("C:\WINDOWS") Teste = 16

Descrio Normal Read-Only (Somente Leitura) Hidden (Oculto) System (Sistema) Diretrio O arquivo foi alterado aps o ltimo backup

Hex Categoria: Funes de Converso de Dados Finalidade: Retorna uma string representando o valor hexadecimal de um nmero. Sintaxe: Hex(Nmero) Em que: Nmero - Qualquer expresso numrica vlida. Exemplo:
Teste = Hex(15) Teste = Hex(5) Teste = Hex(255) Teste = F Teste = 5 Teste = FF

Hour Categoria: Funes de Data e Hora Finalidade: Retorna o nmero da hora (de 0 a 23) de uma hora especificada. Sintaxe: Hour(Time) Em que: Time - Qualquer expresso numrica ou string que possa representar um intervalo de tempo. Se Time contm Null, o valor de retorno da funo ser Null tambm. Exemplo:
Teste = Hour(#8:33:17 PM#) Teste = 20

IIf Categoria: Funes de Verificao Finalidade: Retorna uma de duas partes, dependendo da avaliao de uma expresso. Sintaxe: IIf(Expresso, Truepart, Falsepart) Em que: Expresso - Expresso a ser avaliada. Truepart - Valor ou expresso retornada se a expresso avaliada for verdadeira. Falsepart - Valor ou expresso retornada se a expresso avaliada for falsa. Exemplo:
Dado = 100 Teste = IIf(Dado > 10, Maior que Dez,Menor que Dez) Rem Teste = Maior que Dez

InputBox Categoria: Funes de Sistema Operacional Finalidade: Exibe uma caixa de dilogo para que o usurio possa digitar uma resposta qualquer. Aps escolher um dos botes disponveis, o VB retorna o valor digitado. Sintaxe: InputBox(Prompt[, Title][, Default][, Xpos][, Ypos]) Em que: Prompt - Expresso string que ser exibida como mensagem na caixa de dilogo. O comprimento mximo da mensagem de 1024 caracteres. Voc pode quebrar a mensagem em vrias linhas utilizando a combinao de caracteres de retorno de carro Chr(13) e mudana de linha Chr(10), como em (Chr(13) & Chr(10)). Title - Expresso string que ser exibida na barra de ttulo da caixa de dilogo. Se voc omitir este argumento, o nome exibido na barra de ttulo ser o nome de sua aplicao. Default Expresso string que ser retornada como default caso o usurio no digite nenhum dado na caixa de dilogo. Se voc omitir este argumento, a textbox da caixa de dilogo ser exibida vazia. Xpos - Expresso numrica que especifica em twips a distncia horizontal entre a borda esquerda da tela e da caixa de dilogo. Se voc omitir este argumento, a caixa de dilogo ser centralizada horizontalmente. Ypos - Expresso numrica que especifica em twips a distncia vertical entre a borda superior da caixa de dilogo e o topo da tela. Se voc omitir este argumento, a caixa de dilogo ser centralizada verticalmente. InStr Categoria: Funes de Manipulao de Strings Finalidade: Retorna a posio da primeira ocorrncia de uma string dentro de outra. Sintaxe: InStr([Incio, ]String1, String2[, Compare]) Em que: Funes Internas

10

Incio - Expresso numrica que indica a posio inicial de cada busca. Se omitido, a busca comea desde a primeira posio. String1 - String em que feita a procura. String2 - Expresso string que est sendo procurada. Compare - Especifica o tipo de comparao a ser efetuado entre as strings. Exemplo:
Teste = InStr("Casa", "as") Teste = 2 Rem A string as foi localizada a partir da segunda posio em Casa Teste = InStr("Casamento", "t") Teste = 8 Rem A string t foi localizada na oitava posio de Casamento Teste = InStr("Casa", "z") Teste = 0 Rem A string z no foi localizada em Casa

Int Categoria: Funes Matemticas Finalidade: Retorna a parte inteira de um nmero. Sintaxe: Int(Nmero) Em que: Nmero - Qualquer expresso numrica vlida. Se nmero contm Null, o valor de retorno ser Null tambm. Exemplo: Esta funo opera de forma idntica funo Fix. IsArray Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se uma determinada varivel um Array. Sintaxe: IsArray(Varname) Em que: Varname - Qualquer varivel de memria. Exemplo:
Dim MeuArray(2) As Integer, Nome as String Teste = IsArray(Nome) Teste = False Teste = IsArray(MeuArray) Teste = True

IsDate Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se uma determinada expresso pode ser convertida em uma data. Sintaxe: IsDate(Expresso) Em que: Expresso - Qualquer data ou string que possa ser reconhecida como uma data ou hora vlida. Exemplo:
Dado = "22/6/96" Mens = hoje Teste = IsDate(Dado) Teste = IsDate(Mens) Teste = True Teste = False

IsEmpty Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se uma determinada varivel foi inicializada ou no. Sintaxe: IsEmpty(Expresso) Em que: Expresso - Qualquer expresso numrica ou string que possa ser reconhecida como um nome de varivel. Exemplo:
Teste = IsEmpty(Dado) Dado = Null Teste = IsEmpty(Dado) Teste = True Teste = False

IsError Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se uma determinada expresso um valor de erro. Sintaxe: IsError(Expresso) Em que: Expresso - Deve ser do tipo de dados Variant. Exemplo:
MeuErro = CVErr(212) Teste = IsError(MeuErro) MeuErro = 212 Teste = IsError(MeuErro) ' Teste = True ' Teste = False

IsMissing Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se um argumento opcional foi passado para uma procedure ou no. Sintaxe: IsMissing(Nome do Argumento) Em que:

Funes Internas

11

Nome do Argumento - Nome de um argumento opcional em uma procedure. A funo IsMissing retorna um valor True se o argumento especificado no foi passado funo; caso contrrio, a resposta ser False. Exemplo:
Function Calcula(Optional Valor) If IsMissing(valor) Then MsgBox(No recebi o argumento valor!) Exit Else Valor = ((Valor / 100) + 1) ^ 1.12 Calcula = Valor End If End Function

IsNull Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se uma expresso contm dados invlidos (Null). Sintaxe: IsNull(Expresso) Em que: Expresso - Qualquer valor numrico ou expresso string. Se a expresso avaliada tiver dados invlidos (Null), a funo resultar em True; caso contrrio, o valor retornado ser False. Exemplo:
Dado = "" Teste = IsNull(Dado) Dado = Null Teste = IsNull(Dado) 'Teste = False 'Teste = True.

IsNumeric Categoria: Funes de Verificao Finalidade: Retorna um valor Boolean indicando se uma determinada expresso pode ser avaliada como um valor numrico. Sintaxe: IsNumeric(Expresso) Em que: Expresso - Qualquer valor numrico ou expresso string. Exemplo:
Dado = "100" Teste = IsNumeric(Dado) Dado = "cem " Teste = IsNumeric(Dado) 'Teste = True 'Teste = False

LBound Categoria: Funes de Array Finalidade: Retorna o menor elemento da dimenso especificada de um determinado Array. Sintaxe: LBound(Arrayname[, Dimenso]) Em que: Arrayname - Nome da varivel array. Dimenso - Nmero que indica que dimenso do array est sendo inspecionada. Utilize 1 para a primeira dimenso, 2 para a segunda e assim por diante. Exemplo:
Dim Dado(5 To 10) Teste = LBound(Dado, 1) Teste = 5

LCase Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma string convertida em letras minsculas. Sintaxe: LCase(String) Em que: String - Qualquer expresso string vlida. Somente as letras maisculas sero convertidas em minsculas. Os demais caracteres, como letras minsculas, nmeros e sinais, permanecem inalterados. Exemplo:
Dado = CAIXA ALTA Teste = LCase(Dado) Teste = caixa alta

Left Categoria: Funes de Manipulao de Strings Finalidade: Retorna o nmero especificado de caracteres a partir do lado esquerdo de uma string. Sintaxe: Left(String, Comprimento) Em que: String - Expresso string da qual os caracteres sero retornados. Comprimento - Expresso numrica indicando quantos caracteres sero retornados. Se igual a 0, uma string de tamanho zero ser retornada. Se o comprimento for maior que o nmero de caracteres da string, toda ela ser retornada.

Funes Internas

12

Exemplo:
Dado = "Visual Basic 4.0 Teste = Left(Dado, 1) Teste = Left(Dado, 6) Teste = Left(Dado, 10) Teste = V Teste = Visual Teste = Visual Bas

Len Categoria: Funes de Manipulao de Strings Finalidade: Retorna o nmero de caracteres em uma string ou o nmero de bytes requeridos para armazenar uma varivel. Sintaxe: Len(String | Varname) Em que: String - Qualquer expresso string vlida. Se a string contm Null, Null retornado. Varname - Qualquer nome de varivel vlido. Se Varname contm Null, Null retornado. Se Varname do tipo de dados Variant, Len trata a varivel como uma string, retornando o nmero de caracteres que ela contm. Exemplo:
Dado = Estudo de Len Teste = Len (Dado) Teste = Len(Visual) Teste = Len(Visual Basic) Teste = 13 Teste = 6 Teste = 12

LoadPicture Categoria: Funes de Sistema Operacional Finalidade: Carrega uma imagem dentro de um objeto Form object, Controle PictureBox ou controle Image. Sintaxe: LoadPicture([Stringexpression]) Em que: Stringexpression - Nome do arquivo grfico a ser carregado. Os formatos de arquivo suportados pelo Visual Basic so os seguintes: Bitmap (.BMP), Icon (.ICO), Run-Length Encoded (.RLE) e Metafile (.WMF). Exemplo:
Rem Para exibir a imagem como fundo de um Form, PictureBox ou controle Rem Image atribua a figura propriedade Picture. Form1.Picture = LoadPicture("PARTY.BMP") Rem Para atribuir um cone a um formulrio ajuste a propriedade Icon: Form1.Icon = LoadPicture("PHONE01.ICO")

Log Categoria: Funes Matemticas Finalidade: Calcula o logaritmo natural de um nmero. Sintaxe: Log(Nmero) Em que: Nmero - Qualquer expresso numrica vlida maior que zero. Exemplo:
Teste = Log(0) Teste = Log(5) Teste = 1 Teste = 1.6094379124341

LTrim Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma cpia de uma string eliminando os espaos em branco existentes entre o incio da string e o primeiro caractere. Sintaxe: LTrim(String) Em que: String - Qualquer expresso string vlida. Se a string contm Null, Null retornado. Exemplo:
Dado = Casa Teste = LTrim(Dado) Teste = Casa

Mid Categoria: Funes de Manipulao de Strings Finalidade: Retorna o nmero especificado de caracteres de uma string. Sintaxe: Mid(String, Start[, Length]) Em que: String - Qualquer expresso string vlida. Se a string contm Null, Null retornado. Start - Posio inicial a partir da qual os caracteres sero selecionados. Se a posio inicial for maior que o nmero de caracteres da string, uma string de tamanho zero ser retornada. Length - Nmero de caracteres que sero selecionados. Se omitido, todos os caracteres desde a posio inicial especificada at o fim dela sero selecionados. Exemplo:
Dado = Visual Basic Teste = Mid(Dado,1, 3) Teste = Mid(Dado,4) Teste = Mid(Dado,5,5) Teste = Vis Teste = ual Basic Teste = al Ba

Minute Categoria: Funes de Data e Hora Finalidade: Retorna o nmero de minutos da hora especificada (de 0 a 59)

Funes Internas

13

Sintaxe: Minute(Time) Em que: Time - Qualquer expresso numrica ou string que possa representar um intervalo de tempo. Se Time contm Null, o valor de retorno da funo ser Null tambm. Exemplo:
Teste = Minute(#8:33:17 PM#) Teste = 33

Month Categoria: Funes de Data e Hora Finalidade: Retorna o nmero do ms de uma determinada data (de 1 a 12). Sintaxe: Month(Data) Em que: Data - A data a ser avaliada pela funo. Exemplo:
Teste = Month(#22/06/96#) Teste = 6

MsgBox Categoria: Funes de Sistema Operacional Finalidade: Exibe uma mensagem em um quadro de dilogo e espera que o usurio escolha um dos botes disponveis. Aps a seleo, o VB retorna um valor indicando o boto escolhido. Sintaxe: MsgBox(Prompt[, Buttons][, Title]) Em que: Prompt - Expresso string que ser exibida como mensagem na caixa de dilogo. O comprimento mximo da mensagem de 1024 caracteres. Voc pode quebrar a mensagem em vrias linhas, utilizando a combinao de caracteres de retorno de carro Chr(13) e mudana de linha Chr(10), como em (Chr(13) & Chr(10)). Buttons - Expresso numrica que a soma dos valores que especificam o nmero e tipo de botes a serem exibidos. Voc tambm pode especificar o estilo de cone a ser usado, o boto default e a modalidade da caixa de mensagem. Se omitido, o valor default para os botes zero. Title - Expresso string que ser exibida na barra de ttulo da caixa de dilogo. Se voc omitir este argumento, o nome exibido na barra de ttulo ser o nome de sua aplicao. Ajustes: Aparncia: Ajuste Descrio 0 Exibe somente o boto OK (default) 1 Exibe botes OK e Cancel 2 Exibe botes Abort, Retry e Ignore 3 Exibe Yes, No e Cancel 4 Exibe os botes Yes e No 5 Exibe Retry e Cancel 16 32 48 64 0 256 512 0 4096 Exibe cone de Parada Crtica Exibe cone de Pergunta Exibe cone de Ateno Exibe cone de Informao O primeiro boto default O segundo boto default O terceiro boto default Aplicao modal. O usurio deve responder mensagem exibida antes de prosseguir com a execuo da aplicao atual. Sistema modal. Todas as aplicaes so suspensas at o usurio responder message box.

O primeiro grupo de valores descreve o nmero e o tipo de botes exibidos. O segundo grupo (16, 32, 48, 64) descreve o estilo do cone exibido. O terceiro grupo (0, 256, 512) determina que boto o default. O quarto e ltimo grupo (0, 4096) determina a modalidade da caixa de dilogo. Voc deve selecionar um nmero de cada grupo e somar todos para obter a aparncia desejada para sua Message Box. Valores de Retorno: Valor Boto Escolhido 1 OK 2 Cancel 3 Abort 4 Retry 5 Ignore 6 Yes 7 No Exemplo:
Rem Exibe botes OK e Cancel e cone de Parada Crtica

Funes Internas

14

Teste = MsgBox("Teste", 17, "MsgBox") Rem Exibe Yes/No numa janela de Ateno com o primeiro boto default Teste = MsgBox("Teste", 68, "MsgBox")

Now Categoria: Funes de Data e Hora Finalidade: Retorna a data e hora atuais do seu sistema. Sintaxe: Now Exemplo:
Teste = Now Teste = 22/06/96 20:33:30

Oct Categoria: Funes de Converso de Dados Finalidade: Retorna uma string representando o valor octal de um nmero. Sintaxe: Oct(Nmero) Em que: Nmero - Qualquer expresso numrica ou string vlida. Exemplo:
Teste = Oct(8) Teste = Oct(459) 'Teste = 10 'Teste = 713

QBColor Categoria: Funes de Sistema Operacional Finalidade: Retorna o valor da cor RGB correspondente ao nmero de cor informado. Sintaxe: QBColor(cor) Em que: Cor - Nmero de 0 a 15 conforme descrito na seo ajustes. Ajustes: Nmero Cor Nmero Cor 0 Black 8 Gray 1 Blue 9 Light Blue 2 Green 10 Light Green 3 Cyan 11 Light Cyan 4 Red 12 Light Red 5 Magenta 13 Light Magenta 6 Yellow 14 Light Yellow 7 White 15 Bright White Exemplo:
Form1.BackColor = QBColor(Cor)

RGB Categoria: Funes de Sistema Operacional Finalidade: Retorna um nmero representando uma cor do padro RGB. Sintaxe: RGB (Red, Green, Blue) Em que: Red - Nmero entre 0 to 255, inclusive, que representa o componente vermelho de uma cor. Green - Nmero entre 0 to 255, inclusive, que representa o componente verde de uma cor. Blue - Nmero entre 0 to 255, inclusive, que representa o componente azul de uma cor. Exemplo:
Commdialog.Color = RGB(255, 0, 0)

Right Categoria: Funes de Manipulao de Strings Finalidade: Retorna o nmero especificado de caracteres a partir do lado direito de uma string. Sintaxe: Right(String, Comprimento) Em que: String - Expresso string da qual os caracteres sero retornados. Comprimento - Expresso numrica indicando quantos caracteres sero retornados. Se igual a 0, uma string de tamanho zero ser retornada. Se o comprimento for maior que o nmero de caracteres da string, toda ela ser retornada. Exemplo:
Dado = "Visual Basic 4.0 Teste = Right(Dado, 1) Teste = Right(Dado, 6) Teste = Right(Dado, 10) Teste = 0 Teste = ic 4.0 Teste = Basic 4.0

Rnd Categoria: Funes Matemticas Finalidade: Retorna um nmero aleatrio (randmico). Sintaxe: Rnd[(Nmero)] Em que: Nmero - Qualquer expresso numrica vlida. Funes Internas

15

Esta funo retorna um valor menor que 1 e maior ou igual a zero. Exemplo:
Teste = Rnd

Rtrim Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma cpia de uma string, eliminando os espaos existentes entre o ltimo caractere da string e o fim dela. Sintaxe: RTrim(String) Em que: String - Qualquer expresso string vlida. Se a string contm Null, Null retornado. Exemplo:
Dado = Casa Teste = LTrim(Dado) Teste = Casa

Second Categoria: Funes de Data e Hora Finalidade: Retorna o nmero de segundos da hora especificada (de 0 a 59). Sintaxe: Second(Time) Em que: Time - Qualquer expresso numrica ou string que possa representar um intervalo de tempo. Se Time contm Null, o valor de retorno da funo ser Null tambm. Exemplo:
Teste = Second(#8:33:17 PM#) Teste = 17

Sgn Categoria: Funes Matemticas Finalidade: Retorna um inteiro conforme o sinal do nmero. Sintaxe: Sgn(Nmero) Em que: Nmero - Qualquer expresso numrica vlida. Ajustes: Se Nmero: Sgn Retorna: Maior que zero 1 Igual a zero 0 menor que zero -1 Exemplo:
Teste = Sgn(12) Teste = Sgn(-2.4) Teste = Sgn(0) ' Teste = 1 ' Teste = -1 ' Teste = 0

Shell Categoria: Funes de Sistema Operacional Finalidade: Inicia a execuo de um programa qualquer. Sintaxe: Shell(Pathname[, Windowstyle]) Em que: Pathname - Nome do programa a ser executado. Pode incluir eventuais argumentos na linha de comando. Tambm pode incluir o diretrio e drive onde est localizado o executvel. Voc tambm pode informar o nome do documento se ele tiver sua extenso associada a um executvel no Windows (exemplo: .TXT abre o Notepad). Windowstyle - Nmero que corresponde ao estilo da janela em que o programa ser executado. Se omitido, o programa ser executado minimizado. Ajustes: Valor Descrio 0 A janela oculta e o foco passado para essa janela. 1 A janela tem o foco e restaurada para seu tamanho e posio originais. 2 A janela exibida como um cone com foco. 3 A janela maximizada com foco. 4 A janela restaurada ao seu mais recente tamanho e posio. A janela corrente permanece ativa. 6 A janela exibida como um cone. A janela corrente permanece ativa. Exemplo:
Teste = Shell("C:\WINDOWS\NOTEPAD.EXE", 1)

Sin Categoria: Funes Matemticas Finalidade: Calcula o seno de um nmero. Sintaxe: Sin(Nmero) Em que:

Funes Internas

16

Nmero - Qualquer expresso numrica vlida que expresse um ngulo em radianos. Exemplo:
Teste = Sin(1.25) Teste = Sin(.79) Teste = 0.948984619355586 Teste = 0.710353272417608

Space Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma string com o nmero de espaos em branco especificado pelo usurio. Sintaxe: Space(Nmero) Em que: Nmero - A quantidade de espaos em branco que voc quer incluir na string. Exemplo:
Dado = Passo Teste = Dado & Space(2) & Dado Teste = Passo Passo

Sqr Categoria: Funes Matemticas Finalidade: Calcula a raiz quadrada de um nmero. Sintaxe: Sqr(Nmero) Em que: Nmero - Qualquer expresso numrica vlida maior ou igual a zero. Exemplo:
Teste = Sqr(16) Teste = 4

Str Categoria: Funes de Converso de Dados Finalidade: Retorna uma string representando o valor de um nmero. Sintaxe: Str(Nmero) Em que: Nmero - Qualquer expresso numrica vlida. Exemplo:
Teste = Str(123) Teste = Str(2000) ' Teste = " 123" ' Teste = "2000

StrComp Categoria: Funes de Manipulao de Strings Finalidade: Retorna um valor indicando o resultado de uma comparao de strings (se maior, igual ou menor). Sintaxe: StrComp(String1, String2[, Compare]) Em que: String1 - Qualquer expresso string vlida. String2 - Qualquer expresso string vlida. Compare - Especifica o tipo de comparao a ser efetuado. Ajustes: Se: StrComp Retorna: String1 Menor que String2 -1 String1 igual String2 0 String1 maior que String2 1 String1 ou String2 Null Null Exemplo:
Dado1 = "ABCD" Dado2 = "abcd" Teste = StrComp(Dado1, Dado2, 1) Teste = StrComp(Dado1, Dado2, 0) Teste = StrComp(Dado2, Dado1) ' Teste = 0. ' Teste = -1. ' Teste = 1.

StrConv Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma string convertida de acordo com a operao especificada pelo usurio. Sintaxe: StrConv(String, Conversion) Em que: String - A string a ser convertida. Conversion - A soma dos valores que especificam o tipo da converso a ser feita. Ajustes: Valor Descrio 1 Converte a string em caracteres maisculos. 2 Converte a string em caracteres minsculos. 3 Converte a primeira letra de cada palavra da string em maiscula. Exemplo:
Dado = visual basic Teste = StrConv(dado, 3) Teste = Visual Basic

Funes Internas

17

String Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma string com caracteres repetidos no comprimento especificado pelo usurio. Sintaxe: String(Nmero, Caractere) Em que: Nmero - Comprimento da string a ser retornada. Caractere - Cdigo do caractere ou expresso string cujo primeiro caractere ser utilizado para construo da nova string. Exemplo:
Teste = String(5, "*") Teste = String(5, 42) Teste = String(10, "ABC") 'Teste = "*****" 'Teste = "*****". 'Teste = "AAAAAAAAAA".

Tan Categoria: Funes Matemticas Finalidade: Calcula a tangente de um nmero. Sintaxe: Tan(Nmero) Em que: Nmero - Qualquer expresso numrica vlida que expresse um ngulo em radianos. Exemplo:
Teste = Tan(.79) Teste = 1.00924628838275

Time Categoria: Funes de Data e Hora Finalidade: Retorna a hora atual do sistema. Sintaxe: Time Exemplo:
Teste = Time Teste = 23:44:07

Timer Categoria: Funes de Data e Hora Finalidade: Retorna o nmero de segundos decorridos desde 0:00h (de 0 a 59). Sintaxe: Timer Exemplo:
Teste = Timer Teste = 85591.6

TimeSerial Categoria: Funes de Data e Hora Finalidade: Retorna um Variant com o valor da hora, minuto e segundo especificado. Sintaxe: TimeSerial(Hora, Minuto, Segundo) Em que: Hora - Nmero entre 0 e 23 inclusive. Minuto - Qualquer expresso numrica. Segundo - Qualquer expresso numrica. Exemplo:
REM Retorna a hh:mm:ss de 20:13:45 Teste = TimeSerial(20, 13, 45) Teste = 20:13:45

TimeValue Categoria: Funes de Data e Hora Finalidade: Retorna um valor de hora. Sintaxe: TimeValue(Tempo) Em que: Tempo - Expresso string representando uma hora entre 0:00:00 e 23:59:59 inclusive. Voc tambm pode utilizar qualquer expresso que represente uma indicao de tempo dentro da faixa de valores vlidos. O VB tambm aceita a notao AM/PM como em 2:00PM. Exemplo:
REM Converte uma string num horrio Teste = TimeValue("14:00:23") Teste = 14:00:23

Trim Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma cpia de uma string, eliminando os espaos existentes entre o incio da string e o primeiro caractere, e o ltimo caractere da string e o fim dela. Sintaxe: Trim(String) Em que: String - Qualquer expresso string vlida. Se a string contm Null, Null retornado. Exemplo:
Dado = Casa Teste = LTrim(Dado) Teste = Casa

TypeName Categoria: Funes de Verificao Finalidade: Retorna uma string que informa qual o tipo de dados da varivel analisada. Sintaxe: TypeName(Varname)

Funes Internas

18

Em que: Varname - Qualquer varivel de memria. Ajustes: String Retornada: Byte Integer Long Single Double Currency Date String Boolean Error Empty Null Object Exemplo:
Dim Dado As Integer Teste = TypeName(Dado)

Varivel Contm: Byte Integer Long integer Single Double Currency Date String Boolean Um valor de erro No inicializada Dado Invlido Um objeto que suporta OLE

Teste = Integer

Ubound Categoria: Funes de Array Finalidade: Retorna o maior elemento da dimenso especificada de um determinado array. Sintaxe: UBound(Arrayname[, Dimenso]) Em que: Arrayname - Nome da varivel array. Dimenso - Nmero que indica que dimenso do array est sendo inspecionada. Utilize 1 para a primeira dimenso, 2 para a segunda e assim por diante. Exemplo:
Dim Dado(5 To 10) Teste = UBound(Dado, 1) Teste = 10

UCase Categoria: Funes de Manipulao de Strings Finalidade: Retorna uma string convertida em letras maisculas. Sintaxe: UCase(String) Em que: String - Qualquer expresso string vlida. Somente as letras minsculas sero convertidas em maisculas. Os demais caracteres, como nmeros e sinais, permanecem inalterados. Exemplo:
Dado = caixa alta Teste = UCase(Dado) Teste = CAIXA ALTA

Val Categoria: Funes de Converso de Dados Finalidade: Retorna os nmeros contidos em uma string. Sintaxe: Val(String) Em que: String - Qualquer expresso string vlida. Exemplo:
Teste = Val("2457") Teste = Val(" 2 45 7") Teste = Val("24 and 57") 'Teste = 2457. 'Teste = 2457. 'Teste = 24.

VarType Categoria: Funes de Verificao Finalidade: Retorna um valor indicando o subtipo de uma varivel. Sintaxe: VarType(Varname) Em que: Varname - Qualquer varivel de memria vlida. Ajustes: Valor Descrio da Varivel 0 Empty 1 Null 2 Integer 3 Long integer 4 Single 5 Double 6 Currency

Funes Internas

19

7 8 9 10 11 12 13 17 8192 Exemplo:
Dim Dado As Integer Teste = VarType(Dado)

Date String OLE Automation object Error Boolean Variant (usada somente com arrays de Variants) No OLE Automation object Byte Array

Teste = 2

Weekday Categoria: Funes de Data e Hora Finalidade: Retorna o nmero do dia da semana (1 - Domingo, etc.). Sintaxe: Weekday(Data, [Firstdayofweek]) Em que: Data - Expresso string ou numrica representando uma data. Se Data contm Null, Null retornado. Firstdayofweek - Uma constante que define o primeiro dia da semana. Caso voc no especifique, o domingo ser considerado como primeiro dia. Veja a seo Ajustes da funo DateDiff para maiores detalhes. Exemplo:
Teste = WeekDay(#6/22/96#) Teste = 7

Year Categoria: Funes de Data e Hora Finalidade: Retorna o nmero do ano de uma determinada data. Sintaxe: Year(Data) Em que: Data - Expresso string ou numrica representando uma data. Se Data contm Null, Null retornado. Exemplo:
Teste = Year(#6/22/96#) Teste = 1996

Coleo de Exemplos e definies de FUNES VB 5


Funes Internas

20

Funes Internas

21

Exemplo da diretiva #Const Este exemplo utiliza a diretiva #Const para declarar constantes de compilao condicional para uso em construes #If...#Else...#End If. #Const DebugVersion = 1 ' Avaliar verdadeiro no bloco #If. Exemplo da construo #If...Then...#Else Este exemplo faz referncia a constantes de compilao condicional em uma construo #If...Then...#Else para determinar se certas instrues sero compiladas. ' Se Mac avalia como verdadeiro, as instrues que se seguem a #If tambm o fazem. #If Mac Then '. Insere aqui exclusivamente instrues Mac. '. '. ' Caso contrrio, se for um programa do Windows de 32 bits, faz o seguinte: #ElseIf Win32 Then '. Insere aqui exclusivamente instrues do Windows de 32 bits. '. '. ' Caso contrrio, se no for uma coisa nem outra, faz o seguinte: #Else '. Insere aqui outras instrues de plataforma. '. '. #End If

Diretiva #Const
Utilizada para definir constantes condicionais do compilador no Visual Basic. Sintaxe #Const nomedaconst = expresso A sintaxe da diretiva de compilador #Const possui estas partes: Parte Descrio nomedaconstante Obrigatria; Variant (String). Nome da constante; obedece as convenes padronizadas para nomenclatura de varivel. expresso Obrigatria. Literal, outra constante condicional do compilador, ou qualquer combinao que inclua algum ou todos os operadores aritmticos ou lgicos, exceto Is.
u

Comentrios As constantes condicionais do compilador so sempre Private para o mdulo no qual aparecem. No possvel criar constantes do compilador Public utilizando a diretiva #Const. Constantes do compilador Public s podem ser criadas na interface do usurio. Somente constantes condicionais do compilador e literais podem ser utilizadas em expresso. A utilizao de uma constante padro definida com Const ou de uma constante indefinida causar a ocorrncia de um erro. Contrariamente, as constantes definidas utilizando-se a palavra-chave #Const podem ser utilizadas somente para compilao condicional. As constantes condicionais do compilador so sempre avaliadas no nvel do mdulo, independentemente da sua posio no cdigo.

Diretiva #If...Then...#Else
Compila condicionalmente blocos selecionados do cdigo do Visual Basic. Sintaxe #If expresso Then instrues [#ElseIf expresso-n Then [instrueselseif]] [#Else [instrueselse]] #End If A sintaxe da diretiva #If...Then...#Else possui estas partes: Parte Descrio expresso Obrigatria. Qualquer expresso, consistindo exclusivamente de uma ou mais constantes condicionais do compilador, literais e operadores que so avaliados como True ou False.

Funes Internas

22

instrues

Obrigatria. Linhas de programa ou diretivas de compilador do Visual Basic que so avaliadas se a expresso associada for True. Opcional. Qualquer expresso, consistindo exclusivamente de uma ou mais constantes condicionais do compilador, literais e operadores que so avaliados como True ou False. Opcional. Uma ou mais linhas de programa ou diretivas de compilador que sero avaliadas se expresso-n for True. Opcional. Uma ou mais linhas de programa ou diretivas de compilador que sero avaliadas se nenhuma expresso ou expresso-n anterior for True.

expresso-n instrueselseif instrueselse

Comentrios O comportamento da diretiva #If...Then...#Else igual ao da instruo If...Then...Else, exceto que no h um formulrio de linha nica para as diretivas #If, #Else, #ElseIf e #End If; isto , nenhum outro cdigo pode aparecer na mesma linha que qualquer das diretivas. A compilao condicional normalmente utilizada para compilar o mesmo programa para plataformas diferentes. Tambm utilizada para evitar que o cdigo de depurao aparea em um arquivo executvel. O cdigo excludo durante a compilao condicional omitido completamente do arquivo executvel final e, desta forma, ele no afeta seu tamanho ou desempenho. Independentemente do resultado de qualquer avaliao, todas as expresses so avaliadas. Portanto, todas as constantes utilizadas em expresses devem ser definidas; qualquer constante no definida avaliada como Empty. Observao A instruo Option Compare no afeta expresses em instrues #If e #ElseIf. Expresses em uma diretiva de compilador condicional so sempre avaliadas com Option Compare Text.

Constantes do Visual Basic


O Visual Basic para Aplicativos define as constantes para simplificar sua programao. As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais:

Constantes do calendrio
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbCalGreg 0 Indica que o calendrio gregoriano utilizado vbCalHijri 1 Indica que o calendrio Hijri utilizado

Constantes do compilador
O Visual Basic para Aplicativos define as constantes para utilizao exclusiva com a diretiva #If...Then...#Else. Essas constantes so funcionalmente equivalentes s constantes definidas com a diretiva #If...Then...#Else, exceto que elas so globais no que se refere ao escopo; isto , elas se aplicam a todo o projeto. Em plataformas de desenvolvimento de 16 bits, as constantes do compilador so definidas da seguinte maneira: Constante Valor Descrio Win16 True Indica que o ambiente de desenvolvimento de 16 bits. Win32 False Indica que o ambiente de desenvolvimento no de 32 bits. Em plataformas de desenvolvimento de 32 bits, as constantes do compilador so definidas da seguinte maneira: Constante Valor Descrio Win16 False Indica que o ambiente de desenvolvimento no de 16 bits. Win32 True Indica que o ambiente de desenvolvimento de 32 bits. Observao Essas constantes so fornecidas pelo Visual Basic. Sendo assim voc no pode definir suas prprias constantes com esses mesmos nomes em qualquer nvel.

Funes Internas

23

Constantes Date
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Valores do argumento O argumento primeirodiadasemana possui os valores a seguir: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. VbSunday 1 Domingo (padro) vbMonday 2 Segunda vbTuesday 3 Tera vbWednesday 4 Quarta vbThursday 5 Quinta vbFriday 6 Sexta vbSaturday 7 Sbado O argumento primeirodiadoano possui os valores a seguir: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. VbFirstJan1 1 Inicia com a semana na qual ocorre o dia 1 de janeiro (padro). VbFirstFourDays 2 Inicia com a primeira semana que possui pelo menos quatro dias do ano novo. VbFirstFullWeek 3 Inicia com a primeira semana completa do ano. Valores de retorno Constante vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday Valor 1 2 3 4 5 6 7 Descrio Domingo Segunda Tera Quarta Quinta Sexta Sbado

Constantes Dir, GetAttr e SetAttr


As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbNormal 0 Normal (padro de Dir e SetAttr) vbReadOnly 1 Somente leitura vbHidden 2 Oculto vbSystem 4 Arquivo do sistema vbVolume 8 Rtulo do volume vbDirectory 16 Diretrio ou pasta vbArchive 32 O arquivo foi alterado desde o ltimo backup

Constantes IMEStatus
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: As constantes referentes localidade japonesa so as seguintes: Constante Valor Descrio vbIMENoOp 0 Nenhum IME instalado vbIMEOn 1 IME ligado vbIMEOff 2 IME desligado vbIMEDisable 3 IME desativado vbIMEHiragana 4 Caracteres de duplo byte Hiragana (DBC) vbIMEKatakanaDbl 5 Katakana DBC vbIMEKatakanaSng 6 Caracteres de byte simples Katakana (SBC) vbIMEAlphaDbl 7 DBC alfanumrico vbIMEAlphaSng 8 SBC alfanumrico As constantes para a localidade chinesa (em chins tradicional e simplificado) so as seguintes: Constante Valor Descrio vbIMENoOp 0 Nenhum IME instalado vbIMEOn 1 IME ligado vbIMEOff 2 IME desligado Para a localidade coreana, os cinco primeiros bits do valor de retorno so os seguintes: Bit Valor Descrio Valor Descrio 0 0 Nenhum IME instalado 1 IME instalado 1 0 IME desativado 1 IME ativado 2 0 Modo ingls IME 1 Modo Hangeul 3 0 Modo Banja (SBC) 1 Modo Junja (DBC)

Funes Internas

24

Modo normal

Modo de converso Hanja

Constantes Instr e StrComp


As constantes a seguir so definidas na biblioteca de tipos do Visual Basic para Aplicativos e podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbBinaryCompare 0 Realiza a comparao binria vbTextCompare 1 Realiza a comparao textual vbDatabaseCompare 2 Para o Microsoft Access, realiza a comparao baseada nas informaes contidas em seu banco de dados.

Constantes diversas
As constantes a seguir so definidas na biblioteca de tipos do Visual Basic para Aplicativos e podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Equivalente Descrio vbCrLf Chr(13) + Chr(10) Combinao de retorno de carro e alimentao de linha vbCr Chr(13) Caractere de retorno de carro vbLf Chr(10) Caractere de alimentao de linha vbNewLine Chr(13) + Chr(10) ouCaractere de linha nova especfico de uma Chr(13) plataforma; aquele que seja apropriado plataforma atual vbNullChar Chr(0) Caractere que possui o valor 0 vbNullString Seqncia contendo oNo o mesmo que a seqncia de valor 0 comprimento zero (""); utilizada para chamar procedimentos externos vbTab Chr(9) Caractere de tabulao vbBack Chr(8) Caractere de backspace vbFormFeed Chr(12) No til no Microsoft Windows vbVerticalTab Chr(11) No til no Microsoft Windows

Constantes MsgBox
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Argumentos MsgBox Constante Valor Descrio vbOKOnly 0 Apenas o boto OK (padro) vbOKCancel 1 Botes OK e Cancelar vbAbortRetryIgnore 2 Botes Anular, Repetir e Ignorar vbYesNoCancel 3 Botes Sim, No e Cancelar vbYesNo 4 Botes Sim e No vbRetryCancel 5 Botes Repetir e Cancelar vbCritical 16 Mensagem crtica vbQuestion 32 Consulta de aviso vbExclamation 48 Mensagem de aviso vbInformation 64 Mensagem de informao vbDefaultButton1 0 Primeiro boto o padro (padro) vbDefaultButton2 256 Segundo boto o padro vbDefaultButton3 512 Terceiro boto o padro vbDefaultButton4 768 Quarto boto o padro vbApplicationModal 0 Caixa de mensagem relativa ao modo do aplicativo (padro) vbSystemModal 4096 Caixa de mensagem relativa ao modo do sistema Valores de retorno de MsgBox Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valor 1 2 3 4 5 6 7 Descrio Boto OK pressionado Boto Cancelar pressionado Boto Anular pressionado Boto Repetir pressionado Boto Ignorar pressionado Boto Sim pressionado Boto No pressionado

Funes Internas

25

Constantes Shell
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbHide 0 A janela est oculta e o foco passado para a janela oculta. vbNormalFocus 1 A janela recebe o foco e restaurada para seu tamanho e posio originais. vbMinimizedFocus 2 A janela exibida como um cone com o foco sobre ela. vbMaximizedFocus 3 A janela maximizada com o foco. vbNormalNoFocus 4 A janela restaurada para o tamanho e posio mais recentes. A janela atualmente ativa permanece ativa. vbMinimizeNoFocus 6 A janela exibida como um cone. A janela atualmente ativa permanece ativa.

Constantes StrConv
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbUpperCase 1 Converte a seqncia em caracteres maisculos. VbLowerCase 2 Converte a seqncia em caracteres minsculos. VbProperCase 3 Converte a primeira letra de cada palavra da seqncia em maisculas. VbWide 4 Converte os caracteres estreitos (de byte simples) da seqncia em caracteres largos (de byte duplo). Aplicvel s localidades do oriente. VbNarrow 8 Converte os caracteres largos (de byte duplo) da seqncia em caracteres estreitos (de byte simples). Aplicvel s localidades do oriente. VbKatakana 16 Converte caracteres Hiragana da seqncia em caracteres Katakana. Aplicvel apenas ao Japo. vbHiragana 32 Converte os caracteres Katakana da seqncia em caracteres Hiragana. Aplicvel apenas ao Japo. vbUnicode 64 Converte a seqncia para Unicode utilizando a pgina de cdigo padro do sistema. vbFromUnicode 128 Converte a seqncia de Unicode para a pgina de cdigos padro do sistema.

Constantes VarType
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbEmpty 0 No-inicializada (padro) vbNull 1 No contm dados vlidos vbInteger 2 Integer vbLong 3 Inteiro longo vbSingle 4 Nmero de vrgula flutuante de preciso nica vbDouble 5 Nmero de vrgula flutuante de preciso dupla vbCurrency 6 Currency vbDate 7 Date vbString 8 String vbObject 9 Objeto vbError 10 Erro vbBoolean 11 Boolean vbVariant 12 Variant (utilizada apenas para as matrizes de variantes) vbDataObject 13 Objeto de acesso a dados vbDecimal 14 Decimal vbByte 17 Byte vbArray 8192 Matriz

Constantes de cor
As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbBlack 0x0 Preto vbRed 0xFF Vermelho

Funes Internas

26

vbGreen vbYellow vbBlue vbMagenta vbCyan vbWhite

0xFF00 0xFFFF 0xFF0000 0xFF00FF 0xFFFF00 0xFFFFFF

Verde Amarelo Azul Magenta Ciano Branco

Constantes de cdigo de tecla


As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbKeyLButton 0x1 Boto esquerdo do mouse vbKeyRButton 0x2 Boto direito do mouse vbKeyCancel 0x3 Tecla CANCEL vbKeyMButton 0x4 Boto do meio do mouse vbKeyBack 0x8 Tecla BACKSPACE vbKeyTab 0x9 Tecla TAB vbKeyClear 0xC Tecla CLEAR vbKeyReturn 0xD Tecla ENTER vbKeyShift 0x10 Tecla SHIFT vbKeyControl 0x11 Tecla CTRL vbKeyMenu 0x12 Tecla MENU vbKeyPause 0x13 Tecla PAUSE vbKeyCapital 0x14 Tecla CAPS LOCK vbKeyEscape 0x1B Tecla ESC vbKeySpace 0x20 Tecla SPACEBAR vbKeyPageUp 0x21 Tecla PAGE UP vbKeyPageDown 0x22 Tecla PAGE DOWN vbKeyEnd 0x23 Tecla END vbKeyHome 0x24 Tecla HOME vbKeyLeft 0x25 Tecla SETA ESQUERDA vbKeyUp 0x26 Tecla SETA ACIMA vbKeyRight 0x27 Tecla SETA DIREITA vbKeyDown 0x28 Tecla SETA ABAIXO vbKeySelect 0x29 Tecla SELECT vbKeyPrint 0x2A Tecla PRINT SCREEN vbKeyExecute 0x2B Tecla EXECUTE vbKeySnapshot 0x2C Tecla SNAPSHOT vbKeyInsert 0x2D Tecla INSERT vbKeyDelete 0x2E Tecla DELETE vbKeyHelp 0x2F Tecla HELP vbKeyNumlock 0x90 Tecla NUM LOCK As teclas de A a Z so as mesmas teclas ASCII de A a Z equivalentes: Constante Valor Descrio vbKeyA 65 Tecla A vbKeyB 66 Tecla B vbKeyC 67 Tecla C vbKeyD 68 Tecla D vbKeyE 69 Tecla E vbKeyF 70 Tecla F vbKeyG 71 Tecla G vbKeyH 72 Tecla H vbKeyI 73 Tecla I vbKeyJ 74 Tecla J vbKeyK 75 Tecla K vbKeyL 76 Tecla L vbKeyM 77 Tecla M vbKeyN 78 Tecla N vbKeyO 79 Tecla O vbKeyP 80 Tecla P vbKeyQ 81 Tecla Q vbKeyR 82 Tecla R vbKeyS 83 Tecla S vbKeyT 84 Tecla T vbKeyU 85 Tecla U vbKeyV 86 Tecla V vbKeyW 87 Tecla W vbKeyX 88 Tecla X vbKeyY 89 Tecla Y

Funes Internas

27

vbKeyZ

90

Tecla Z

As teclas de 0 a 9 so as mesmas teclas ASCII de 0 a 9 equivalentes: Constante Valor Descrio vbKey0 48 Tecla 0 vbKey1 49 Tecla 1 vbKey2 50 Tecla 2 vbKey3 51 Tecla 3 vbKey4 52 Tecla 4 vbKey5 53 Tecla 5 vbKey6 54 Tecla 6 vbKey7 55 Tecla 7 vbKey8 56 Tecla 8 vbKey9 57 Tecla 9 As constantes a seguir representam teclas no teclado numrico: Constante Valor Descrio vbKeyNumpad0 0x60 Tecla 0 vbKeyNumpad1 0x61 Tecla 1 vbKeyNumpad2 0x62 Tecla 2 vbKeyNumpad3 0x63 Tecla 3 vbKeyNumpad4 0x64 Tecla 4 vbKeyNumpad5 0x65 Tecla 5 vbKeyNumpad6 0x66 Tecla 6 vbKeyNumpad7 0x67 Tecla 7 vbKeyNumpad8 0x68 Tecla 8 vbKeyNumpad9 0x69 Tecla 9 vbKeyMultiply 0x6A Tecla SINAL DE MULTIPLICAO (*) vbKeyAdd 0x6B Tecla SINAL DE ADIO (+) vbKeySeparator 0x6C Tecla ENTER vbKeySubtract 0x6D Tecla SINAL DE SUBTRAO () vbKeyDecimal 0x6E Tecla PONTO DECIMAL (.) vbKeyDivide 0x6F Tecla SINAL DE DIVISO (/) As constantes a seguir representam teclas de funo: Constante Valor Descrio vbKeyF1 0x70 Tecla F1 vbKeyF2 0x71 Tecla F2 vbKeyF3 0x72 Tecla F3 vbKeyF4 0x73 Tecla F4 vbKeyF5 0x74 Tecla F5 vbKeyF6 0x75 Tecla F6 vbKeyF7 0x76 Tecla F7 vbKeyF8 0x77 Tecla F8 vbKeyF9 0x78 Tecla F9 vbKeyF10 0x79 Tecla F10 vbKeyF11 0x7A Tecla F11 vbKeyF12 0x7B Tecla F12 vbKeyF13 0x7C Tecla F13 vbKeyF14 0x7D Tecla F14 vbKeyF15 0x7E Tecla F15 vbKeyF16 0x7F Tecla F16

Funes Internas

28

Constantes da cor do sistema


As constantes a seguir podem ser utilizadas em qualquer parte do seu cdigo no lugar dos valores reais: Constante Valor Descrio vbScrollBars 0x80000000 Cor da barra de rolagem vbDesktop 0x80000001 Cor da rea de trabalho vbActiveTitleBar 0x80000002 Cor da barra de ttulo da janela ativa vbInactiveTitleBar 0x80000003 Cor da barra de ttulo da janela inativa vbMenuBar 0x80000004 Cor de segundo plano do menu vbWindowBackground 0x80000005 Cor de segundo plano da janela vbWindowFrame 0x80000006 Cor da moldura da janela vbMenuText 0x80000007 Cor do texto nos menus vbWindowText 0x80000008 Cor do texto nas janelas vbTitleBarText 0x80000009 Cor do texto na legenda, caixa de dimensionamento e seta de rolagem vbActiveBorder 0x8000000A Cor da borda da janela ativa vbInactiveBorder 0x8000000B Cor da borda da janela inativa vbApplicationWorkspace 0x8000000C Cor de segundo plano dos aplicativos de interface de mltiplos documentos (MDI, Multiple-Document Interface) vbHighlight 0x8000000D Cor de segundo plano dos itens selecionados em um controle vbHighlightText 0x8000000E Cor do texto dos itens selecionados em um controle vbButtonFace 0x8000000F Cor de sombreamento da superfcie dos botes de comando vbButtonShadow 0x80000010 Cor de sombreamento da extremidade dos botes de comando vbGrayText 0x80000011 Texto acinzentado (desativado) vbButtonText 0x80000012 Cor do texto dos botes de pressionamento vbInactiveCaptionText 0x80000013 Cor do texto de uma legenda ativa vb3DHighlight 0x80000014 Cor de realce de elementos de exibio em 3-D vb3DDKShadow 0x80000015 Cor de sombreamento mais escura dos elementos de exibio em 3-D vb3DLight 0x80000016 Segunda cor 3-D mais clara depois de vb3DHighlight vbInfoText 0x80000017 Cor do texto das Dicas de ferramentas vbInfoBackground 0x80000018 Cor de segundo plano das Dicas de ferramentas Exemplo da instruo Call Este exemplo ilustra como a instruo Call utilizada para transferir o controle para um procedimento Sub, uma funo intrnseca, um procedimento da biblioteca de vinculao dinmica (DLL) e um procedimento. ' Chama um procedimento Sub. Call PrintToDebugWindow("Al Mundo") ' A instruo anterior faz com que o controle seja passado ao procedimento ' Sub seguinte. Sub PrintToDebugWindow(AnyString) Debug.Print AnyString ' Imprime na janela Depurar. End Sub ' Chama uma funo intrnseca. O valor de retorno da funo descartado. Call Shell(AppName, 1) ' AppName contm o caminho do arquivo executvel. ' Chama um procedimento DLL do Microsoft Windows. A ' instruo Declare deve ser Private em um Mdulo de ' classe, mas no em um Mdulo padro. Private Declare Sub MessageBeep Lib "Usurio" (ByVal N As Integer) Sub CallMyDll() Call MessageBeep(0) ' Chama o procedimento DLL do Windows. MessageBeep 0 ' Chama novamente sem a palavra-chave Call.

Funes Internas

29

End Sub Exemplo da funo Choose Este exemplo utiliza a funo Choose para exibir um nome em resposta a um ndice passado ao procedimento no parmetro Ind. Function GetChoice(Ind As Integer) GetChoice = Choose(Ind, "Expresso", "United", "Federal") End Function

Funes Internas

30

Exemplo da funo DoEvents Este exemplo utiliza a funo DoEvents para fazer com que se saia para o sistema operacional uma vez a cada 1000 iteraes do loop. DoEvents retorna o nmero de formulrios abertos do Visual Basic, mas somente quando o aplicativo host for o Visual Basic. ' Cria uma varivel para conter o nmero de formulrios ' do Visual Basic carregados e visveis. Dim I, AbreFormulrios For I = 1 To 150000 ' Inicia o loop. If I Mod 1000 = 0 Then ' Se o loop tiver se repetido 1000 vezes. AbreFormulrios = DoEvents ' Submete-se ao sistema operacional. End If Next I' Incrementa o contador de loops. Exemplo da instruo Do...Loop Este exemplo mostra como as instrues Do...Loop podem ser utilizadas. A instruo Do...Loop interna faz o loop 10 vez, define o valor do sinalizador como False e sai prematuramente utilizando a instruo Exit Do. O loop externo sai imediatamente aps a verificao do valor do sinalizador. Dim Controle, Contador Controle = True: Contador = 0 ' Inicializa as variveis. Do ' Loop externo. Do While Contador < 20 ' Loop interno. Contador = Contador + 1 ' Incrementa o Contador. If Contador = 10 Then ' Se a condio for True. Controle = False ' Define o valor do sinalizador como False. Exit Do ' Sai do loop interno. End If Loop Loop Until Controle = False ' Sai do loop externo imediatamente. Exemplo da instruo End Este exemplo utiliza a instruo End para encerrar a execuo do cdigo se o usurio inserir uma senha invlida. Sub Form_Load Dim Senha, ASenha Senha = "Swordfish" ASenha = InputBox("Digite a sua senha") If ASenha <> Senha Then MsgBox "Sinto muito, senha incorreta" End End If End Sub

Funes Internas

31

Exemplo da instruo Exit Este exemplo utiliza a instruo Exit para sair de um loop For...Next, Do...Loop e de um procedimento Sub. Sub ExitStatementDemo() Dim I, MeuNum Do ' Configura o loop infinito. For I = 1 To 1000 ' Faz o loop 1000 vezes. MeuNum = Int(Rnd * 1000)' Gera nmeros aleatrios. Select Case MeuNum ' Avalia o nmero aleatrio. Case 7: Exit For ' Se 7, sai de For...Next. Case 29: Exit Do ' Se 29, sai de Do...Loop. Case 54: Exit Sub ' Se 54, sai do procedimento Sub. End Select Next I Loop End Sub Exemplo da instruo For Each...Next Este exemplo utiliza a instruo For Each...Next para pesquisar a propriedade Text de todos os elementos em uma coleo procura da seqncia de caracteres "Al". No exemplo, MeuObjeto um objeto relacionado ao texto e um elemento da coleo MinhaColeo. Ambos so nomes genricos utilizados somente com finalidades ilustrativas. Dim Encontrado, MeuObjeto, MinhaColeo Encontrado = False ' Inicializa a varivel. For Each MeuObjeto In MinhaColeo ' Itera a cada elemento. If MeuObjeto.Text = "Al" Then ' Se Text for igual a "Al". Encontrado = True ' Define Encontrado como True. Exit For ' Sai do loop. End If Next Exemplo da instruo For...Next Este exemplo utiliza a instruo For...Next para criar uma seqncia de caracteres que contm 10 instncias dos nmeros 0 a 9, cada seqncia de caracteres separada da outra por um nico espao. O loop externo utiliza uma varivel de contador de loops que decrescida toda vez atravs do loop. Dim Palavras, Caracteres, MinhaSeqncia For Palavras = 10 To 1 Step -1 ' Configura 10 repeties. For Caracteres = 0 To 9 ' Configura 10 repeties. MinhaSeqncia = MinhaSeqncia & Caracteres ' Acrescenta o nmero seqncia de caracteres. Next Caracteres ' Incrementa o contador MinhaSeqncia = MinhaSeqncia & " " ' Acrescenta um espao. Next Palavras

Funes Internas

32

Exemplo da instruo GoSub...Return Este exemplo utiliza GoSub para chamar uma sub-rotina dentro de um procedimento Sub. A instruo Return faz com que a execuo continue imediatamente aps a instruo GoSub. A instruo Exit Sub utilizada para evitar que o controle flua acidentalmente para a sub-rotina. Sub GosubDemo() Dim Num ' Solicita um nmero ao usurio. Num = InputBox("Insira um nmero positivo para ser dividido por 2.") ' Utiliza a rotina somente se o usurio inserir um nmero positivo. If Num > 0 Then GoSub MinhaRotina Debug.Print Num Exit Sub ' Utiliza Exit para evitar um erro. MinhaRotina: Num = Num/2 ' Executa a diviso. Return ' Retorna o controle instruo End Sub ' que se segue instruo GoSub. Exemplo da instruo GoTo Este exemplo utiliza a instruo GoTo para desviar para rtulos de linha de um procedimento. Sub GotoStatementDemo() Dim Nmero, MinhaSeqncia Nmero = 1 ' Inicializa a varivel. ' Avalia Nmero e desvia para o rtulo apropriado. If Nmero = 1 Then GoTo Line1 Else GoTo Line2 Line1: MinhaSeqncia = "Nmero igual a 1" GoTo LastLine ' Vai para LastLine. Line2: ' A instruo a seguir nunca executada. MinhaSeqncia = "Nmero igual a 2" LastLine: Debug.Print MinhaSeqncia ' Imprime "Nmero igual a 1" na ' janela Depurar. End Sub Exemplo da instruo If...Then...Else Este exemplo mostra as formas de bloco e de linha nica da instruo If...Then...Else. Ele tambm ilustra o uso de If TypeOf...Then...Else. Dim Nmero, Dgitos, MinhaSeqncia Nmero = 53 ' Inicializa a varivel. If Nmero < 10 Then Dgitos = 1 ElseIf Nmero < 100 Then ' A condio avalia como True, ento a prxima instruo executada. Dgitos = 2 Else Dgitos = 3 End If ' Atribui um valor utilizando a forma de sintaxe de linha nica. If Dgitos = 1 Then MinhaSeqncia = "Uma" Else MinhaSeqncia = "Mais de uma" Utilize a construo If TypeOf para determinar se o Controle passado para um procedimento uma caixa de texto. Sub ControlProcessor(MeuControle As Control) If TypeOf MeuControle Is CommandButton Then Debug.Print "Voc passou um " & TypeName(MeuControle) ElseIf TypeOf MeuControle Is CheckBox Then Debug.Print "Voc passou um " & TypeName(MeuControle) ElseIf TypeOf MeuControle Is TextBox Then Debug.Print "Voc passou um " & TypeName(MeuControle) End If End Sub Exemplo da funo IIf Este exemplo utiliza a funo IIf para avaliar o parmetro TestMe do procedimento CheckIt e retorna a palavra "Grande" se a quantidade for maior que 1000; do contrrio, retorna a palavra "Pequena". Function CheckIt (TestMe As Integer) CheckIt = IIf(TestMe > 1000, "Grande", "Pequena")

Funes Internas

33

End Function Exemplo das instrues On...GoSub e On...GoTo Este exemplo utiliza as instrues On...GoSub e On...GoTo para desviar para sub-rotinas e rtulos de linha, respectivamente. Sub OnGosubGotoDemo() Dim Nmero, MinhaSeqncia Nmero = 2 ' Inicializa a varivel. ' Desvia para Sub2. On Nmero GoSub Sub1, Sub2 ' A execuo continua aqui depois de ' On...GoSub. On Nmero GoTo Linha1, Linha2 ' Desvia para Linha2. ' A execuo no continua aqui depois de On...GoTo. Exit Sub Sub1: MihaSeqncia = "Em Sub1" : Return Sub2: MinhaSeqncia = "Em Sub2" : Return Linha1: MinhaSeqncia = "Em Linha1" Linha2: MinhaSeqncia = "Em Linha2" End Sub

Funes Internas

34

Exemplo da funo Partition Este exemplo pressupe que voc tem uma tabela Pedidos que contm um campo Frete. Ela cria um procedimento de seleo que conta o nmero de pedidos para os quais o custo se enquadra em cada um dos diversos intervalos. A funo Partition utilizada primeiro para estabelecer esses intervalos e, em seguida, a funo SQL Count conta o nmero de pedidos em cada faixa. Neste exemplo, os argumentos da funo Partition so incio = 0, fim = 500, intervalo = 50. O primeiro intervalo, portanto, seria 0:49, e assim por diante at 500. SELECT DISTINCTROW Partition([frete],0, 500, 50) AS Range, Count(Pedidos.Frete) AS Count FROM Pedidos GROUP BY Partition([frete],0,500,50); Exemplo da instruo Select Case Este exemplo utiliza a instruo Select Case para avaliar o valor de uma varivel. A segunda clusula Case contm o valor da varivel que est sendo avaliada e, portanto, somente a instruo associada a ela executada. Dim Nmero Nmero = 8 ' Inicializa a varivel. Select Case Nmero ' Avalia Nmero. Case 1 To 5 ' Nmero entre 1 e 5. Debug.Print "Entre 1 e 5" ' A seguinte a nica clusula Case que avalia como True. Case 6, 7, 8 ' Nmero entre 6 e 8. Debug.Print "Entre 6 e 8" Case Is > 8 And Nmero < 11 ' Nmero 9 ou 10. Debug.Print "Maior que 8" Case Else ' Outros valores. Debug.Print "No entre 1 e 10" End Select Exemplo da funo Shell Este exemplo utiliza a funo Shell para executar um aplicativo especificado pelo usurio. ' Especificar 1 como o segundo argumento abre o aplicativo no tamanho normal e lhe d o foco. Dim ValRet ValRet = Shell("C:\WINDOWS\CALC.EXE", 1) ' Executa Calculator.

Funes Internas

35

Exemplo da instruo Stop Este exemplo utiliza a instruo Stop para suspender a execuo de cada iterao atravs do loop For...Next. Dim I For I = 1 To 10 ' Inicia o loop For...Next. Debug.Print I ' Imprime I na janela Depurar. Stop ' Pra durante cada iterao. Next I Exemplo da funo Switch Este exemplo utiliza a funo Switch para retornar o nome de um idioma que corresponde ao nome de uma cidade. Function MatchUp (NomeDeCidade As String) Matchup = Switch(NomeDeCidade = "Londres", "Ingls", NomeDeCidade _ = "Roma", "Italiano", NomeDeCidade = "Paris", "Francs") End Function Exemplo da instruo While...Wend Este exemplo utiliza a instruo While...Wend para incrementar uma varivel de contador. As instrues no loop so executadas desde que a condio avalie True. Dim Contador Contador = 0 ' Inicializa a varivel. While Contador < 20 ' Testa valor de Contador. Contador = Contador + 1 ' Incrementa Contador. Wend' Encerra o loop While quando Contador > 19. Debug.Print Contador ' Imprime 20 na janela Depurar. Exemplo da instruo With Este exemplo utiliza a instruo With para executar uma srie de instrues em um nico objeto. O objeto MeuObjeto e as suas propriedades so nomes genricos utilizados somente com finalidades ilustrativas. With MeuObjeto .Height = 100 ' Igual a MeuObjeto.Height = 100. .Caption = "Al Mundo" ' Igual a MeuObjeto.Caption = "Al Mundo". With .Font .Color = Red ' Igual a MeuObjeto.Font.Color = Red. .Bold = True ' Igual a MeuObjeto.Font.Bold = True. End With End With

Funes Internas

36

Instruo Call
Transfere o controle para um procedimento Sub, um procedimento Function ou procedimento de biblioteca de vnculos dinmicos (DLL). Sintaxe [Call] nome [listadeargumentos] A sintaxe da instruo Call possui as partes a seguir: Parte Descrio Call Opcional; palavra-chave. Se for especificada, voc dever colocar listadeargumentos entre parnteses. Por exemplo: Call MyProc(0) nome Obrigatria. Nome do procedimento a chamar. listadeargumentos Opcional. Lista, delimitada por vrgulas, de variveis, matrizes ou expresses a serem passadas para o procedimento. Os componentes da listadeargumentos podem incluir as palavraschave ByVal ou ByRef para descrever como os argumentos so tratados pelo procedimento chamado. Entretanto, ByVal e ByRef podem ser utilizadas com Call somente quando for chamado um procedimento DLL. Comentrios No necessrio que voc utilize a palavra-chave Call quando chamar um procedimento, entretanto, se voc us-la para chamar um procedimento que requer argumentos, a listadeargumentos deve ficar entre parnteses. Se voc omitir a palavra-chave Call, tambm dever omitir os parnteses de listadeargumentos. Se utilizar qualquer sintaxe de Call para chamar alguma funo intrnseca ou definida pelo usurio, o valor de retorno da funo ser descartado. Para passar uma matriz inteira para um procedimento, utilize o nome da matriz seguido de parnteses vazios.

Funo Choose
Seleciona e retorna um valor de uma lista de argumentos. Sintaxe Choose(ndice, escolha-1[, escolha-2, ... [, escolha-n]]) A sintaxe da funo Choose possui as partes a seguir: Parte Descrio ndice Obrigatria. Expresso numrica ou campo que resulta em um valor entre 1 e o nmero de escolhas disponveis. escolha Obrigatria. Expresso Variant contendo uma das escolhas possveis. Comentrios Choose retorna um valor da lista de escolhas com base no valor do ndice. Se ndice for 1, Choose retorna a primeira escolha da lista, se for 2, retorna a segunda escolha e assim por diante. Voc pode utilizar Choose para pesquisar um valor em uma lista de possibilidades. Por exemplo, se ndice for avaliado como 3 e escolha-1 = "um", escolha-2 = "dois" e escolha-3 = "trs", Choose retorna "trs". Esta capacidade particularmente til se ndice representa o valor em um grupo de opes. Choose avalia todas as escolhas da lista, mesmo que ela retorne somente uma. Em razo disto voc deve observar se existem efeitos colaterais indesejveis. Por exemplo, se voc utilizar a funo MsgBox como parte de uma expresso em todas as escolhas, ser exibida uma caixa de mensagem quando cada escolha for avaliada, mesmo que Choose retorne o valor de apenas uma delas. A funo Choose retorna um Null se ndice for menor que 1 ou maior que o nmero de escolhas listadas. Se ndice no for um nmero inteiro, ser arredondado para o nmero inteiro mais prximo antes de ser avaliado.

Funo DoEvents
Cede a execuo para que o sistema operacional possa processar outros eventos. Sintaxe DoEvents( ) Comentrios A funo DoEvents retorna um Integer que representa o nmero de formulrios abertos em verses autnomas do Visual Basic, como o Visual Basic, Standard Edition. DoEvents retorna zero em todos os outros aplicativos. DoEvents passa o controle para o sistema operacional. O controle retornado depois de o sistema operacional terminar o processamento de eventos da sua fila e todas as chaves da fila SendKeys terem sido enviadas. DoEvents tem uma maior utilidade com aes simples como permitir que um usurio cancele o processo aps ele ter sido iniciado, por exemplo, uma procura por um arquivo. Para processos de longa execuo, o controle do processador conseguido com maior facilidade utilizando-se um cronmetro ou delegando-se a tarefa a um componente ActiveX EXE. Nesse ltimo caso, a tarefa pode continuar de forma completamente independente de seu aplicativo e o sistema operacional leva em considerao a multitarefa e a diviso de tempo. Ateno Sempre que voc cede o controle ao processador dentro de um procedimento de evento, certifique-se de que o procedimento no seja executado novamente a partir de uma outra parte do seu cdigo antes que a primeira chamada retorne, pois isto poderia produzir resultados imprevisveis. Alm disto, no utilize DoEvents se houver possibilidade de outros aplicativos interagirem com o seu procedimento de forma imprevisvel durante o tempo em que voc ceder o controle. Funes Internas

37

Funes Internas

38

Instruo Do...Loop
Repete um bloco de instrues enquanto uma condio True ou at que ela se torne True. Sintaxe Do [{While | Until} [instrues] [Exit [instrues] Loop Ou voc pode utilizar esta sintaxe: Do [instrues] [Exit [instrues] Loop [{While | Until} condio] A sintaxe da instruo Do Loop possui as partes a seguir: Parte Descrio condio Opcional. Expresso numrica ou expresso de seqncia que seja True ou False. Se condio for Null, condio tratada como False. instrues Uma ou mais instrues que so repetidas enquanto, ou at que, condio seja True. condio] Do]

Do]

Comentrios Qualquer nmero de instrues Exit Do pode ser colocado em qualquer lugar em DoLoop como meio alternativo para sair de um DoLoop. Exit Do freqentemente utilizada depois que alguma condio avaliada, por exemplo, IfThen, caso em que a instruo Exit Do transfere o controle para a instruo imediatamente seguinte a Loop. Quando utilizada com instrues DoLoop embutidas, Exit Do transfere o controle para o loop que est embutido em um nvel acima do loop em que ocorre Exit Do.

Instruo End
Finaliza um procedimento ou bloco. Sintaxe End End Function End If End Property End Select End Sub End Type End With A sintaxe da instruo End possui as formas a seguir: Instruo Descrio End Termina a execuo imediatamente. Nunca obrigatria por si mesma, mas pode ser colocada em qualquer lugar dentro de um procedimento para finalizar a execuo do cdigo, fechar arquivos abertos com a instruo Open e limpar variveis. End Function Obrigatria para finalizar uma instruo Function. End If Obrigatria para finalizar uma instruo de bloco IfThenElse. End Property Obrigatria para finalizar um procedimento Property Let, Property Get ou Property Set. End Select Obrigatria para finalizar uma instruo Select Case. End Sub Obrigatria para finalizar uma instruo Sub. End Type Obrigatria finalizar uma definio de tipo definido pelo usurio (instruo Type). End With Obrigatria para finalizar uma instruo With. Comentrios Quando executada, a instruo End redefine todas as variveis em nvel de mdulo e todas as variveis locais estticas em todos os mdulos. Para preservar o valor dessas variveis, utilize a instruo Stop. Assim, voc poder continuar a execuo preservando o valor daquelas variveis. Observao A instruo End interrompe a execuo do cdigo abruptamente, sem chamar o evento Unload, QueryUnload ou Terminate ou qualquer outro cdigo do Visual Basic. O cdigo que voc colocou nos eventos Unload, QueryUnload e Terminate de formulrios e mdulos de classe no executado. Os objetos criados a partir de mdulos de classe so destrudos, os arquivos abertos utilizando-se a instruo Open so fechados e a memria utilizada pelo seu programa liberada. As referncias de objeto pertencentes a outros programas so invalidadas. A instruo End fornece uma maneira de fazer com que seu programa pare. Para a finalizao normal de um programa do Visual Basic, voc deve descarregar todos os formulrios. O seu programa finalizado logo que no haja outros programas mantendo referncia a objetos criados a partir de seus mdulos de classe pblicos e nenhum cdigo sendo executado.

Funes Internas

39

Instruo Exit
Sai de um bloco de cdigo DoLoop, For...Next, Function, Sub ou Property. Sintaxe Exit Do Exit For Exit Function Exit Property Exit Sub A sintaxe da instruo Exit possui as formas a seguir: Instruo Descrio Exit Do Prov um meio de sair de uma instruo Do...Loop. Pode ser utilizada somente dentro de uma instruo Do...Loop. Exit Do transfere o controle para a instruo seguinte instruo Loop. Quando utilizada com instrues Do...Loop embutidas, Exit Do transfere o controle para o loop que est embutido em um nvel acima do loop em que ocorre Exit Do. Exit For Prov um meio de sair de um loop For. Pode ser utilizado somente em um loop For...Next ou For Each...Next. Exit For transfere o controle para a instruo seguinte instruo Next. Quando utilizada com loops For embutidos, Exit For transfere o controle para o loop que est embutido em um nvel acima do loop em que ocorre Exit For. Exit Function Sai imediatamente do procedimento Function no qual aparece. A execuo continua com a instruo seguinte instruo que chamou o Function. Exit Property Sai imediatamente do procedimento Property no qual aparece. A execuo continua com a instruo seguinte instruo que chamou o procedimento Property. Exit Sub Sai imediatamente do procedimento Sub no qual aparece. A execuo continua com a instruo seguinte instruo que chamou o procedimento Sub. Comentrios No confunda instrues Exit com instrues End. Exit no define o final de uma estrutura.

Instruo For Each...Next


Repete um grupo de instrues para cada elemento de uma matriz ou coleo. Sintaxe For Each elemento In [instrues] [Exit [instrues] Next [elemento] A sintaxe da instruo For...Each...Next possui as partes a seguir: Parte Descrio elemento Obrigatria. Varivel utilizada para iterar atravs dos elementos da coleo ou matriz. Para as colees, elemento pode ser somente uma varivel Variant, uma varivel de objeto genrica ou qualquer varivel de objeto especfica. Para as matrizes, elemento somente pode ser uma varivel Variant. grupo Obrigatria. Nome de uma coleo ou matriz de objetos(exceto matriz de tipos definidos pelo usurio). instrues Opcional. Uma ou mais instrues que so executadas em cada item de um grupo. grupo For]

Comentrios O bloco For...Each inserido se houver pelo menos um elemento em grupo. Uma vez que o loop tenha sido inserido, todas as instrues do loop so executadas para o primeiro elemento do grupo. Se houver mais elementos em grupo, as instrues do loop continuam a ser executadas para cada elemento. Quando no houver mais elementos em grupo, o loop sai e a execuo continua com a instruo seguinte instruo Next. Qualquer nmero de instrues Exit For pode ser colocado em qualquer lugar do loop como um meio alternativo para sair. Muitas vezes, Exit For utilizada depois de se avaliar alguma condio, por exemplo, If...Then, e transfere o controle para a instruo imediatamente seguinte a Next. Voc pode embutir loops For...Each...Next colocando um dentro de outro. Entretanto, cada elemento do loop deve ser exclusivo. Observao Se voc omitir elemento em uma instruo Next a execuo continua como se elemento estivesse includo. Se uma instruo Next for encontrada antes de sua instruo For correspondente, ocorrer um erro. Voc no pode utilizar a instruo For...Each...Next com uma matriz de tipos definidos pelo usurio porque um Variant no pode conter um tipo definido pelo usurio. Funes Internas

40

Instruo For...Next
Repete um grupo de instrues um nmero especfico de vezes. Sintaxe For contador = incio To fim [Step [instrues] [Exit [instrues] Next [contador] A sintaxe da instruo ForNext possui as partes a seguir: Parte Descrio contador Obrigatria. Varivel numrica utilizada como contador de loops. A varivel no pode ser um Boolean ou um elemento de matriz. incio Obrigatria. Valor inicial do contador. fim Obrigatria. Valor final do contador. passo Opcional. A quantidade em que o contador alterado cada vez que passa pelo loop. Se o passo no for especificado, o padro ser um. instrues Opcional. Uma ou mais instrues entre For e Next que so executadas conforme o nmero de vezes especificado. passo] For]

Comentrios O argumento do passo pode ser positivo ou negativo. O valor do argumento do passo determina o processamento do loop da seguinte forma: Valor Loop executado se Positivo ou 0 contador <= fim Negativo contador >= fim Depois que todas as instrues do loop tiverem sido executadas, passo adicionado a contador. Neste momento ou as instrues do loop so executadas novamente (baseadas no mesmo teste que causou a execuo inicial do loop) ou o loop sai e a execuo continua com a instruo seguinte instruo Next. Dica A alterao do valor de um contador estando dentro de um loop pode tornar mais difcil a leitura e depurao do seu cdigo. Qualquer nmero de instrues Exit For pode ser colocado em qualquer lugar dentro do loop como meio alternativo de sair. Muitas vezes Exit For utilizada depois da avaliao de alguma condio, por exemplo, If...Then, e transfere o controle para a instruo imediatamente seguinte a Next. Voc pode embutir loops For...Next colocando um dentro do outro. D a cada loop um nome de varivel exclusivo como seu contador. A construo a seguir correta: For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ... Next K Next J Next I Observao Se voc omitir contador em uma instruo Next, a execuo continua como se contador estivesse includo. Se uma instruo Next for encontrada antes de sua instruo For correspondente, ocorrer um erro.

Instruo GoSub...Return
Desvia para, e retorna de uma sub-rotina dentro de um procedimento. Sintaxe GoSub linha ... linha ... Return O argumento linha pode ser qualquer rtulo de linha ou nmero de linha. Comentrios Voc pode utilizar GoSub e Return em qualquer posio dentro de um procedimento, mas GoSub e a instruo correspondente Return devem estar no mesmo procedimento. Uma sub-rotina pode conter mais de uma instruo Return, mas a primeira encontrada faz com que o fluxo da execuo se desvie de volta para a instruo imediatamente seguinte instruo GoSub mais recentemente executada. Observao Voc no pode entrar ou sair de procedimentos Sub com GoSub...Return. Dica Criar procedimentos separados que voc possa chamar pode proporcionar uma alternativa mais estruturada para a utilizao de GoSub...Return.

Instruo GoTo
Desvia incondicionalmente para uma linha especificada dentro de um procedimento. Sintaxe

Funes Internas

41

GoTo linha O argumento linha requerido pode ser qualquer rtulo de linha ou nmero de linha. Comentrios GoTo pode desviar somente para linhas de dentro do procedimento em que aparece. Observao Excesso de instrues GoTo pode tornar difcil a leitura e depurao do cdigo. Sempre que possvel, utilize instrues de controle estruturado (Do...Loop, For...Next, If...Then...Else, Select Case).

Instruo If...Then...Else
Executa condicionalmente um grupo de instrues, dependendo do valor de uma expresso. Sintaxe If condio Then [instrues] [Else instrueselse] Ou voc pode utilizar a sintaxe de formato de bloco: If condio [instrues] [ElseIf condio-n [instrueselseif] ... [Else [instrueselse]] End If A instruo If...Then...Else possui as partes a seguir: Parte Descrio condio Obrigatria. Um ou mais dos dois tipos de expresso seguintes: Uma expresso numrica ou expresso de seqncia de caracteres que avaliada como True ou False. Se condio for Null, ser tratada como False. Uma expresso do formato TypeOf nomedoobjeto Is tipodoobjeto. O nomedoobjeto qualquer referncia a objeto e tipodoobjeto qualquer tipo de objeto vlido. A expresso ser True se nomedoobjeto for o tipo de objeto especificado por tipodoobjeto; caso contrrio, ser False. instrues Opcional em formato de bloco; requerida em formato de uma s linha que no possui clusula Else. Uma ou mais instrues separadas por dois-pontos; executada se condio for True. condio-n Opcional. Igual a condio. instrueselseif Opcional. Uma ou mais instrues executadas se a condio-n associada for True. instrueselse Opcional. Uma ou mais instrues executadas se nenhuma expresso condio ou condio-n anterior for True.

Then Then

Comentrios Voc pode utilizar o formato de uma s linha (primeira sintaxe) para testes simples e curtos. Entretanto, o formato de bloco (segunda sintaxe) proporciona mais estrutura e flexibilidade do que o formato de uma s linha e normalmente mais fcil de ler, manter e depurar. Observao Com o formato de uma s linha possvel ter mltiplas instrues executadas como resultado de uma deciso If...Then. Todas as instrues devem estar na mesma linha e separadas por dois-pontos, como na seguinte instruo: If A > 10 Then A = A + 1 : B = B + A : C = C + B Uma instruo If em formato de bloco deve ser a primeira em uma linha. As partes Else, ElseIf, e End If da instruo podem ter somente um nmero de linha ou rtulo de linha precedendo-as. O If em bloco deve terminar com uma instruo End If. Para determinar se uma instruo ou no If em bloco, examine o que vem em seguida palavra-chave Then. Se qualquer coisa exceto um comentrio aparecer depois de Then na mesma linha, a instruo ser tratada como instruo If de uma s linha. A clusulas Else e ElseIf so opcionais. Voc pode ter tantas clusulas ElseIf em um bloco If quantas desejar, mas nenhuma pode aparecer depois de uma clusula Else. Instrues If em bloco podem ser embutidas, isto , contidas uma dentro da outra. Executando um If em bloco (segunda sintaxe), condio testada. Se condio for True, as instrues seguintes a Then so executadas. Se condio for False, cada condio ElseIf (se houver) ser por sua vez avaliada. Quando uma condio True for encontrada, as instrues imediatamente subseqentes Then associada so executadas. Se nenhuma das condies ElseIf forem True (ou se no houver clusulas ElseIf), as instrues subseqentes a Else so executadas. Depois da execuo das instrues subseqentes a Then ou Else, a execuo continua com a instruo subseqente a End If. Dica Select Case pode ser mais til na avaliao de uma expresso nica com diversas aes possveis. Entretanto, a clusula TypeOf nomedoobjeto Is tipodoobjeto no pode ser utilizada com a instruo Select Case.

Funo IIf
Retorna uma das duas partes, dependendo da avaliao de uma expresso. Sintaxe Funes Internas

42

IIf(expr, truepart, falsepart) A sintaxe da funo IIf possui os argumentos nomeados a seguir: Parte Descrio expr Obrigatria. Expresso que voc deseja avaliar. truepart Obrigatria. Valor ou expresso retornada se expr for True. falsepart Obrigatria. Valor ou expresso retornada se expr for False. Comentrios IIf sempre avalia truepart e falsepart, mesmo que retorne somente uma delas. Em razo disto, voc deve observar se ocorrem efeitos colaterais indesejveis. Por exemplo, se a avaliao de falsepart resulta em um erro de diviso por zero, ocorrer um erro mesmo se expr for True.

Instrues On...GoSub, On...GoTo


Desviam para uma das diversas linhas especificadas, dependendo do valor de uma expresso. Sintaxe On expresso GoSub listadedestino On expresso GoTo listadedestino A sintaxe das instrues On...GoSub e On...GoTo possui as partes a seguir: Parte Descrio expresso Obrigatria. Qualquer expresso numrica avaliada como nmero inteiro entre 0 e 255, inclusive. Se expresso for qualquer nmero no inteiro, ele ser arredondado antes da avaliao. listadedestino Obrigatria. Lista de nmeros de linha ou rtulos de linha separados por vrgulas. Comentrios O valor da expresso determina a linha para a qual ser desviada na listadedestino. Se o valor for menor que 1 ou maior que o nmero de itens da lista, ocorrer um dos seguintes resultados: Se expresso for Ento Igual a 0 O controle cai para a instruo subseqente a On...GoSub ou On...GoTo. Maior que o nmero deO controle cai para a instruo subseqente a itens de uma lista On...GoSub ou On...GoTo. Negativo Ocorre um erro. Maior que 255 Ocorre um erro. Voc pode misturar nmeros de linha e rtulos de linha na mesma lista. Pode utilizar quantos rtulos de linha e nmeros de linha desejar com On...GoSub e On...GoTo. Entretanto, se voc utilizar mais rtulos ou nmeros do que cabem em uma s linha, dever utilizar o caractere de continuao de linha para continuar a linha lgica at a linha fsica seguinte. Dica Select Case proporciona um meio mais estruturado e mais flexvel de executar mltiplo desvio.

Funo Partition
Retorna um Variant (String) que indica onde ocorre um nmero dentro de uma srie calculada de intervalos. Sintaxe Partition(number, start, stop, interval) A sintaxe da funo Partition possui os argumentos nomeados a seguir: Parte Descrio number Obrigatrio. Nmero inteiro que voc deseja avaliar em relao aos intervalos. start Obrigatrio. Nmero inteiro que o incio do intervalo geral de nmeros. No pode ser menor que 0. stop Obrigatrio. Nmero inteiro que o final do intervalo geral de nmeros. No pode ser igual nem menor que start. interval Obrigatrio. Nmero inteiro que a faixa coberta por cada segmento da srie de start a stop. No pode ser menor que 1. Comentrios A funo Partition identifica o intervalo especfico no qual number est e retorna um Variant (String) que descreve esse intervalo. A funo Partition mais til em consultas. Voc pode criar uma consulta seleo que mostra quantas ordens esto dentro de diversos intervalos, por exemplo, valores de ordem de 1 a 1000, 1001 a 2000, e assim por diante. A tabela a seguir mostra como os intervalos so determinados utilizando-se trs conjuntos de partes start, stop, e interval. As colunas Primeiro Intervalo e ltimo Intervalo mostram o que Partition retorna. Os intervalos so representados por valormnimo:valormximo, onde o extremo inferior (valormnimo) do intervalo separado do extremo superior (valormximo) por dois-pontos (:). start stop interval Antes doPrimeiro ltimo intervalo Depois do primeiro intervalo ltimo 0 99 5 " :-1" " 0: 4" " 95: 99" " 100: " 20 199 10 " : 19" " 20: 29" " 190: 199" " 200: " 100 1010 20 " : 99" " 100: 119" " 1000: 1010" " 1011: " Na tabela acima, a terceira linha mostra o resultado de quando start e stop definem um conjunto de nmeros que no podem ser divididos exatamente por interval. O ltimo intervalo estende-se at stop (11 nmeros) embora interval seja 20.

Funes Internas

43

Se for necessrio, Partition retorna um intervalo com espaos suficientes para que haja o mesmo nmero de caracteres esquerda e direita de dois-pontos que o nmero de caracteres em stop mais um. Isto garante que, se voc utilizar Partition com outros nmeros, o texto resultante ser manipulado adequadamente durante qualquer operao de classificao subseqente. Se interval for 1, o intervalo ser number:number, independente dos argumentos de start e stop. Por exemplo, se interval for 1, number for 100 e stop for 1000, Partition retornar " 100: 100". Se qualquer das partes for Null, Partition retornar um Null.

Instruo Select Case


Executa um dos diversos grupos de instrues, dependendo do valor de uma expresso. Sintaxe Select Case expressodeteste [Case listadeexpresses-n [instrues-n]] ... [Case Else [instrueselse]] End Select A sintaxe da instruo Select Case possui as partes a seguir: Parte Descrio expressodeteste Obrigatria. Qualquer expresso numrica ou expresso de seqncia. listadeexpresses-n Obrigatria se aparecer uma Case. Lista delimitada de uma ou mais das seguintes formas: expresso, expresso To expresso, Is operadordecomparao expresso. A palavrachave To especifica um intervalo de valores. Se voc utilizar essa palavra-chave, o valor menor deve aparecer antes de To. Utilize a palavra-chave Is com operadores de comparao (exceto Is e Like) para especificar um intervalo de valores. Se no for fornecida, a palavra-chave Is ser inserida automaticamente. Instrues-n Opcional. Uma ou mais instrues so executadas se expressodeteste coincidir com qualquer parte de listadeexpresses-n. instrueselse Opcional. Uma ou mais instrues so executadas se expressodeteste no coincidir com qualquer das clusulas Case. Comentrios Se expressodeteste coincidir com qualquer expresso Case listadeexpresses, as instrues subseqentes quela clusula Case sero executadas at e prxima clusula Case, ou, para a ltima clusula, at End Select. Ento o controle passa para a instruo seguinte a End Select. Se expressodeteste coincidir com uma expresso listadeexpresses em mais de uma clusula Case, somente as instrues subseqentes primeira coincidncia sero executadas. A clusula Case Else utilizada para indicar a instrueselse a ser executada se no for encontrada coincidncia entre expressodeteste e uma listadeexpresses em qualquer das outras selees de Case. Embora no seja necessrio, uma boa idia ter uma instruo CaseElse no seu bloco Select Case para manipular valores no previstos de expressodeteste. Se nenhuma Case listadeexpresses coincidir com expressodeteste e no houver instruo Case Else, a execuo continua na instruo subseqente a End Select. Voc pode utilizar mltiplas expresses ou intervalos em cada clusula Case. Por exemplo, a linha a seguir vlida: Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber Observao O operador de comparao Is no igual palavra-chave Is utilizada na instruo Select Case. Voc pode tambm especificar intervalos e vrias expresses para seqncias de caracteres. No exemplo a seguir, Case coincide com seqncias que so exatamente iguais a tudo, seqncias que ficam entre nozes e sopa em ordem alfabtica e o valor atual de TestItem: Case "tudo", "nozes" To "sopa", TestItem Instrues Select Case podem ser embutidas. Cada instruo Select Case embutida deve ter uma declarao End Select correspondente.

Funo Shell
Executa um programa executvel e retorna um Variant (Double) que representa o cdigo da tarefa do programa, se tiver sucesso, caso contrrio, retorna zero. Sintaxe Shell(pathname[,windowstyle]) A sintaxe da funo Shell possui os argumentos nomeados a seguir: Parte Descrio pathname Obrigatrio; Variant (String). Nome do programa a ser executado e qualquer opo de argumento ou linha de comando obrigatria; pode incluir diretrio ou pasta e unidade de disco. windowstyle Opcional. Variant (Integer) correspondente ao estilo da janela na qual o programa deve ser executado. Se Funes Internas

44

windowstyle for omitido, o programa iniciar minimizado com foco. O argumento nomeado windowstyle possui os valores a seguir: Constante Valor Descrio vbHide 0 A janela ocultada e o foco passado para a janela oculta. VbNormalFocus 1 A janela tem foco e restaurada para seu tamanho e posio originais. vbMinimizedFocus 2 A janela exibida como um cone com foco. vbMaximizedFocus 3 A janela maximizada com foco. vbNormalNoFocus 4 A janela restaurada para seu tamanho e posio mais recentes. A janela ativa atual permanece ativa. vbMinimizedNoFocus 6 A janela exibida como um cone. A janela atualmente ativa permanece ativa. Comentrios Se a funo Shell executar o arquivo nomeado com sucesso, retornar o cdigo da tarefa do programa iniciado. A identificao da tarefa um nmero exclusivo que identifica o programa em execuo. Se a funo Shell no puder iniciar o programa nomeado, ocorrer um erro. Se voc utilizar a funo MacID com Shell no Microsoft Windows, ocorrer um erro. Observao A funo Shell executa outros programas de forma assncrona. Isto significa que um programa iniciado com Shell poder no completar a execuo antes que as instrues subseqentes funo Shell sejam executadas.

Instruo Stop
Suspende a execuo. Sintaxe Stop Comentrios Voc pode colocar instrues Stop em qualquer lugar dos procedimentos para suspender a execuo. A utilizao da instruo Stop assemelha-se a definir um ponto de interrupo no cdigo. A instruo Stop suspende a execuo, mas, ao contrrio de End, no fecha qualquer arquivo nem limpa variveis, a menos que esteja em um arquivo executvel (.exe) compilado.

Funo Switch
Avalia uma lista de expresses e retorna um valor de Variant ou uma expresso associada com a primeira expresso da lista que seja True. Sintaxe Switch(expr-1, valor-1[, expr-2, valor-2 [, expr-n,valor-n]]) A sintaxe da funo Switch possui as partes a seguir: Parte Descrio expr Obrigatria. expresso Variant que voc deseja avaliar. valor Obrigatria. Valor ou expresso a ser retornada se a expresso correspondente for True. Comentrios A lista de argumentos da funo Switch consiste em pares de expresses e valores. As expresses so avaliadas da esquerda para a direita e o valor associado primeira expresso avaliada como True retornado. Se as partes no estiverem adequadamente dispostas em par, ocorrer um erro em tempo de execuo. Por exemplo, se expr-1 for True, Switch retornar valor-1. Se expr-1 for False, mas expr-2 for True, Switch retornar valor-2, e assim por diante. Switch retorna um valor Null se: Nenhuma das expresses for True. A primeira expresso True tiver um valor correspondente que seja Null. Switch avalia todas as expresses, mesmo que retorne apenas uma delas. Por isso voc deve observar se ocorrem efeitos colaterais indesejveis. Por exemplo, se a avaliao de qualquer expresso resultar em um erro de diviso por zero, ocorrer um erro.

Instruo While...Wend
Executa uma srie de instrues desde que uma dada condio seja True. Sintaxe While [instrues] Wend A sintaxe da instruo While...Wend possui as partes a seguir: Parte Descrio condio Obrigatria. Expresso numrica ou expresso de seqncia que avaliada como True ou False. Se condio for Null, ser tratada como False. instrues Opcional. Uma ou mais instrues que so executadas enquanto a condio for True. condio

Funes Internas

45

Comentrios Se condio for True, todas as instrues sero executadas at que a instruo Wend seja encontrada. Ento o controle retorna para While e condio novamente verificada. Se condio ainda for True, o processo repetido. Se no for True, a execuo continua com a instruo subseqente instruo Wend. Os loops While...Wend podem ser embutidos at qualquer nvel. Cada Wend corresponde ao mais recente While. Dica A instruo Do...Loop proporciona um meio mais estruturado e flexvel para executar um loop.

Instruo With
Executa uma srie de instrues em um nico objeto ou um tipo definido pelo usurio. Sintaxe With [instrues] End With A instruo With possui as partes a seguir: Parte Descrio objeto Obrigatria. Nome de um objeto ou de um tipo definido pelo usurio. instrues Opcional. Uma ou mais instrues a serem executadas com objeto. objeto

Comentrios A instruo With permite executar uma srie de instrues com um objeto especfico sem requalificar o nome do objeto. Por exemplo, para alterar diversas propriedades diferentes de um nico objeto, coloque as instrues de atribuio de propriedades dentro da estrutura de controle de With, referindo o objeto uma s vez em lugar de faz-lo em todas as atribuies de propriedade. O exemplo a seguir ilustra a utilizao da instruo With para atribuir valores a diversas propriedades do mesmo objeto. With MyLabel .Height = 2000 .Width = 2000 .Caption = "Este MyLabel" End With Observao Uma vez que um bloco With seja inserido, objeto no pode ser modificado. Como resultado, voc no pode utilizar uma s instruo With para afetar diversos objetos diferentes. Voc pode embutir instrues With colocando blocos With um dentro do outro. Entretanto, em razo de os membros dos blocos externos de With ficarem mascarados dentro dos blocos internos, voc deve proporcionar uma referncia a objeto totalmente qualificada em um bloco With interno para qualquer membro de um objeto existente em um bloco externo. Importante No salte para dentro e para fora de blocos With. Se as instrues em um bloco With forem executadas mas a instruo With ou End With no for, voc poder provocar erros ou comportamento imprevisvel. Exemplo da funo Asc Este exemplo utiliza a funo Asc para retornar um cdigo de caractere que corresponde primeira letra na seqncia de caracteres. Dim MeuNmero MeuNmero = Asc("A") ' Retorna 65. MeuNmero = Asc("a") ' Retorna 97. MeuNmero = Asc("Amora")' Retorna 65. Exemplo da funo CBool Este exemplo utiliza a funo CBool para converter uma expresso em um Boolean. Se a expresso avaliar como um valor diferente de zero, CBool retornar True; caso contrrio, retornar False. Dim A, B, Controle A = 5: B = 5 ' Inicializa variveis. Controle = CBool(A = B) ' Controle contm True. A = 0 ' Define a varivel. Controle = CBool(A) ' Controle contm False. Exemplo da funo CByte Este exemplo utiliza a funo CByte para converter uma expresso em um Byte. Dim MeuDouble, MeuByte MeuDouble = 125.5678 ' MeuDouble um Double. MeuByte = CByte(MeuDouble) ' MeuByte contm 126. Exemplo da funo CDate Este exemplo utiliza a funo CDate para converter uma seqncia de caracteres em um Date. Em geral, datas e horas definidas no programa como seqncias de caracteres (conforme mostrado neste exemplo) no so recomendadas. Em vez disso, utilize literais de data e literais de hora, como #2/12/1969# e #4:45:23 PM#. Dim MinhaData, MinhaDataAbreviada, MinhaHora, MinhaHoraAbreviada MinhaData = "12 de Fevereiro de 1969" ' Define a data. MinhaDataAbreviada = CDate(MinhaData) ' Converte no tipo de dados Date. MinhaHora = "4:35:47 PM" ' Define a hora.

Funes Internas

46

MinhaHoraAbreviada = CDate(MinhaHora) ' Converte no tipo de dados Date. Exemplo da funo CCur Este exemplo utiliza a funo CCur para converter uma expresso em um Currency. Dim MeuDouble, MeuCurr MeuDouble = 543.214588 ' MeuDouble um Double. MeuCurr = CCur(MeuDouble * 2)' Converte o resultado de MeuDouble * 2 ' (1086.429176) em um ' Currency (1086.4292). Exemplo da funo CDbl Este exemplo utiliza a funo CDbl para converter uma expresso em um Double. Dim MeuCurr, MeuDouble MeuCurr = CCur(234.456784) ' MeuCurr um Currency. MeuDouble = CDbl(MeuCurr * 8.2 * 0.01) ' Converte o resultado em um Double. Exemplo da funo CInt Este exemplo utiliza a funo CInt para converter um valor em um Integer. Dim MeuDouble, MeuInt MeuDouble = 2345.5678 ' MeuDouble um Double. MeuInt = CInt(MeuDouble) ' MeuInt contm 2346. Exemplo da funo CLng Este exemplo utiliza a funo CLng para converter um valor em um Long. Dim MeuVal1, MeuVal2, MeuLong1, MeuLong2 MeuVal1 = 25427.45: MeuVal2 = 25427.55 ' MeuVal1 e MeuVal2 so Doubles. MeuLong1 = CLng(MeuVal1) ' MeuLong1 contm 25427. MeuLong2 = CLng(MeuVal2) ' MeuLong2 contm 25428. Exemplo da funo CSng Este exemplo utiliza a funo CSng para converter um valor em um Single. Dim MeuDouble1, MeuDouble2, MeuSingle1, MeuSingle2 ' MeuDouble1, MeuDouble2 so Doubles. MeuDouble1 = 75.3421115: MeuDouble2 = 75.3421555 MeuSingle1 = CSng(MeuDouble1) ' MeuSingle1 contm 75,34211. MeuSingle2 = CSng(MyDouble2)' MeuSingle2 contm 75,34216. Exemplo da funo CStr Este exemplo utiliza a funo CStr para converter um valor numrico em uma String. Dim MeuDouble, MinhaSeqncia MeuDouble = 437.324 ' MeuDouble um Double. MinhaSeqncia = CStr(MeuDouble) ' MinhaSeqncia contm "437,324". Exemplo da funo CVar Este exemplo utiliza a funo CVar para converter uma expresso em uma Variant. Dim MeuInt, MinhaVar MeuInt = 4534 ' MeuInt um Integer. MinhaVar = CVar(MeuInt & "000") ' MinhaVar contm a seqncia de caracteres ' 4534000. Exemplo da funo CVErr Este exemplo utiliza a funo CVErr para retornar uma Variant cujo VarType vbError (10). A funo definida pelo usurio CalculaDouble retorna um erro se o argumento passado a ela no for um nmero. Voc pode utilizar CVErr para retornar erros definidos pelo usurio de procedimentos definidos pelo usurio ou para adiar o tratamento de um erro em tempo de execuo. Utilize a funo IsError para testar se o valor representa um erro. ' Chama CalculaDouble com um argumento de produo de erro. Sub Test() Debug.Print CalculaDouble("345.45robert") End Sub ' Define o procedimento da funo CalculaDouble. Function CalculaDouble(Nmero) If IsNumeric(Nmero) Then CalculaDouble = Nmero * 2 ' Retorna o resultado. Else CalculaDouble = CVErr(2001) ' Retorna um nmero de erro End If ' definido pelo usurio. End Function

Funes Internas

47

Exemplo da funo Val Este exemplo utiliza a funo Val para retornar os nmeros contidos em uma seqncia de caracteres. Dim MeuValor MeuValor = Val("2457") ' Retorna 2457. MeuValor = Val(" 2 45 7") ' Retorna 2457. MeuValor = Val("24 com 57") ' Retorna 24.

Funes de converso

Funo Asc
Retorna um Integer que representa o cdigo de caractere correspondente primeira letra de uma seqncia. Sintaxe Asc(seqncia) O argumento obrigatrio seqncia pode ser qualquer expresso de seqncia vlida. Se a seqncia no contiver caracteres, um erro em tempo de execuo ser gerado. Comentrios O intervalo para os retornos de 0 a 255 em sistemas no-DBCS, mas de -32768 a 32767 em sistemas DBCS. Observao A funo AscB utilizada com os dados de byte contidos em uma seqncia. Em vez de retornar o cdigo de caractere para o primeiro caractere, AscB retorna o primeiro byte. A funo AscW retorna o cdigo de caractere Unicode, exceto em plataformas nas quais o Unicode no suportado, caso em que o comportamento dessa funo idntico ao da funo Asc.

Funes Internas

48

Funo CVErr
Retorna um Variant de subtipo Error contendo um nmero de erro especificado pelo usurio. Sintaxe CVErr(nmerodoerro) O argumento obrigatrio nmerodoerro pode ser qualquer nmero de erro vlido. Comentrios Utilize a funo CVErr para criar erros definidos pelo usurio nos procedimentos criados pelo usurio. Por exemplo, se voc criar uma funo que aceite vrios argumentos e normalmente retorne uma seqncia, voc poder fazer com que sua funo avalie os argumentos de entrada para assegurar de que eles se encontram dentro do intervalo aceitvel. Se no se encontrarem, provvel que sua funo no retorne o esperado. Nesse caso, CVErr permite retornar um nmero de erro que informa que atitude tomar. Observe que a converso implcita de um Error no permitida. Por exemplo, voc no pode atribuir diretamente o valor de retorno de CVErr a uma varivel que no Variant. Contudo, pode efetuar uma converso explcita (utilizando CInt, CDbl e assim por diante) do valor retornado por CVErr e atribu-la a uma varivel do tipo de dados apropriado.

Funo Val
Retorna os nmeros contidos em uma seqncia como um valor numrico do tipo apropriado. Sintaxe Val(seqncia) O argumento obrigatrio seqncia pode ser qualquer expresso de seqncia vlida. Comentrios A funo Val interrompe a leitura da seqncia no primeiro caractere que no puder reconhecer como parte de um nmero. Os smbolos e os caracteres que so geralmente considerados partes de valores numricos, como o cifro e as vrgulas, no so reconhecidos. Contudo, a funo reconhece os prefixos de raiz &O (para octal) e &H (para hexadecimal). Os caracteres em branco, as tabulaes e a alimentao de linha so retirados do argumento. O exemplo a seguir retorna o valor 1615198: Val(" 1615 198th Street N.E.") No cdigo abaixo, Val retorna o valor decimal -1 para o valor hexadecimal apresentado: Val("&HFFFF") Observao A funo Val reconhece somente o ponto (.) como um separador decimal vlido. Quando separadores decimais diferentes puderem ser utilizados, por exemplo, em aplicativos que no estejam em ingls, utilize CDbl ao invs de converter uma seqncia em um nmero.

Funes de converso de tipo


Cada funo fora a converso de uma expresso em um tipo de dados especfico.

Sintaxe
CBool(expresso) CByte(expresso) CCur(expresso) CDate(expresso) CDbl(expresso) CDec(expresso) CInt(expresso) CLng(expresso) CSng(expresso) CVar(expresso) CStr(expresso) O argumento obrigatrio expresso pode ser qualquer expresso de seqncia ou expresso numrica.

Tipos de retorno
O nome da funo determina o tipo de retorno como mostrado a seguir: Funo Tipo de retorno Intervalo do argumento expresso CBool Boolean Qualquer seqncia ou expresso numrica vlida. CByte Byte de 0 a 255. CCur Currency de -922.337.203.685.477,5808 a 922.337.203.685.477,5807. CDate Date Qualquer expresso de data vlida. CDbl Double de -1,79769313486232E308 a -4,94065645841247E-324 para valores negativos; de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos. CDec Decimal +/-79.228.162,514.264.337.593.543.950.335 para nmeros inteiros, isto , nmeros sem casas decimais. Para nmeros com 28 casas decimais, o intervalo +/-7,9228162514264337593543950335. O menor nmero possvel diferente de zero 0,0000000000000000000000000001. CInt Integer de -32.768 a 32.767; as fraes so arredondadas.

Funes Internas

49

CLng CSng CVar CStr

Long Single Variant String

de -2.147.483.648 a 2.147.483.647; as fraes so arredondadas. de -3,402823E38 a -1,401298E-45 para valores negativos; de 1,401298E-45 a 3,402823E38 para valores positivos. Mesmo intervalo de Double para valores numricos. Mesmo intervalo de String para valores nonumricos. Os retornos para CStr dependem do argumento da expresso.

Comentrios
Se a expresso passada para a funo estiver fora do intervalo para o qual o tipo de dados est sendo convertido, um erro ser gerado. Em geral, voc pode documentar seu cdigo utilizando as funes de converso de tipo de dados para mostrar que o resultado de algumas operaes deve ser expressado como um tipo de dados em particular ao invs do tipo de dados padro. Por exemplo, utilize CCur para forar o clculo monetrio nos casos onde normalmente ocorreriam clculos de preciso nica, preciso dupla ou de nmero inteiro. Voc deve utilizar as funes de converso de tipo de dados em vez de Val para fornecer converses de dados internacionais de um tipo de dados para outro. Por exemplo, quando voc utiliza CCur, separadores decimais diferentes, separadores de milhares diferentes e vrias opes de moeda so reconhecidas apropriadamente dependendo da definio da localidade em seu computador. Quando uma parte fracionria equivaler exatamente a 0,5, CInt e CLng sempre a arredondaro para o nmero par mais prximo. Por exemplo, 0,5 arredondado para 0 e 1,5 para 2. CInt e CLng diferem das funes Fix e Int, que truncam, ao invs de arredondar, a parte fracionria de um nmero. Alm disso, Fix e Int sempre retornam um valor do mesmo tipo do valor que passado para eles. Utilize IsDate para determinar se a data pode ser convertida para uma data ou hora. CDate reconhece os literais de data e de hora assim como alguns nmeros contidos no intervalo de datas aceitveis. Ao converter um nmero em data, todo o nmero convertido em uma data. Qualquer parte fracionria do nmero convertida em uma hora do dia, comeando meia-noite. CDate reconhece os formatos de data de acordo com a definio de localidade de seu sistema. A ordem correta de dia, ms e ano pode no ser determinada se for fornecida em um formato diferente das definies de data reconhecidas. Alm disso, o formato de data no reconhecido se tambm contiver o nome do dia da semana. Uma funo CVDate tambm fornecida para se obter compatibilidade com as verses anteriores do Visual Basic. A sintaxe da funo CVDate idntica da funo Cdate. Entretanto, CVDate retorna um Variant cujo subtipo Date em vez de um tipo Date real. Como j existe um tipo de data Date intrnseca, no haver mais necessidade de CVDate. O mesmo efeito pode ser alcanado convertendo uma expresso em Date, e, em seguida, atribuindo-lhe um Variant. Essa tcnica consistente com a converso de todos os outros tipos intrnsecos a seus subtipos de Variant equivalentes. Observao A funo CDec no retorna um tipo de dados discreto; ao contrrio, ela sempre retorna um Variant cujo valor tenha sido convertido em um subtipo Decimal. Retornos de CStr Se a expresso for CStr retorna Boolean Uma seqncia contendo True ou False Date Uma seqncia contendo uma data no formato curto de seu sistema Null Um erro em tempo de execuo Empty Uma seqncia de comprimento zero ("") Error Uma seqncia contendo a palavra Error seguida pelo nmero do erro Outros valoresUma seqncia contendo o nmero numricos

Tipo de dados Boolean


As variveis Boolean so armazenadas como nmeros de 16 bits (2 bytes), mas podem conter somente os valores True ou False. As variveis Boolean so exibidas como True ou False (quando usado Print) ou #TRUE# ou #FALSE# (quando usado Write #). Use as palavras-chave True e False para atribuir um dos dois estados a variveis Boolean. Quando outros tipos numricos so convertidos em valores Boolean, 0 torna-se False e todos os outros valores tornam-se True. Quando os valores Boolean so convertidos para outros tipos de dados, False torna-se 0 e True torna-se -1.

Tipo de dados Byte


As variveis Byte so armazenadas como nmeros de 8 bits (1 byte), sem sinal, nicos, que variam em valor de 0 a 255. O tipo de dados Byte til para conter dados binrios.

Tipo de dados Currency


As variveis Currency so armazenadas como nmeros de 64 bits (8 bytes) no formato de nmero inteiro, com escala de 10.000 para fornecer um nmero de vrgula fixa com 15 dgitos esquerda do ponto decimal e 4 dgitos direita. Essa

Funes Internas

50

representao proporciona um intervalo de -922.337.203.685.477,5808 a 922.337.203.685.477,5807. O caractere de declarao de tipo referente a Currency o sinal (@). O tipo de dados Currency til para clculos que envolvem dinheiro e clculos de vrgula fixa, nos quais a preciso especialmente importante.

Resumo dos tipos de dados


A tabela a seguir mostra os tipos de dados suportados, incluindo tamanhos e intervalos de armazenamento. Tipo de dados Tamanho deIntervalo armazenamento Byte 1 byte 0 a 255 Boolean 2 bytes True ou False Integer 2 bytes -32.768 a 32.767 Long 4 bytes -2.147.483.648 a 2.147.483.647 (inteiro longo) Single 4 bytes -3,402823E38 a -1,401298E-45 para valores (vrgula flutuante de negativos; 1,401298E-45 a 3,402823E38 para preciso simples) valores positivos Double 8 bytes -1,79769313486232E308 a (vrgula flutuante de -4,94065645841247E-324 para valores negativos; preciso dupla) 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos Currency 8 bytes -922.337.203.685.477,5808 a (inteiro escalado) 922.337.203.685.477,5807 Decimal 14 bytes +/-79.228.162.514.264.337.593.543.950.335 sem ponto decimal; +/-7,9228162514264337593543950335 com 28 casas decimais direita; o menor nmero diferente de zero +/-0,0000000000000000000000000001. Date 8 bytes De 1 de Janeiro de 100 at 31 de Dezembro de 9999 Object 4 bytes Qualquer referncia a Object String 10 bytes +De 0 at aproximadamente 2 bilhes (comprimento dacomprimento da varivel) seqncia de caracteres String Comprimento daDe 1 at aproximadamente 65.400 (comprimento fixo) seqncia de caracteres Variant 16 bytes Qualquer valor numrico at o intervalo de um (com nmeros) Double Variant 22 bytes +O mesmo intervalo que String de comprimento (com caracteres) comprimento davarivel seqncia de caracteres Definido pelo usurio Nmero requeridoO intervalo de cada elemento o mesmo que o (usando Type) por elementos intervalo do seu tipo de dados. Observao Matrizes de qualquer tipo de dados requerem 20 bytes de memria, mais 4 bytes para cada dimenso da matriz, mais o nmero de bytes ocupados pelos prprios dados. A memria ocupada pelos dados pode ser calculada multiplicando-se o nmero de elementos de dados pelo tamanho de cada elemento. Por exemplo, os dados em uma matriz de dimenso nica consistindo de 4 elementos de dados Integer de 2 bytes cada, ocupa 8 bytes. Os 8 bytes exigidos para os dados, mais os 24 bytes fixos, fazem com que o requisito de memria para a matriz seja de 32 bytes. Um Variant contendo uma matriz requer 12 bytes a mais do que uma matriz sozinha.

Tipo de dados Date


As variveis Date so armazenadas como nmeros IEEE de vrgula flutuante de 64 bits (8 bytes) que representam as datas que variam de 1 de janeiro do ano 100 at 31 de dezembro de 9999 e as horas que variam de 0:00:00 at 23:59:59. Qualquer valor literal de data reconhecvel pode ser atribudo a variveis Date. Os literais Date devem estar entre sinais (#), por exemplo, #January 1, 1993# ou #1 Jan 93#. As variveis Date exibem as datas de acordo com o formato abreviado de data reconhecido pelo seu computador. As horas so exibidas de acordo com o formato de hora (de 12 ou de 24 horas) reconhecido pelo seu computador. Quando outros tipos numricos so convertidos em Date, os valores esquerda do decimal representam as informaes de data, enquanto os valores direita representam a hora. Meia-noite 0 e meio-dia 0,5. Os nmeros negativos inteiros representam datas anteriores a 30 de dezembro de 1899.

Tipo de dados Decimal


As variveis Decimal so armazenadas como nmeros inteiros, sem sinal, de 96 bits (12 bytes), escalados por uma potncia de 10 varivel. O fator de escala potncia de 10 especifica o nmero de dgitos direita da vrgula decimal e varia

Funes Internas

51

de 0 a 28. Com uma escala de 0 (sem casas decimais), o maior valor possvel +/79.228.162.514.264.337.593.543.950.335. Com 28 casas decimais, o maior valor +/-7,9228162514264337593543950335 e o menor valor, diferente de zero, +/-0,0000000000000000000000000001. Observao Por ora, o tipo de dados Decimal pode ser usado somente dentro de um Variant, ou seja, voc no pode declarar uma varivel como sendo do tipo Decimal. Voc pode, entretanto, criar um Variant cujo subtipo seja Decimal usando a funo CDec.

Tipo de dados Double


As variveis Double (vrgula flutuante de preciso dupla) so armazenadas como nmeros IEEE de vrgula flutuante de 64 bits (8 bytes), com valor no intervalo -1,79769313486232E308 a -4,94065645841247E-324 para valores negativos, e de 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos. O caractere de declarao de tipo para Double o smbolo (#).

Tipo de dados Integer


As variveis Integer so armazenadas como nmeros de 16 bits (2 bytes) com valor no intervalo de -32.768 a 32.767. O caractere de declarao de tipo para Integer o smbolo de porcentagem (%). As variveis Integer tambm podem ser usadas para representar valores enumerados. Um valor enumerado pode conter um conjunto finito de nmeros inteiros, cada qual possuindo um significado especial no contexto em que usado. Os valores enumerados oferecem uma forma conveniente de selecionar entre um nmero de opes conhecidas, por exemplo, preto = 0, branco = 1, e assim por diante. boa prtica de programao definir constantes usando a instruo Const para cada valor enumerado.

Tipo de dados Long


As variveis Long (inteiro longo) so armazenadas como nmeros de 32 bits (4 bytes) assinalados no intervalo de -2.147.483.648 a 2.147.483.647. O caractere de declarao de tipo referente a Long o ampersand (&).

Tipo de dados Object


As variveis Object so armazenadas como endereos de 32 bits (4 bytes) que se referem a objetos. Usando a instruo Set, uma varivel declarada como um Object pode ter qualquer referncia de objeto atribuda a ela. Observao Embora uma varivel declarada com o tipo Object seja flexvel o suficiente para conter uma referncia a qualquer objeto, a ligao ao objeto referido por aquela varivel sempre atrasada (ligao por tempo de execuo). Para forar a ligao adiantada (ligao por tempo de compilao), atribua a referncia do objeto a uma varivel declarada com um nome de classe especfico.

Tipo de dados Single


As variveis Single (de vrgula flutuante de preciso nica) so armazenadas como nmeros IEEE de vrgula flutuante de 32 bits (4 bytes), com valor no intervalo de -3,402823E38 a -1,401298E-45 para valores negativos e de 1,401298E-45 a 3,402823E38 para valores positivos. O caractere de declarao de tipo para Single o ponto de exclamao (!).

Tipo de dados String


Existem dois tipos de seqncias de caracteres: de comprimento varivel e de comprimento fixo.
Uma seqncia de comprimento varivel pode conter at aproximadamente 2 bilhes (2^31) de caracteres. Uma seqncia de comprimento fixo pode conter de 1 at aproximadamente 64K (2^16) caracteres.

Observao Uma seqncia de caracteres de comprimento fixo Public no pode ser usada em um mdulo de classe. Os cdigos para caracteres String variam de 0 a 255. Os primeiros 128 caracteres (0127) do conjunto de caracteres correspondem s letras e smbolos de um teclado padro americano. Esses 128 primeiros caracteres so os mesmos definidos pelo conjunto de caracteres ASCII. Os 128 caracteres restantes (128255) representam caracteres especiais, como letras de alfabetos internacionais, acentos, smbolos monetrios e fraes. O caractere de declarao de tipo para String o cifro ($).

Tipo de dados definido pelo usurio


qualquer tipo de dados que voc define usando a instruo Type. Os tipos de dados definidos pelo usurio podem conter um ou mais elementos de um tipo de dados, uma matriz ou um tipo previamente definido pelo usurio. Por exemplo: Type MeuTipo MeuNome As String ' A varivel de seqncia de caracteres armazena um nome. MinhaDataNasc As Date ' Varivel de data armazena a data do nascimento. MeuSexo As Integer ' A varivel de inteiro armazena o sexo (0 para End Type ' feminino, 1 para masculino).

Tipo de dados Variant


O tipo de dados Variant o tipo de dados para todas as variveis que no foram explicitamente declaradas como algum outro tipo (usando instrues como Dim, Private, Public ou Static). O tipo de dados Variant no possui caractere de declarao de tipo.

Funes Internas

52

Um Variant um tipo de dados especial que contm qualquer tipo de dados com exceo de dados String de comprimento fixo e os tipos definidos pelo usurio. O Variant tambm pode conter valores especiais Empty, Error, Nothing e Null. Voc pode determinar como os dados em uma Variant so tratados usando as funes VarType ou TypeName. Os dados numricos podem ter qualquer valor de nmero inteiro ou real no intervalo de -1,797693134862315E308 a -4,94066E-324 para valores negativos e de 4,94066E-324 a 1,797693134862315E308 para valores positivos. Geralmente os dados numricos Variant so mantidos em seu tipo de dados original dentro de Variant. Por exemplo, se voc atribuir um Integer a uma Variant, as operaes subsequentes trataro a Variant como um Integer. Entretanto, se uma operao aritmtica for realizada em uma Variant contendo um Byte, um Integer, um Long ou um Single, e o resultado exceder o intervalo normal para o tipo de dados original, o resultado ser promovido dentro da Variant para o prximo tipo de dados maior. Um Byte promovido a Integer, um Integer promovido a Long e um Long e um Single so promovidos a Double. Ocorrer um erro quando as variveis de Variant contendo os valores Currency, Decimal e Double excederem seus respectivos intervalos. Voc pode usar o tipo de dados Variant no lugar de qualquer tipo de dados para trabalhar com dados de uma forma mais flexvel. Se o contedo de uma varivel Variant for dgitos, eles podem ser a representao em seqncia de caracteres dos dgitos ou seu valor real, dependendo do contexto. Por exemplo: Dim MinhaVar As Variant MinhaVar = 98052 No exemplo anterior, MinhaVar contm uma representao numricao valor real 98052. Os operadores aritmticos funcionam como esperado em variveis Variant que contm valores numricos ou dados de seqncia de caracteres que podem ser interpretados como nmeros. Se voc usar o operador + para adicionar MinhaVar a uma outra Variant contendo um nmero ou a uma varivel de um tipo numrico, o resultado ser uma soma aritmtica. O valor Empty denota uma varivel Variant que no foi inicializada (atribudo um valor inicial). Uma Variant contendo Empty ser 0 se for usada em um contexto numrico, e uma seqncia de caracteres de comprimento zero ("") se for usada em um contexto de seqncia de caracteres. No confunda Empty com Null. Null indica que a varivel Variant propositadamente no contm dados vlidos. Em uma Variant, Error representa um valor especial usado para indicar que ocorreu uma condio de erro em um procedimento. Entretanto, ao contrrio de outros tipos de erro, no ocorre a manipulao normal de erros no nvel do aplicativo. Isso permite que voc ou o prprio aplicativo, realize alguma ao alternativa com base no valor do erro. Os valores de Error so criados pela converso de nmeros reais em valores de erro usando a funo CVErr. Exemplo da funo Date Este exemplo utiliza a funo Date para retornar a data atual do sistema. Dim MinhaData MinhaData = Date ' MinhaData contm a data atual do sistema. Exemplo da instruo Date Este exemplo utiliza a instruo Date para definir a data do sistema do computador. No ambiente de desenvolvimento, a literal de data exibida em formato de data abreviada utilizando as definies de localidade do seu cdigo. Dim MinhaData MinhaData = #Fevereiro 12, 1985# ' Atribui uma data. Date = MinhaData ' Altera a data do sistema. Exemplo da funo DateAdd Este exemplo toma uma data e, utilizando a funo DateAdd, exibe uma data correspondente em um nmero especificado de meses no futuro. Dim PrimeiraData As Date ' Declara variveis. Dim TipoDoIntervalo As String Dim Nmero As Integer Dim Msg TipoDoIntervalo = "m" ' "m" especifica meses como intervalo. PrimeiraData = InputBox("Insira uma data") Nmero = InputBox("Insira o nmero de meses a adicionar") Msg = "Nova data: " & DateAdd(TipoDoIntervalo, Nmero, PrimeiraData) MsgBox Msg Exemplo da funo DateDiff Este exemplo utiliza a funo DateDiff para exibir o nmero de dias entre uma determinada data e hoje. Dim AData As Date' Declara as variveis. Dim Msg AData = InputBox("Insira uma data") Msg = "Dias a contar de hoje: " & DateDiff("d", Agora, AData) MsgBox Msg Exemplo da funo DatePart Este exemplo toma uma data e, utilizando a funo DatePart, exibe o trimestre do ano no qual ela ocorre. Dim AData As Date' Declara as variveis. Dim Msg AData = InputBox("Insira uma data:") Funes Internas

53

Msg = "Trimestre: " & DatePart("q", AData) MsgBox Msg Exemplo da funo DateSerial Este exemplo utiliza a funo DateSerial para retornar a data do ano, ms e dia especificados. Dim MinhaData ' MinhaData contm a data de 12 de fevereiro de 1969. MinhaData = DateSerial(1969, 2, 12) ' Retorna uma data. Exemplo da funo DateValue Este exemplo utiliza a funo DateValue para converter uma seqncia de caracteres em uma data. Voc pode tambm utilizar literais de data para atribuir diretamente uma data a uma varivel Variant ou Date, por exemplo, MinhaData = #2/12/69#). Dim MinhaData MinhaData = DateValue("12 Fevereiro 1969") ' Retorna uma data. Exemplo da funo Day Este exemplo utiliza a funo Day para obter o dia do ms de uma data especificada. No ambiente de desenvolvimento, a literal de data exibida em formato abreviado utilizando as definies de localidade do seu cdigo. Dim MinhaData, MeuDia MinhaData = #Fevereiro 12, 1969# ' Atribui uma data. MeuDia = Day(MinhaData) ' MeuDia contm 12. Exemplo da funo Hour Este exemplo utiliza a funo Hour para obter a hora de um horrio especificado. No ambiente de desenvolvimento, a literal de hora exibida em formato de hora abreviada utilizando as definies de localidade do seu cdigo. Dim MeuHorrio, MinhaHora MeuHorrio = #4:35:17 PM# ' Atribui um horrio. MinhaHora = Hour(MeuHorrio) ' MinhaHora contm 16. Exemplo da funo Minute Este exemplo utiliza a funo Minute para obter o minuto da hora de um horrio especificado. No ambiente de desenvolvimento, a literal de hora exibida em formato de hora abreviada utilizando as definies de localidade do seu cdigo. Dim MeuHorrio, MeuMinuto MeuHorrio = #4:35:17 PM# ' Atribui uma hora. MeuMinuto = Minute(MeuHorrio) ' MeuMinuto contm 35. Exemplo da funo Month Este exemplo utiliza a funo Month para obter o ms de uma data especificada. No ambiente de desenvolvimento, a literal de data exibida em formato de data abreviada utilizando as definies de localidade do seu cdigo. Dim MinhaData, MeuMs MinhaData = #Fevereiro 12, 1969# ' Atribui uma data. MeuMs = Month(MinhaData) ' MeuMs contm 2. Exemplo da funo Now Este exemplo utiliza a funo Now para retornar a data e a hora do sistema atual. Dim Hoje Hoje = Now ' Atribui a data e a hora atuais do sistema. Exemplo da funo Second Este exemplo utiliza a funo Second para obter o segundo do minuto de um horrio especificado. No ambiente de desenvolvimento, a literal de hora exibida em formato de hora abreviada utilizando as definies de localidade do seu cdigo. Dim MeuHorrio, MeuSegundo MeuHorrio = #4:35:17 PM# ' Atribui uma hora. MeuSegundo = Second(MeuHorrio) ' MeuSegundo contm 17. Exemplo da funo Time Este exemplo utiliza a funo Time para retornar o horrio atual do sistema. Dim MeuHorrio MeuHorrio = Time ' Retorna o horrio atual do sistema. Exemplo da instruo Time Este exemplo utiliza a instruo Time para definir o horrio do sistema do computador como um horrio definido pelo usurio. Dim MeuHorrio Funes Internas

54

MeuHorrio = #4:35:17 PM# ' Atribui um horrio. Time = MeuHorrio ' Define o horrio do sistema como MeuHorrio. Exemplo da funo Timer Este exemplo utiliza a funo Timer para pausar o aplicativo. O exemplo tambm utiliza DoEvents para submeter-se a outros processos durante a pausa. Dim TempoDePausa, Incio, Fim, TempoTotal If (MsgBox("Pressione Sim para pausar por 5 segundos", 4)) = vbYes Then TempoDePausa = 5 ' Define a durao. Incio = Timer ' Define a hora inicial. Do While Timer < Incio + TempoDePausa DoEvents ' Submete-se a outros processos. Loop Fim = Timer ' Define a hora final. TempoTotal = Fim - Incio ' Calcula o tempo total. MsgBox "Pausou por " & TempoTotal & " segundos" Else End End If Exemplo da funo TimeSerial Este exemplo utiliza a funo TimeSerial para retornar um horrio para a hora, minuto e segundo especificados. Dim MeuHorrio MeuHorrio = TimeSerial(16, 35, 17) ' MeuHorrio contm a representao ' serial de 4:35:17 PM. Exemplo da funo TimeValue Este exemplo utiliza a funo TimeValue para converter uma seqncia de caracteres em um horrio. Voc pode tambm utilizar literais de data para atribuir diretamente uma hora a uma varivel Variant ou Date, por exemplo, MeuHorrio = #4:35:17 PM#. Dim MeuHorrio MeuHorrio = TimeValue("4:35:17 PM") ' Retorna uma hora. Exemplo da funo Weekday Este exemplo utiliza a funo Weekday para obter o dia da semana de uma data especificada. Dim MinhaData, MeuDiaDaSemana MinhaData = #Fevereiro 12, 1969# ' Atribui uma data. MeuDiaDaSemana = Weekday(MinhaData) ' MeuDiaDaSemana contm 4 porque ' MinhaData representa uma quarta-feira. Exemplo da funo Year Este exemplo utiliza a funo Year para obter o ano de uma data especificada. No ambiente de desenvolvimento, a literal de data exibida em formato de data abreviada utilizando as definies de localidade do seu cdigo. Dim MinhaData, MeuAno MinhaData = #Fevereiro 12, 1969# ' Atribui uma data. MeuAno = Year(MinhaData) ' MeuAno contm 1969.

Funo Date
Retorna um Variant (Date) contendo a data atual do sistema. Sintaxe Date Comentrios Para definir a data do sistema, utilize a instruo Date.

Instruo Date
Define a data atual do sistema. Sintaxe Date = data Para sistemas com o Microsoft Windows 95, a especificao data exigida deve ser uma data de 1 de janeiro de 1980 a 31 de dezembro de 2099. Para sistemas que executam o Microsoft Windows NT, data deve ser uma data de 1 de janeiro de 1980 a 31 de dezembro de 2079.

Funo DateAdd
Retorna um Variant (Date) contendo uma data qual foi adicionado um segmento de tempo especfico. Sintaxe

Funes Internas

55

DateAdd(interval, number, date) A sintaxe da funo DateAdd possui estes argumentos nomeados: Parte Descrio interval Obrigatrio. Expresso de seqncia de caracteres que o segmento de tempo que voc deseja adicionar. number Obrigatrio. Expresso numrica que o nmero de segmentos que voc deseja adicionar. Pode ser positivo (para obter datas futuras) ou negativo (para obter datas passadas). date Obrigatrio. Variant (Date) ou literal que representa a data na qual o segmento adicionado. Definies O argumento interval possui estas definies: Definio Descrio yyyy Ano q Trimestre m Ms y Dia do ano d Dia w Dia da semana ww Semana h Hora n Minuto s Segundo Comentrios Voc pode utilizar a funo DateAdd para adicionar ou subtrair um segmento de tempo especfico de uma data. Por exemplo, voc pode utilizar DateAdd para calcular uma data a 30 dias de hoje ou uma hora a 45 minutos de agora. Para adicionar dias a date, voc pode utilizar Dia do ano ("y"), Dia ("d"), ou Dia da semana ("w"). A funo DateAdd no retorna uma data invlida. O exemplo a seguir adiciona um ms a 31 de janeiro: DateAdd("m", 1, "31-Jan-95") Neste caso, DateAdd retorna 28-fev-95 e no 31-fev-95. Se date fosse 31-jan-95, retornaria 29-fev-96 porque 1996 um ano bissexto. Se a data calculada fosse anterior ao ano 100 (isto , voc subtrairia mais anos do que esto em date), ocorreria um erro. Se number no for um valor Long, ser arredondado para o nmero inteiro mais prximo antes de ser avaliado.

Funo DateDiff
Retorna um Variant (Long) que especifica o nmero de segmentos de tempo entre duas datas especificadas. Sintaxe DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) A sintaxe da funo DateDiff possui estes argumentos nomeados: Parte Descrio interval Obrigatrio. Expresso de seqncia de caracteres que o segmento que voc utiliza para calcular a diferena entre data1 e data2. date1, date2 Obrigatrio; Variant (Date). Duas datas que voc deseja utilizar no clculo. firstdayofweek Opcional. Uma constante que especifica o primeiro dia da semana. Se no for especificada, assumido o domingo. firstweekofyear Opcional. Uma constante que especifica a primeira semana do ano. Se no for especificada, assumida como a semana em que ocorre o dia 1 de janeiro. Definies O argumento interval possui estas definies: Definio Descrio yyyy Ano q Trimestre m Ms y Dia do ano d Dia w Dia da semana ww Semana h Hora n Minuto s Segundo O argumento firstdayofweek possui estas definies: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. Funes Internas

56

VbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday

1 2 3 4 5 6 7

Domingo (padro) Segunda-feira Tera-feira Quarta-feira Quinta-feira Sexta-feira Sbado

O argumento firstweekofyear possui estas definies: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. vbFirstJan1 1 Inicia com a semana na qual ocorre o dia 1 de janeiro (padro). vbFirstFourDays 2 Inicia com a primeira semana que tem pelo menos quatro dias no ano novo. vbFirstFullWeek 3 Inicia com a primeira semana cheia do ano. Comentrios Voc pode utilizar a funo DateDiff para determinar quantos segmentos de tempo especificados existem entre duas datas. Por exemplo, voc pode utilizar DateDiff para calcular o nmero de dias entre duas datas, ou o nmero de semanas entre hoje e o final do ano. Para calcular o nmero de dias entre date1e date2, voc pode utilizar Dia do ano ("y") ou Dia ("d"). Quando interval for um Dia da semana ("w"), DateDiff retorna o nmero de semanas entre as duas datas. Se date1 cair em uma segunda-feira, DateDiff contar o nmero de segundas-feiras at date2. contada date2 mas no date1. Entretanto, se interval for Semana ("ww") a funo DateDiff retorna o nmero de semanas de calendrio entre as duas datas. Ela conta o nmero de segundas-feiras entre date1 e date2. DateDiff conta date2 se cair em um domingo, mas no conta date1, mesmo que caia em um domingo. Se date1 se referir a um ponto no tempo alm de date2, a funo DateDiff retornar um nmero negativo. O argumento firstdayofweek afeta os clculos que utilizam os smbolos de intervalo "w" e "ww". Se data1 ou data2 for uma literal de data,, o ano especificado se torna uma parte permanente daquela data. Entretanto, se data1 ou data2 for colocada entre aspas duplas (" ") e voc omitir o ano, o ano atual ser inserido no seu cdigo cada vez que a expresso data1 ou data2 for avaliada. Isto torna possvel escrever o cdigo que pode ser utilizado em anos diferentes. Quando compara 31 de dezembro com 1 de janeiro do ano imediatamente seguinte, DateDiff para Ano ("yyyy") retorna 1, mesmo que tenha se passado apenas um dia.

Funo DatePart
Retorna um Variant (Integer) que contm a parte especificada de uma data dada. Sintaxe DatePart(interval, date[,firstdayofweek[, firstweekofyear]]) A sintaxe da funo DatePart possui estes argumentos nomeados: Parte Descrio interval Obrigatrio. Expresso de seqncia de caracteres que o intervalo de tempo que voc deseja retornar. date Obrigatrio. Valor de Variant (Date) que voc deseja avaliar. firstdayofweek Opcional. Uma constante que especifica o primeiro dia da semana. Se no for especificada, assumido o domingo. firstweekofyear Opcional. Uma constante que especifica a primeira semana do ano. Se no for especificada, assumida como aquela em que ocorre o dia 1 de janeiro. Definies O argumento interval possui estas definies: Definio Descrio yyyy Ano q Trimestre m Ms y Dia do ano d Dia w Dia da semana ww Semana h Hora n Minuto s Segundo O argumento firstdayofweek possui estas definies: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. vbSunday 1 Domingo (padro) vbMonday 2 Segunda-feira vbTuesday 3 Tera-feira vbWednesday 4 Quarta-feira

Funes Internas

57

vbThursday vbFriday vbSaturday

5 6 7

Quinta-feira Sexta-feira Sbado

O argumento firstweekofyear possui estas definies: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. vbFirstJan1 1 Inicia com a semana na qual ocorre o dia 1 de janeiro (padro). vbFirstFourDays 2 Inicia com a semana que tem pelo menos quatro dias no ano novo. vbFirstFullWeek 3 Inicia com a primeira semana cheia do ano. Comentrios Voc pode utilizar a funo DatePart para avaliar uma data e retornar um segmento de tempo especfico. Por exemplo, voc poderia utilizar DataPart para calcular o dia da semana ou a hora atual. O argumento firstdayofweek afeta clculos que utilizam os smbolos de intervalo "w" e "ww". Se data for uma literal de data, o ano especificado torna-se uma parte permanente dessa data. Entretanto, se data estiver entre aspas duplas (" ") e voc omitir o ano, o ano atual ser inserido no seu cdigo toda vez que a expresso data for avaliada. Isto torna possvel escrever o cdigo que pode ser utilizado em anos diferentes.

Funo DateSerial
Retorna um Variant (Date) para um ano, ms e dia especficos. Sintaxe DateSerial(year, month, day) A sintaxe da funo DateSerial possui estes argumentos nomeados: Parte Descrio year Obrigatrio; Integer. Nmero entre 100 e 9999, inclusive, ou uma expresso numrica. month Obrigatrio; Integer. Qualquer expresso numrica. day Obrigatrio; Integer. Qualquer expresso numrica. Comentrios Para especificar uma data, como 31 de dezembro de 1991, o intervalo de nmeros para cada argumento de DateSerial deve estar no intervalo aceito para a unidade, isto , 131 para dias e 112 para meses. Entretanto, voc pode tambm especificar datas relativas para cada argumento utilizando qualquer expresso numrica que represente algum nmero de dias, meses ou anos, antes ou depois de uma certa data. O exemplo a seguir utiliza expresses numricas em vez de nmeros absolutos de data. Aqui a funo DateSerial retorna uma data que o dia anterior ao primeiro dia (1 - 1), dois meses antes de agosto (8 - 2), 10 anos antes de 1990 (1990 - 10); em outras palavras, 31 de maio de 1980. DateSerial(1990 - 10, 8 - 2, 1 - 1) Para o argumento year, os valores entre 0 e 99, inclusive, so interpretados como os anos 19001999. Para todos os outros argumentos year, utilize o ano de quatro dgitos (por exemplo, 1800). Quando qualquer argumento exceder o intervalo aceito para esse argumento, ele incrementado at a prxima unidade maior apropriada. Por exemplo, se voc especificar 35 dias, ser avaliado como um ms e alguns dias, dependendo em que poca do ano seja aplicado. Se qualquer argumento nico estiver fora do intervalo -32.768 a 32.767, ocorrer um erro. Se a data especificada pelos trs argumentos ficar fora do intervalo de datas aceitvel, ocorrer um erro.

Funo DateValue
Retorna um Variant (Date). Sintaxe DateValue(data) O argumento data requerido normalmente uma expresso de seqncia de caracteres que representa uma data de 1 de janeiro de 100 a 31 de dezembro de 9999. Entretanto, data tambm pode ser qualquer expresso que possa representar uma data, uma hora ou ambos, naquele intervalo. Comentrios Se data for uma seqncia de caracteres que inclui somente nmeros separados por separadores de data vlidos, DateValue reconhecer a ordem para ms, dia e ano de acordo com o formato Short Date que voc especificou para o seu sistema. DateValue tambm reconhece datas no ambguas que contenham nomes de meses, na forma longa ou abreviada. Por exemplo, alm de reconhecer 30/12/1991 e 30/12/91, DateValue reconhece tambm 30 de dezembro de 1991 e 30-dez-1991. Se a parte de ano de data for omitida, DateValue utiliza o ano atual da data do seu sistema de computador. Se o argumento data incluir informaes de hora, DateValue no a retorna. Entretanto, se data incluir informao de hora invlida (como "89:98"), ocorrer um erro.

Funo Day
Retorna um Variant (Integer) que especifica um nmero inteiro entre 1 e 31, inclusive, representando o dia do ms. Sintaxe Day(data) O argumento data requerido qualquer Variant, expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar uma data. Se data contiver Null, ser retornado Null.

Funes Internas

58

Funo Hour
Retorna um Variant (Integer) que especifica um nmero inteiro entre 0 e 23, inclusive, representando a hora do dia. Sintaxe Hour(hora) O argumento hora requerido qualquer Variant, expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar a hora. Se hora contiver Null, ser retornado Null.

Funes Internas

59

Funo Minute
Retorna um Variant (Integer) que especifica um nmero inteiro entre 0 e 59, inclusive, representando os minutos da hora. Sintaxe Minute(hora) O argumento hora requerido qualquer Variant, expresso numrica, expresso de seqncia de caracteres ou qualquer combinao que possa representar a hora. Se hora contiver Null, ser retornado Null.

Funo Month
Retorna um Variant (Integer) que especifica um nmero inteiro entre 1 e 12, inclusive, representando o ms do ano. Sintaxe Month(data) O argumento data requerido qualquer Variant, expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar uma data. Se data contiver Null, ser retornado Null.

Funo Now
Retorna um Variant (Date) que especifica a data e hora atual de acordo com a data e hora do sistema do seu computador. Sintaxe Now

Funo Second
Retorna um Variant (Integer) que especifica um nmero inteiro entre 0 e 59, inclusive, representando os segundos do minuto. Sintaxe Second(hora) O argumento hora requerido qualquer Variant, expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar a hora. Se hora contiver Null, ser retornado Null.

Funo Time
Retorna um Variant (Date) que indica a hora atual do sistema. Sintaxe Time Comentrios Para definir a hora do sistema utilize a instruo Time.

Funes Internas

60

Instruo Time
Define a hora do sistema. Sintaxe Time = hora O argumento hora requerido qualquer expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar uma hora. Comentrios Se hora for uma seqncia de caracteres, Time tentar convert-la para horas utilizando os separadores de hora que voc especificou para o seu sistema. Se no puder ser convertida para uma hora vlida, ocorrer um erro.

Funo Timer
Retorna um Single que representa o nmero de segundos decorridos desde a meia-noite. Sintaxe Timer

Funo TimeSerial
Retorna um Variant (Date) contendo uma indicao de hora para a hora, minuto e segundo especficos. Sintaxe TimeSerial(hour, minute, second)) A sintaxe da funo TimeSerial possui estes argumentos nomeados: Parte Descrio hour Obrigatrio; Variant (Integer). Nmero entre 0 (0:00 h) e 23 (23:00 h), inclusive, ou uma expresso numrica. minute Obrigatrio; Variant (Integer). Qualquer expresso numrica. second Obrigatrio; Variant (Integer). Qualquer expresso numrica. Comentrios Para especificar uma hora, como 11:59:59, o intervalo de nmeros para cada argumento de TimeSerial deve estar no intervalo normal da unidade, isto , 023 para horas e 059 para minutos e segundos. Entretanto, voc pode tambm especificar horas relativas para cada argumento utilizando qualquer expresso numrica que represente alguma quantidade de horas, minutos ou segundos antes e depois de uma determinada hora. O exemplo a seguir utiliza expressesf em vez de nmeros de horas absolutos. A funo TimeSerial retorna a hora de 15 minutos antes (-15) de seis horas antes do meiodia (12 - 6), ou 5:45:00 h. TimeSerial(12 - 6, -15, 0) Quando qualquer argumento excede seu intervalo normal, ele incrementado at a prxima unidade maior apropriada. Por exemplo, se voc especificar 75 minutos, isto ser avaliado como uma hora e 15 minutos. Se qualquer argumento nico estiver fora do intervalo -32.768 a 32.768, ocorrer um erro. Se a hora especificada pelos trs argumentos fizer com que a data fique fora do intervalo de datas aceitvel, ocorrer um erro.

Funes Internas

61

Funo TimeValue
Retorna um Variant (Date) contendo a hora. Sintaxe TimeValue(hora) O argumento hora requerido normalmente uma expresso de seqncia de caracteres representando uma hora entre 0:00:00 (0:00:00 h) e 23:59:59 (23:59:59 h), inclusive. Entretanto, hora pode ser tambm qualquer expresso quer represente uma hora naquele intervalo. Se hora contiver Null, ser retornado Null. Comentrios Voc pode inserir horas vlidas utilizando um relgio de 12 ou de 24 horas. Por exemplo, tanto "2:24PM" como "14:24" so argumentos de hora vlidos. Se o argumento hora contiver informao de data, TimeValue no o retorna. Entretanto, se hora incluir informao de data invlida, ocorrer um erro.

Funo Weekday
Retorna um Variant (Integer) contendo um nmero inteiro que representa o dia da semana. Sintaxe Weekday(date, [firstdayofweek]) A sintaxe da funo Weekday possui estes argumentos nomeados: Parte Descrio date Obrigatrio. Variant, expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar uma data. Se date contiver Null, ser retornado Null. firstdayofweek Opcional. Uma constante que especifica o primeiro dia da semana. Se no for especificada, ser assumida vbSunday. Definies O argumento firstdayofweek possui estas definies: Constante Valor Descrio vbUseSystem 0 Utiliza a definio NLS API. vbSunday 1 Domingo (padro) vbMonday 2 Segunda-feira vbTuesday 3 Tera-feira vbWednesday 4 Quarta-feira vbThursday 5 Quinta-feira vbFriday 6 Sexta-feira vbSaturday 7 Sbado Valores de Retorno A funo Weekday pode retornar qualquer um destes valores: Constante Valor Descrio vbSunday 1 Domingo vbMonday 2 Segunda-feira vbTuesday 3 Tera-feira vbWednesday 4 Quarta-feira vbThursday 5 Quinta-feira vbFriday 6 Sexta-feira vbSaturday 7 Sbado

Funo Year
Retorna um Variant (Integer) contendo um nmero inteiro que representa o ano. Sintaxe Year(data) O argumento data requerido qualquer Variant, expresso numrica, expresso de seqncia de caracteres, ou qualquer combinao que possa representar uma data. Se data contiver Null, ser retornado Null.

Funo Array
Retorna uma Variant que contm uma matriz. Sintaxe Array(arglist) O argumento obrigatrio arglist uma lista de valores delimitados por vrgulas que so atribudos aos elementos da matriz contidos dentro de Variant. Se nenhum argumento for especificado, uma matriz de tamanho zero ser criada. Comentrios A notao utilizada para referir-se a um elemento de uma matriz consiste no nome da varivel seguido por um nmero de ndice entre parnteses indicando o elemento desejado. No exemplo abaixo, a primeira instruo cria uma varivel denominada A como um Variant. A segunda instruo atribui uma matriz varivel A. A ltima instruo atribui o valor contido no segundo elemento de matriz a outra varivel.

Funes Internas

62

Dim A As Variant A = Array(10,20,30) B = A(2) O limite inferior de uma matriz criada com a funo Array ser sempre zero. Ao contrrio de outros tipos de matrizes, ela no afetada pelo limite inferior especificado pela instruo Option Base. Observao: Uma Variant que no declarada como matriz pode, ainda assim, conter uma matriz. Uma varivel Variant pode conter uma matriz de qualquer tipo, com exceo de seqncias de caracteres de comprimento zero e tipos definidos pelo usurio. Embora um Variant que contm uma matriz seja conceitualmente diferente de uma matriz cujos elementos sejam de tipo Variant, os elementos da matriz so acessados da mesma forma.

Funes Internas

63

Instruo Const
Declara as constantes a serem utilizadas no lugar de valores literais. Sintaxe [Public | Private] Const constname[As type] = expression A sintaxe da instruo Const tem estas partes: Parte Descrio Public Opcional. Palavra-chave utilizada no nvel de mdulo para declarar constantes que esto disponveis para todos os procedimentos em todos os mdulos. No permitida em procedimentos. Private Opcional. Palavra-chave utilizada no nvel de mdulo para declarar constantes disponveis apenas dentro do mdulo no qual a declarao feita. No permitida em procedimentos. constname Obrigatrio. Nome da constante; segue a varivel padro que d nome s convenes. type Opcional. Tipo de dados da constante; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (atualmente no suportado), Date, String ou Variant. Utilize uma clusula type As separada para cada constante que for declarada. expression Obrigatrio. Um literal, outra constante ou qualquer combinao que inclua todos os operadores aritmticos ou lgicos com exceo de Is. Comentrios As constantes so privadas como padro. Dentro de procedimentos, as constantes sempre sero particulares; sua visibilidade no pode ser alterada. Em mdulos padro, a visibilidade padro de constantes no nvel de mdulo pode ser alterada atravs da palavra-chave Public. Nos mdulos de classe, contudo, as constantes s podem ser privadas e sua visibilidade no pode ser alterada atravs da palavra-chave Public. Para combinar diversas declaraes de constantes na mesma linha, separe cada atribuio de constante com uma vrgula. Quando as declaraes de constante so combinadas dessa forma, a palavra-chave Public ou Private, se utilizada, aplicase a todas elas. Voc no pode utilizar variveis, funes definidas pelo usurio ou funes intrnsecas ao Visual Basic (como Chr) em expresses atribudas a constantes. Observao: As constantes podem tornar seus programas automaticamente documentveis e fceis de serem modificados. Ao contrrio das variveis, as constantes no podem ser alteradas inadvertidamente enquanto seu programa est sendo executado. Se voc no declarar explicitamente o tipo de constante utilizando As type, a constante receber o tipo de dados mais apropriado expression. As constantes declaradas em um procedimento Sub, Function ou Property so locais a esse procedimento. Uma constante declarada fora de um procedimento definida em todo o mdulo no qual declarada. Voc pode utilizar constantes em qualquer lugar onde for possvel utilizar uma expresso.

Funes Internas

64

Funo CreateObject
Cria e retorna uma referncia a um objeto ActiveX. Sintaxe CreateObject(class) O argumento class utiliza a sintaxe appname.objecttype e tem as partes abaixo: Parte Descrio appname Obrigatria; Variant (String). O nome do aplicativo que fornece o objeto. objecttype Obrigatria; Variant (String). O tipo ou classe do objeto a ser criado. Comentrios Qualquer aplicativo que suporte Automao fornece pelo menos um tipo de objeto. Por exemplo, um aplicativo de processamento de texto pode fornecer um objeto Application, um objeto Document e um objeto Toolbar. Para criar um objeto ActiveX, atribua o objeto retornado por CreateObject a uma varivel de objeto: Declara uma varivel de objeto para conter a referncia do objeto Dim as Object provoca ligao tardia. Dim ExcelPlan As Object Set ExcelPlan = CreateObject("Excel.Plan") Esse cdigo inicia o aplicativo que cria o objeto, nesse caso uma planilha do Microsoft Excel. Aps um objeto ter sido criado, ele pode ser referido no cdigo atravs da varivel de objeto que voc definiu. No exemplo abaixo, voc acessa as propriedades e os mtodos do novo objeto utilizando a varivel de objeto, ExcelPlan e outros objetos do Microsoft Excel, incluindo o objeto Application e a coleo Cells. ' Torna o Excel visvel atravs do objeto Application ExcelPlan.Application.Visible = True ' Coloca um texto na primeira clula da planilha ExcelPlan.Cells(1, 1).Value = "Esta a coluna A, fileira 1" ' Salva a planilha no diretrio C:\test.doc ExcelPlan.SaveAs "C:\ TEST.DOC" ' Fecha o Excel com o mtodo Quit no objeto Application ExcelPlan.Application.Quit ' Libera a varivel de objeto Set ExcelPlan = Nothing Declarar uma varivel de objeto com a clusula As Object cria uma varivel que pode conter uma referncia a qualquer tipo de objeto. No entanto, o acesso ao objeto atravs dessa varivel d-se com uma ligao tardia, ou seja, a ligao ocorre quando seu programa j est sendo executado. Para criar uma varivel de objeto que resulte em ligao inicial, ou seja, quando o programa compilado, declare a varivel do objeto com um cdigo de classe especfico. Por exemplo, voc pode declarar e criar as referncias abaixo do Microsoft Excel: Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.WorkSheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) A referncia atravs de uma varivel de vinculao inicial pode proporcionar melhor desempenho, mas s pode conter uma referncia classe especificada na declarao. Voc pode passar um objeto retornado pela funo CreateObject para uma funo que espere um objeto como argumento. Por exemplo, o cdigo abaixo cria e passa uma referncia a um objeto Excel.Application: Call MinhaSub (CreateObject("Excel.Application")) Observao: Utilize CreateObject quando no houver nenhuma ocorrncia atual do objeto. Se uma ocorrncia do objeto j estiver sendo executada, uma nova ocorrncia iniciada e um objeto do tipo especificado criado. Para utilizar a ocorrncia atual ou para iniciar o aplicativo e faz-lo carregar um arquivo, utilize a funo GetObject. Se um objeto tiver registrado a si prprio como um objeto de ocorrncia nica, apenas uma ocorrncia do objeto ser criada, independente de quantas vezes CreateObject for executado.

Instruo Declare
Utilizada no nvel de mdulo para declarar referncias a procedimentos externos em uma biblioteca de vnculo dinmico (DLL). Sintaxe 1 [Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])] Sintaxe 2 [Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type] A sintaxe da instruo Declare tem estas partes: Parte Descrio Public Opcional. Utilizada para declarar procedimentos que estejam disponveis a todos os outros procedimentos em todos os mdulos. Private Opcional. Utilizada para declarar procedimentos que estejam disponveis apenas dentro do mdulo no qual a declarao feita. Sub Opcional (tanto Sub quanto Function devem aparecer). Indica que o Funes Internas

65

Function name Lib Libname Alias

Aliasname

Arglist Type

procedimento no retorna um valor. Opcional (Sub ou Function deve aparecer). Indica que o procedimento retorna um valor que pode ser utilizado em uma expresso. Obrigatria. Qualquer nome de procedimento vlido. Observe que os pontos de entrada da DLL coincidem maisculas e minsculas. Obrigatria. Indica que uma DLL ou recurso de cdigo contm o procedimento que est sendo declarado. A clusula Lib exigida para todas as declaraes. Obrigatria. Nome da DLL ou recurso de cdigo que contm o procedimento declarado. Opcional. Indica que o procedimento que est sendo chamado possui outro nome na DLL. Isso til quando o nome do procedimento externo o mesmo de uma palavra-chave. Voc tambm pode utilizar Alias quando um procedimento de DLL tem o mesmo nome de uma varivel pblica, constante ou qualquer outro procedimento no mesmo escopo. Alias tambm til se qualquer caractere do nome do procedimento da DLL no for permitido pela conveno de nomenclatura da DLL. Opcional. Nome do procedimento da DLL ou recurso de cdigo. Se o primeiro caractere no for o sinal numrico (#), aliasname ser o nome do ponto de entrada do procedimento na DLL. Se (#) for o primeiro caractere, todos os caracteres seguintes devero indicar o nmero ordinal do ponto de entrada do procedimento. Opcional. Lista de variveis que representam argumentos que so passados ao procedimento quando ele chamado. Opcional. Tipo de dados do valor retornado por um procedimento Function; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (atualmente no-suportado), Date, String (apenas de comprimento varivel) ou Variant, um tipo definido pelo usurio ou um tipo de objeto.

O argumento arglist apresenta a sintaxe e as partes abaixo: [Optional] [ByVal | ByRef] [ParamArray] varname [( )] [As type] Parte Optional Descrio Opcional. Indica que um argumento no obrigatrio. Se utilizado, todos os argumentos subseqentes em arglist devero ser opcionais e declarados atravs da palavra-chave Optional. Optional no pode ser utilizado para qualquer argumento se ParamArray for utilizado. ByVal Opcional. Indica que o argumento passado por valor. ByRef Indica que o argumento passado por referncia. ByRef o padro no Visual Basic. ParamArray Opcional. Utilizado apenas como o ltimo argumento em arglist para indicar que o argumento final uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite que voc fornea um nmero arbitrrio de argumentos. A palavra-chave ParamArray no pode ser utilizada com ByVal, ByRef ou Optional. varname Obrigatria. Nome da varivel que representa o argumento passado ao procedimento; segue as convenes de nomenclatura padro de variveis. () Obrigatria para variveis de matriz. Indica que varname uma matriz. type Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (atualmente no-suportado), Date, String (apenas de comprimento varivel), Object, Variant, um tipo definido pelo usurio ou um tipo de objeto. Comentrios Para procedimentos Function, o tipo de dados do procedimento determina o tipo de dados retornado. Voc pode utilizar uma clusula As seguindo arglist para especificar o tipo de retorno da funo. Dentro de arglist, voc pode utilizar uma clusula As para especificar o tipo de dados de qualquer um dos argumentos passados ao procedimento. Alm de especificar qualquer tipo de dados padro, voc pode especificar As Any em arglist para inibir a verificao de tipo e permitir que qualquer tipo de dados seja passado ao procedimento. Parnteses vazios indicam que o procedimento Sub ou Function no possui argumentos e que o Visual Basic deve garantir que nenhum argumento ser passado. No exemplo abaixo, First no possui argumentos. Se voc utilizar argumentos em um chamada para First, um erro ser gerado: Declare Sub First Lib "MinhaBib"() Se voc incluir uma lista de argumentos, o nmero e tipo de argumentos so verificados a cada vez que o procedimento for chamado. No exemplo abaixo, First aceita um argumento Long: Declare Sub First Lib "MinhaLib" (X As Long)

Funes Internas

66

Observao: A presena de seqncias de caracteres de comprimento fixo na lista de argumentos de uma instruo Declare no permitida; apenas seqncias de caracteres de comprimento varivel podem ser passadas a procedimentos. Seqncias de caracteres de comprimento fixo podem aparecer como argumentos de procedimentos, mas so convertidas em seqncias de caracteres de comprimento varivel antes de serem passadas. Observao: A constante vbNullString utilizada ao chamar-se procedimentos externos, quando os procedimentos externos exigem uma seqncia de caracteres cujo valor seja zero. Isso diferente de uma seqncia de caracteres de comprimento zero ("").

Instrues Deftype
Utilizadas a nvel de mdulo para definir o tipo de dados padro para variveis, argumentos passados a procedimentos e o tipo de retorno para os procedimentos Function e Property Get cujos nomes se iniciem pelos caracteres especificados. Sintaxe DefBool letterrange[, letterrange] . . . DefByte letterrange[, letterrange] . . . DefInt letterrange[, letterrange] . . . DefLng letterrange[, letterrange] . . . DefCur letterrange[, letterrange] . . . DefSng letterrange[, letterrange] . . . DefDbl letterrange[, letterrange] . . . DefDec letterrange[, letterrange] . . . DefDate letterrange[, letterrange] . . . DefStr letterrange[, letterrange] . . . DefObj letterrange[, letterrange] . . . DefVar letterrange[, letterrange] . . . O argumento obrigatrio letterrange apresenta a sintaxe abaixo: letter1[-letter2] Os argumentos letter1 e letter2 especificam o intervalo de nomes para o qual voc pode definir um tipo de dados padro. Cada argumento representa a primeira letra da varivel, argumento, procedimento Function ou nome de procedimento Property Get e pode ser qualquer letra do alfabeto. A caixa das letras em letterrange no relevante. Comentrios O nome da instruo determina o tipo de dados: Instruo Tipo de dados DefBool Boolean DefByte Byte DefInt Integer DefLng Long DefCur Currency DefSng Single DefDbl Double DefDec Decimal (atualmente no-suportado) DefDate Date DefStr String DefObj Object DefVar Variant Por exemplo, no fragmento de programa abaixo, Message uma varivel de seqncia de caracteres: DefStr A-Q ... Message = "Sem espao em pilha." Uma instruo Deftype afeta somente o mdulo onde ela utilizada. Por exemplo, uma instruo DefInt em um mdulo afeta somente o tipo de dados padro de variveis, argumentos passados a procedimentos e o tipo de retorno para procedimentos Function e Property Get declarados nesse mdulo; o tipo de dados padro de variveis, argumentos e os tipos de retorno em outros mdulos no so afetados. Caso no sejam explicitamente declarados atravs de uma instruo Deftype, o tipo de dados padro para todas as variveis, todos os argumentos, todos os procedimentos Function e todos os procedimentos Property Get ser Variant. Quando voc especifica um intervalo de letras, ele geralmente define o tipo de dados para variveis iniciadas com letras entre os primeiros 128 caracteres do conjunto de caracteres. No entanto, quando voc especifica o intervalo de letras A Z, voc define o padro para o tipo de dados especificado para todas as variveis, incluindo as iniciadas por caracteres internacionais da parte estendida do conjunto de caracteres (128 255). Depois que o intervalo A Z tiver sido especificado, voc no poder redefinir qualquer subintervalo de varivel utilizando instrues Deftype. Uma vez que um intervalo tenha sido especificado, se voc incluir uma letra predefinida em uma outra instruo Deftype, um erro ser gerado. No entanto, voc pode especificar explicitamente o tipo de dados de qualquer varivel, definida ou no, utilizando uma instruo Dim com uma clusula As type. Por exemplo, voc pode utilizar o cdigo abaixo no nvel do mdulo para definir uma varivel como um Double, embora o tipo de dados padro seja Integer: DefInt A-Z Dim PercTaxa As Double As instrues Deftype no afetam os elementos de tipos definidos pelo usurio porque eles devem ser explicitamente declarados.

Funes Internas

67

Instruo Dim
Declara variveis e aloca espao de armazenamento. Sintaxe Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . . A sintaxe da instruo Dim tem estas partes: Parte Descrio WithEvents Opcional. Palavra-chave que especifica que varname uma varivel de objeto utilizada para responder a eventos acionados por um objeto ActiveX. vlida somente em mdulos de classe. Voc pode declarar quantas variveis individuais desejar utilizando WithEvents, mas no pode criar matrizes com WithEvents. Voc no pode utilizar New com WithEvents. varname Obrigatria. Nome da varivel; segue as convenes de nomenclatura padro de variveis. subscripts Opcional. Dimenses de uma varivel de matriz; at 60 dimenses mltiplas podem ser declaradas. O argumento subscripts utiliza a sintaxe abaixo: [inferior To] superior [, [inferior To] superior] . . . Quando no enunciado explicitamente em inferior, o limite inferior de uma matriz controlado pela instruo Option Base. O limite inferior zero se nenhuma instruo Option Base estiver presente. New Opcional. Palavra-chave que permite a criao implcita de um objeto. Se voc utilizar New ao declarar a varivel de objeto, uma nova ocorrncia do objeto ser criada na primeira referncia a ele. Dessa forma, voc no precisa utilizar a instruo Set para atribuir a referncia do objeto. A palavra-chave New no pode ser utilizada para declarar variveis de qualquer tipo de dados intrnseco, no pode ser utilizada para declarar instncias de objetos dependentes e nem ser utilizada com WithEvents. type Opcional. Tipo de dados da varivel; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (atualmente no-suportado), Date, String (para seqncias de caracteres de comprimento varivel), String * comprimento (para seqncias de caracteres de comprimento fixo), Object, Variant, um tipo definido pelo usurio ou um tipo de objeto. Utilize uma clusula As type separada para cada varivel que voc declarar. Comentrios As variveis declaradas com Dim no nvel de mdulo esto disponveis para todos os procedimentos dentro do mdulo. No nvel de procedimento, as variveis esto disponveis somente dentro do procedimento. Utilize a instruo Dim no nvel de mdulo ou procedimento para declarar o tipo de dados de uma varivel. Por exemplo, a instruo abaixo declara uma varivel como Integer. Dim NmeroDeEmpregados As Integer Tambm possvel utilizar uma instruo Dim para declarar o tipo de objeto de uma varivel. O exemplo abaixo declara uma varivel para uma nova ocorrncia de uma planilha. Dim X As New Planilha Se a palavra-chave New no for utilizada para declarar uma varivel de objeto, um objeto j existente dever ser atribudo a uma varivel referente ao objeto atravs da instruo Set antes que ele possa ser utilizado. At ter um objeto atribudo a ela, a varivel de objeto declarada apresentar o valor especial Nothing, que indica que ela no se refere a nenhuma ocorrncia especfica de um objeto. Voc tambm pode utilizar a instruo Dim com parnteses vazios para declarar uma matriz dinmica. Aps declar-la, utilize a instruo ReDim dentro de um procedimento para definir o nmero de dimenses e elementos na matriz. Se voc tentar declarar novamente uma dimenso para uma varivel de matriz cujo tamanho tenha sido especificado explicitamente em uma instruo Private, Public ou Dim, um erro ser gerado. Se voc no especificar um tipo de dados ou de objeto e se no houver nenhuma instruo Deftype no mdulo, a varivel ser Variant como padro. Quando as variveis so inicializadas, uma varivel numrica inicializada como 0, uma seqncia de caracteres de comprimento varivel inicializada como uma seqncia de caracteres de comprimento zero ("") e uma seqncia de caracteres de comprimento fixo preenchida com zeros. As variveis Variant so inicializadas como Empty. Cada elemento de uma varivel de tipo definida pelo usurio inicializado como se fosse uma varivel independente. Observao: Quando voc utiliza a instruo Dim em um procedimento, ela geralmente colocada no incio do procedimento.

Instruo Enum
Declara um tipo para uma enumerao. Sintaxe [Public | Private] Enum name membername [= constantexpression] membername [= constantexpression] ...

Funes Internas

68

End Enum A instruo Enum tem estas partes: Parte Public Private name membername constantexpression

Descrio Opcional. Especifica que o tipo Enum visvel atravs de todo o projeto. Os tipos Enum so Public como padro. Opcional. Especifica que o tipo Enum somente visvel dentro do mdulo em que ele aparece. Obrigatrio. O nome do tipo Enum. O name deve ser um identificador do Visual Basic vlido e especificado como o tipo ao declarar variveis ou parmetros do tipo Enum. Obrigatrio. Um identificador do Visual Basic vlido especificando o nome pelo qual um elemento componente do tipo Enum ser conhecido. Opcional. O valor do elemento (avaliado como Long). Pode ser outro tipo Enum. Se nenhuma constantexpression for especificada, o valor atribudo ser ou zero (se for o primeiro membername) ou 1 maior que o valor do membername imediatamente anterior.

Comentrios As variveis de enumerao so variveis declaradas com um tipo Enum. Ambas as variveis e parmetros podem ser declarados com um tipo Enum. Os elementos do tipo Enum so inicializados como valores constantes dentro da instruo Enum. Os valores atribudos no podem ser modificados em tempo de execuo e podem incluir nmeros negativos ou positivos. Por exemplo: Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum Uma instruo Enum somente pode aparecer em nvel de mdulo. Uma vez que o tipo Enum definido, ele pode ser usado para declarar variveis, parmetros ou procedimentos retornando seu tipo. Voc no pode qualificar um nome de tipo Enum com um nome de mdulo. Tipos Public Enum em um mdulo de classe no so membros da classe; entretanto, eles so gravados na biblioteca de tipos. Tipos Enum definidos em mdulos padro no so gravados em bibliotecas de tipos. Os tipos Public Enum de mesmo nome no podem ser definidos em ambos os mdulos padro e mdulos de classe, pois eles compartilham o mesmo espao de nome. Quando dois tipos Enum em diferentes tipos de biblioteca tm o mesmo nome, mas elementos diferentes, uma referncia a uma varivel do tipo depende de qual biblioteca de tipos tem prioridade mais alta nas References. Voc no pode usar um tipo Enum como destino de um bloco With.

Funes Internas

69

Instruo Erase
Reinicializa os elementos de matrizes de tamanho fixo e libera espao de armazenamento de matrizes dinmicas. Sintaxe Erase arraylist O argumento obrigatrio arraylist uma ou mais variveis de matrizes delimitadas por vrgulas a serem apagadas. Comentrios Erase comporta-se de formas diferentes dependendo da matriz ser de tamanho fixo (normal) ou dinmica. Erase no recupera memria para matrizes de tamanho fixo. Erase define os elementos de uma matriz fixa da seguinte forma: Tipo de matriz Efeito de Erase em elementos de matriz fixa Matriz numrica fixa Define cada elemento como zero. Matriz de seqnciaDefine cada elemento como uma seqncia de caracteres de de caracteres fixacomprimento zero (""). (tamanho varivel) Matriz de seqnciaDefine cada elemento como zero. de caracteres fixa (tamanho fixo) Matriz Variant fixa Define cada elemento como Empty. Matriz de tiposDefine cada elemento como se fosse uma varivel independente. definidos pelo usurio Matriz de objetos Define cada elemento com o valor especial Nothing. Erase libera a memria utilizada por matrizes dinmicas. Antes que seu programa possa se referir novamente matriz dinmica, ele dever declarar as dimenses da varivel de matriz novamente, atravs da instruo ReDim.

Instruo Event
Declara um evento definido pelo usurio. Sintaxe [Public] Event procedurename [(arglist)] A instruo Event tem estas partes: Parte Descrio Public Opcional. Especifica que o Event seja visvel em todo o projeto. Os tipos de Events so Public como padro. Observe que os eventos somente podem ser provocados no mdulo em que so declarados. procedurename Obrigatrio. Nomeie o evento; siga as convenes padro de nomenclatura de variveis. O argumento arglist tem a seguinte sintaxe e partes: [ByVal | ByRef] varname[( )] [As type] Parte ByVal ByRef varname type Descrio Opcional. Indica que o argumento foi passado por valor. Opcional. Indica que o argumento passado por referncia. ByRef o padro no Visual Basic. Obrigatrio. Nome da varivel representando o argumento que est sendo passado ao procedimento; segue as convenes padro de nomenclatura de variveis. Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no suportado atualmente), Date, String (somente comprimento varivel), Object, Variant, um tipo definido pelo usurio, ou um tipo de objeto.

Comentrios Uma vez declarado o evento, use a instruo RaiseEvent para dispar-lo. Ocorrer um erro de sintaxe se uma declarao Event aparecer em um mdulo padro. Um evento no pode ser declarado para retornar um valor. Um evento tpico deve ser declarado e provocado como mostram os fragmentos abaixo: ' Declarar um evento a nvel de mdulo de um mdulo de classe Event LogonCompleted (UserName as String) Sub RaiseEvent LogonCompleted("AntoineJan") End Sub

Instruo Function
Declara o nome, os argumentos e o cdigo que formam o corpo de um procedimento Function. Sintaxe

Funes Internas

70

[Public

| Private] [Static] Function name [(arglist)] [As [statements] [name = [Exit Function] [statements] [name = expression] End Function A sintaxe da instruo Function tem estas partes: Parte Descrio Public Opcional. Indica que o procedimento Function est acessvel a todos os outros procedimentos em todos os mdulos. Se utilizado em um mdulo que contenha Option Private, o procedimento no estar disponvel fora do projeto. Private Opcional. Indica que o procedimento Function est acessvel apenas a outros procedimentos no mdulo onde ele declarado. Static Opcional. Indica que as variveis locais do procedimento Function esto preservadas entre as chamadas. O atributo Static no afeta as variveis que so declaradas fora de Function, mesmo que elas sejam utilizadas no procedimento. name Obrigatria. Nome de Function; segue as convenes de nomenclatura padro de variveis. arglist Opcional. Lista de variveis que representam argumentos passados ao procedimento Function quando ele chamado. Variveis mltiplas so separadas por vrgulas. type Opcional. O tipo de dados do valor retornado pelo procedimento Function; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (atualmente no-suportado), Date, String (exceto seqncias de caracteres de comprimento fixo), Object, Variant ou qualquer tipo definido pelo usurio. Matrizes de qualquer tipo no podem ser retornadas, mas um Variant que contenha uma matriz pode. statements Opcional. Qualquer grupo de instrues a serem executadas dentro do procedimento Function. expression Opcional. Valor de retorno de Function. O argumento arglist apresenta a sintaxe e as partes abaixo: [Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue] Parte Optional Descrio Opcional. Indica que um argumento no obrigatrio. Se utilizada, todos os argumentos subseqentes em arglist devero ser opcionais e declarados atravs da palavra-chave Optional. Optional no pode ser utilizado para qualquer argumento se ParamArray for utilizado. Opcional. Indica que o argumento passado por valor. Opcional. Indica que o argumento passado por referncia. ByRef o padro no Visual Basic. Opcional. Utilizada apenas como o ltimo argumento em arglist para indicar que o argumento final uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite que voc fornea um nmero arbitrrio de argumentos. Ela no pode ser utilizada com ByVal, ByRef ou Optional. Obrigatria. Nome da varivel que representa o argumento; segue as convenes de nomenclatura padro de variveis. Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (atualmente no-suportado) Date, String (somente de comprimento varivel), Object, Variant. Se o parmetro no for Optional, um tipo definido pelo usurio ou um tipo de objeto tambm pode ser especificado. Opcional. Qualquer constante ou expresso de constante. Vlido somente para parmetros Optional. Se o tipo for um Object, um valor padro explcito s poder ser Nothing.

type] expression]

ByVal ByRef ParamArray

varname type

defaultvalue

Comentrios Se no forem especificados explicitamente atravs de Public ou Private, os procedimentos Function sero pblicos como padro. Se Static no for utilizado, o valor de variveis locais no ser preservado entre as chamadas. A palavra-chave Friend somente pode ser usada em mdulos de classe. Entretanto, procedimentos Friend podem ser acessados por procedimentos em qualquer mdulo de um projeto. Um procedimento Friend no aparece na biblioteca de tipos de sua classe pai, nem pode um procedimento Friend ser acoplado posteriormente. Ateno Os procedimentos Function podem ser recursivos; ou seja, eles podem chamar a si prprios para efetuar uma determinada tarefa. No entanto, a recurso pode levar ao estouro da pilha. A palavra-chave Static em geral no utilizada com procedimentos recursivos Function. Funes Internas

71

Todo o cdigo executvel deve estar em procedimentos. Voc no pode definir um procedimento Function dentro de outro procedimento Function, Sub ou Property. A instruo Exit Function causa a sada imediata de um procedimento Function. A execuo do programa continua com a instruo seguinte quela que chamou o procedimento Function. Qualquer nmero de instrues Exit Function pode aparecer em qualquer lugar de um procedimento Function. Assim como um procedimento Sub, um procedimento Function um procedimento separado que pode aceitar argumentos, executar uma srie de instrues e alterar os valores de seus argumentos. No entanto, ao contrrio de um procedimento Sub, voc pode utilizar um procedimento Function direita de uma expresso da mesma forma que voc utiliza qualquer funo intrnseca, como Sqr, Cos ou Chr, quando voc deseja utilizar o valor retornado pela funo. Voc chama um procedimento Function utilizando o nome da funo, seguido pela lista de argumentos entre parnteses, em uma expresso. Consulte a instruo Call para obter Especificidades sobre como chamar procedimentos Function. Para retornar um valor de uma funo, atribua o valor ao nome da funo. Qualquer quantidade dessas atribuies pode aparecer em qualquer lugar do procedimento. Se no for atribudo um valor a name, o procedimento retornar um valor padro: uma funo numrica retornar 0, uma funo de seqncia de caracteres retornar uma seqncia de caracteres de comprimento zero ("") e uma funo Variant retornar Empty. Uma funo que retorna uma referncia de objeto retornar Nothing se nenhuma referncia de objeto for atribuda a name (utilizando Set) dentro de Function. O exemplo abaixo mostra como atribuir um valor de retorno a uma funo denominada PesquisaBinria. Neste caso, False atribudo ao nome para indicar que um certo valor no foi encontrado. Function PesquisaBinria(. . .) As Boolean ... ' Valor no encontrado. Retorna um valor False. If inferior > superior Then PesquisaBinria = False Exit Function End If ... End Function As variveis utilizadas em procedimentos Function dividem-se em duas categorias: aquelas explicitamente declaradas dentro do procedimento e aquelas que no so declaradas dessa forma. As variveis que so explicitamente declaradas dentro de um procedimento (utilizando Dim ou equivalente) so sempre locais em relao ao procedimento. As variveis utilizadas mas no explicitamente declaradas em um procedimento tambm so locais, a menos que explicitamente declaradas em algum nvel superior fora do procedimento. Ateno Um procedimento pode utilizar uma varivel que no explicitamente declarada no procedimento, mas poder ocorrer um conflito de nomenclatura se algo definido no nvel do mdulo apresentar o mesmo nome. Se o seu procedimento referir-se a uma varivel no declarada que tenha o mesmo nome de outro procedimento, constante ou varivel, pressupe-se que seu procedimento se refere quele nome do nvel do mdulo. Para evitar esse tipo de conflito, convm declarar variveis de forma explcita. Voc pode utilizar uma instruo Option Explicit para forar a declarao explcita de variveis. Ateno O Visual Basic pode reorganizar expresses aritmticas para aumentar a eficcia interna. Evite utilizar um procedimento Function em uma expresso aritmtica quando a funo alterar o valor das variveis na mesma expresso.

Funo GetObject
Retorna uma referncia a um objeto ActiveX de um arquivo. Sintaxe GetObject([pathname] [, class]) A sintaxe da funo GetObject apresenta os argumentos nomeados abaixo: Parte Descrio pathname Opcional; Variant (String). Indica o caminho completo e nome do arquivo que contm o objeto a ser recuperado. Se pathname for omitido, class passa a ser obrigatrio. class Opcional; Variant (String). Uma seqncia de caracteres que representa a classe do objeto. O argumento class utiliza a sintaxe appname.objecttype e possui partes abaixo: Parte Descrio appname Obrigatria; Variant (String). Nome do aplicativo que fornece o objeto. objecttype Obrigatria; Variant (String). Tipo ou classe do objeto a ser criado. Comentrios Utilize a funo GetObject para acessar um objeto ActiveX de um arquivo e atribuir o objeto a uma varivel de objeto. Utilize a instruo Set para atribuir o objeto retornado por GetObject varivel do objeto. Por exemplo: Dim ObjetoCAD As Object Set ObjetoCAD = GetObject("C:\CAD\SCHEMA.CAD") Quando esse cdigo executado, o aplicativo associado ao pathname especificado iniciado e o objeto no arquivo especificado ativado. Se pathname for uma seqncia de caracteres de comprimento zero (""), GetObject retornar uma nova ocorrncia de objeto do tipo especificado. Se o argumento do pathname for omitido, GetObject retornar um objeto atualmente ativo do tipo especificado. Se no houver nenhum objeto do tipo especificado, um erro ser gerado. Funes Internas

72

Alguns aplicativos permitem que voc ative parte de um arquivo. Adicione um ponto de exclamao (!) ao final do nome do arquivo e acrescente uma seqncia de caracteres que identifique a parte do arquivo que voc deseja ativar. Para obter informaes sobre como criar essa seqncia de caracteres, consulte a documentao referente ao aplicativo que criou o objeto. Por exemplo, em um aplicativo de desenho, voc pode ter diversas camadas de um desenho armazenado em um arquivo. Voc poderia utilizar o cdigo abaixo para ativar uma camada em um desenho denominado SCHEMA.CAD: Set CamadaObjeto = GetObject("C:\CAD\SCHEMA.CAD!Camada3") Se voc no especificar o class do objeto, a Automao determinar o aplicativo a ser iniciado e o objeto a ser ativado, de acordo com o nome de arquivo fornecido. Alguns arquivos, contudo, podem suportar mais do que uma classe de objeto. Por exemplo, um desenho poderia suportar trs diferentes tipos de objetos: um objeto Application, um objeto Drawing e um objeto Toolbar, os quais fazem parte do mesmo arquivo. Para especificar o objeto de um arquivo que voc deseja ativar, utilize o argumento de class opcional. Por exemplo: Dim MeuObjeto As Object Set MeuObjeto = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING") No exemplo acima, FIGMENT o nome de um aplicativo de desenho e DRAWING um dos tipos de objeto que ele suporta. Depois que o objeto tiver sido ativado, voc pode referenci-lo em cdigo utilizando a varivel de objeto que voc definiu. No exemplo anterior, voc acessa as propriedades e os mtodos do novo objeto utilizando a varivel de objeto MeuObjeto. Por exemplo: MeuObjeto.Line 9, 90 MeuObjeto.InsertText 9, 100, "Ol, mundo." MeuObjeto.SaveAs "C:\DRAWINGS\SAMPLE.DRW" Observao: Utilize a funo GetObject quando houver uma ocorrncia atual do objeto ou quando voc desejar criar o objeto com um arquivo j carregado. Se no houver uma ocorrncia atual e se voc no quiser iniciar o objeto com um arquivo carregado, utilize a funo CreateObject. Se um objeto registrou a si prprio como um objeto de ocorrncia nica, apenas uma ocorrncia desse objeto ser criada, independente de quantas vezes CreateObject for executado. Com um objeto de ocorrncia nica, GetObject sempre retornar a mesma ocorrncia quando chamado com a sintaxe da seqncia de caracteres de comprimento zero (""), e se o argumento do pathname for omitido, um erro ser gerado. Voc no pode utilizar GetObject para obter uma referncia a uma classe criada com o Visual Basic.

Instruo Implements
Especifica uma interface ou classe que ser implementada no mdulo de classe onde ele aparece. Sintaxe Implements [InterfaceName | Class] O InterfaceName ou Class obrigatrio o nome de uma interface ou classe na biblioteca de tipos, cujos mtodos sero implementados pelos mtodos correspondentes na classe Visual Basic. Comentrios Uma interface uma coleo de prottipos representando os membros (mtodos e propriedades) encapsulados na interface; isto , contm apenas as declaraes para os procedimentos membros. Uma classe oferece uma implementao de todos os mtodos e propriedades de uma ou mais inferfaces. As classes oferecem o cdigo usado quando cada funo chamada por um controlador da classe. Todas as classes implementam pelo menos uma interface, que considerada a interface padro da classe. No Visual Basic, todo membro que no explicitamente um membro de uma interface implementada implicitamente um membro da interface padro. Quando uma classe do Visual Basic implementa uma interface, a classe do Visual Basic oferece sua prpria verso de todos os procedimentos Public especificados na biblioteca de tipos da interface. Alm de oferecer uma mapeamento entre prottipos de interface e seus procedimentos, a instruo Implements provoca a aceitao de chamada COM QueryInterfaces pela classe para a identificao da interface especificada. Quando voc implementa uma interface ou classe, voc deve incluir todos os procedimentos Public envolvidos. Um membro faltando em uma implementao de interface ou classe provoca um erro. Se voc no colocar cdigo em um dos procedimentos de uma classe que estiver implementando, voc pode provocar o erro adequado (Const E_NOTIMPL = &H80004001) de modo que o usurio da implementao compreenda que o membro no est implementado. A instruo Implements no pode aparecer em um mdulo padro.

Funo LBound
Retorna um Long que contm o menor subscrito disponvel para a dimenso indicada de uma matriz. Sintaxe LBound(arrayname[, dimension]) A sintaxe da funo LBound apresenta as partes abaixo: Parte Descrio arrayname Obrigatria. Nome da varivel de matriz, de acordo com as convenes de nomenclatura padro de variveis. dimension Opcional; Variant (Long). Nmero inteiro que indica qual limite inferior da dimenso retornado. Utilize 1 para a primeira dimenso, 2 para a segunda e assim por diante. Se dimension for omitida, ser utilizado 1. Comentrios Funes Internas

73

A funo LBound utilizada com a funo UBound para determinar o tamanho de uma matriz. Utilize a funo UBound para calcular o limite superior de uma dimenso de matriz. LBound retorna os valores apresentados na tabela abaixo para uma matriz com as dimenses abaixo: Dim A(1 To 100, 0 To 3, -3 To 4) Instruo LBound(A, 1) LBound(A, 2) LBound(A, 3) Valor de retorno 1 0 -3

O limite inferior padro para qualquer dimenso 0 ou 1, de acordo com a definio da instruo Option Base. A base de uma matriz criada com a funo Array zero; ela no afetada por Option Base. As matrizes para as quais so definidas dimenses utilizando-se a clusula To em uma instruo Dim, Private, Public, ReDim ou Static podem apresentar qualquer valor inteiro como um limite inferior.

Instruo Let
Atribui o valor de uma expresso a uma varivel ou propriedade. Sintaxe [Let] varname = expression A sintaxe da instruo Let tem estas partes: Parte Descrio Let Opcional. A utilizao explcita da palavra-chave Let uma questo de estilo, mas ela em geral omitida. varname Obrigatria. Nome da varivel ou propriedade; segue as convenes de nomenclatura padro de variveis. expression Obrigatria. Valor atribudo varivel ou propriedade. Comentrios Uma expresso de valor pode ser atribuda a uma varivel ou propriedade somente se for de um tipo de dados compatvel com a varivel. Voc no pode atribuir expresses de seqncias de caracteres a variveis numricas e no pode atribuir expresses numricas a variveis de seqncias de caracteres. Se o fizer, ocorrer um erro em tempo de compilao. A variveis Variant podem ser atribudas tanto expresses de seqncia de caracteres quanto expresses numricas. No entanto, o contrrio nem sempre verdadeiro. Qualquer Variant exceto Null pode ser atribudo a uma varivel de seqncia de caracteres, mas apenas um Variant cujo valor possa ser interpretado como um nmero pode ser atribudo a uma varivel numrica. Utilize a funo IsNumeric para determinar se o Variant pode ser convertido em um nmero. Ateno Atribuir uma expresso de um tipo numrico a uma varivel de um tipo numrico diferente converter o valor da expresso no tipo numrico da varivel resultante. As instrues Let podem ser utilizadas para atribuir uma varivel de registro a outra apenas quando ambas as variveis so do mesmo tipo definido pelo usurio. Utilize a instruo LSet para atribuir variveis de registro a diferentes tipos definidos pelo usurio. Utilize a instruo Set para atribuir referncias de objetos s variveis.

Instruo Option Base


Utilizada no nvel de mdulo para declarar o limite inferior padro para os subscripts de matriz. Sintaxe Option Base {0 | 1} Comentrios Uma vez que a base padro 0, a instruo Option Base nunca exigida. Se utilizada, a instruo deve aparecer em um mdulo antes de qualquer procedimento. Option Base s pode aparecer uma vez em um mdulo e deve anteceder as declaraes de matrizes que incluam dimenses. Observao: A clusula To nas instrues Dim, Private, Public, ReDim e Static fornecem uma maneira mais flexvel de controlar o intervalo de subscritos de uma matriz. No entanto, se voc no definir explicitamente o limite mnimo com uma clusula To, poder utilizar Option Base para alterar o limite inferior padro para 1. A base de uma matriz criada com a funo Array ou com a palavra-chave ParamArray zero; Option Base no afeta Array ou ParamArray. A instruo Option Base afeta somente o limite inferior das matrizes no mdulo no qual se localiza a instruo.

Instruo Option Compare


Utilizada no nvel de mdulo para declarar o mtodo de comparao padro a ser utilizado quando dados de seqncia de caracteres forem comparados. Sintaxe Option Compare {Binary | Text | Database} Comentrios Se utilizada, a instruo Option Compare deve aparecer em um mdulo antes dos procedimentos. A instruo Option Compare especifica o mtodo de comparao de seqncias de caracteres (Binary, Text ou Database) de um mdulo. Se um mdulo no incluir uma instruo Option Compare, o mtodo de comparao de texto padro ser Binary.

Funes Internas

74

Option Compare Binary resulta em comparaes de seqncias de caracteres baseadas em uma ordem de classificao derivada das representaes binrias internas dos caracteres. No Microsoft Windows, a ordem de classificao determinada pela pgina de cdigo. Uma ordem de classificao binria tpica mostrada no exemplo abaixo: A<B<E<Z<a<b<e<z<<<<<< Option Compare Text resulta em comparaes de seqncias de caracteres baseadas em uma ordem de classificao de texto que no coincide maisculas e minsculas determinada pela localidade do seu sistema. Quando alguns caracteres so classificados utilizando-se Option Compare Text, a ordem de classificao de texto abaixo produzida: (A=a) < ( =) < (B=b) < (E=e) < (=) < (Z=z) < (=) Option Compare Database somente pode ser utilizado dentro do Microsoft Access. Isso resulta em comparaes de seqncias de caracteres baseadas na ordem de classificao determinada pelo cdigo de localidade do banco de dados em que ocorrem as comparaes de seqncias de caracteres.

Instruo Option Explicit


Utilizada no nvel de mdulo para forar a declarao explcita de todas as variveis desse mdulo. Sintaxe Option Explicit Comentrios Se utilizada, a instruo Option Explicit deve aparecer em um mdulo antes de qualquer procedimento. Quando Option Explicit aparece em um mdulo, voc deve declarar explicitamente todas as variveis utilizando as instrues Dim, Private, Public, ReDim ou Static. Se voc tentar utilizar um nome de varivel no-declarado, ocorrer um erro em tempo de compilao. Se voc no utilizar a instruo Option Explicit, todas as variveis no-declaradas sero do tipo Variant, a menos que o tipo padro seja especificado com uma instruo Deftype. Observao: Utilize Option Explicit para evitar a digitao incorreta do nome de uma varivel existente ou para evitar confuso no cdigo em que o escopo da varivel no esteja claro.

Instruo Option Private


Quando utilizada em aplicativos host que permitem referncias em mltiplos projetos, Option Private Module impede que o contedo de um mdulo seja referenciado fora do seu projeto. Em aplicativos host que no permitem essas referncias, por exemplo, em verses independentes do Visual Basic, Option Private no ter efeito. Sintaxe Option Private Module Comentrios Se utilizada, a instruo Option Private deve aparecer no nvel de mdulo antes de qualquer procedimento. Quando um mdulo contm Option Private Module, as partes pblicas, por exemplo, variveis, objetos e tipos definidos pelo usurio declarados no nvel de mdulo, continuam disponveis dentro do projeto que contm o mdulo, mas no ficam disponveis para outros aplicativos ou projetos. Observao: Option Private somente til para aplicativos host que suportam carregamento simultneo de vrios projetos e permitem referncias entre os projetos carregados. Por exemplo, o Microsoft Excel permite carregamento de vrios projetos e Option Private Module pode ser utilizado para restringir a visibilidade do projeto cruzado. Ainda que o Visual Basic permita o carregamento de vrios projetos, referncias entre projetos nunca so permitidas no Visual Basic.

Instruo Private
Utilizada no nvel de mdulo para declarar variveis privadas e alocar espao de armazenamento. Sintaxe Private [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . . A sintaxe da instruo Private tem estas partes: Parte Descrio WithEvents Opcional. Palavra-chave que especifica que varname uma varivel de objeto utilizada para responder a eventos acionados por um objeto ActiveX. Vlida somente em mdulos de classe. Voc pode declarar quantas variveis individuais quiser utilizando WithEvents, mas no pode criar matrizes com WithEvents. Voc no pode utilizar New com WithEvents. varname Obrigatria. Nome da varivel; segue as convenes de nomenclatura padro de variveis. subscripts Opcional. Dimenses de uma varivel de matriz; at 60 dimenses mltiplas podem ser declaradas. O argumento subscripts utiliza a sintaxe abaixo: [lower To] upper [,[lower To] upper] . . . Quando no enunciado explicitamente em lower, o limite inferior de uma matriz controlado pela instruo Option Base. O limite inferior ser zero se no estiver presente uma instruo Option Base. New Opcional. Palavra-chave que permite a criao implcita de um objeto. Se voc utilizar New ao declarar a varivel de objeto, uma nova

Funes Internas

75

type

ocorrncia do objeto ser criada na primeira referncia a ele; portanto, voc no precisa utilizar a instruo Set para atribuir a referncia do objeto. A palavra-chave New no pode ser utilizada para declarar variveis de tipo de dados intrnseco, no pode ser utilizada para declarar instncias de objetos dependentes e no pode ser utilizada com WithEvents. Opcional. Tipo de dados da varivel; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String (para seqncias de caracteres de comprimento varivel), String * length (para seqncias de caracteres de comprimento fixo), Object, Variant, um tipo definido pelo usurio ou um tipo de objeto. Utilize uma clusula As type para cada varivel que estiver sendo definida.

Comentrios As variveis Private encontram-se disponveis somente para o mdulo em que so declaradas. Utilize a instruo Private para declarar o tipo de dados de uma varivel. Por exemplo, a instruo abaixo declara uma varivel como um Integer: Private NmeroDeEmpregados As Integer Voc tambm pode utilizar uma instruo Private para declarar o tipo de objeto de uma varivel. A instruo abaixo declara uma varivel para uma nova ocorrncia de uma planilha. Private X As New Worksheet Se a palavra-chave New no for utilizada quando declarar uma varivel de objeto, a varivel que se refere ao objeto dever ser atribuda a um objeto existente utilizando-se a instruo Set para que possa ser utilizada. At que seja atribudo um objeto, a varivel de objeto declarada ter o valor especial Nothing, que indica que no se refere a uma ocorrncia especfica de um objeto. Se voc no especificar um tipo de dados ou tipo de objeto e no houver instruo Deftype no mdulo, a varivel ser Variant como padro. Voc tambm pode utilizar a instruo Private com parnteses vazios para declarar uma matriz dinmica. Depois de declarar uma matriz dinmica, utilize a instruo ReDim dentro de um procedimento para definir o nmero de dimenses e elementos na matriz. Se voc tentar declarar novamente uma dimenso de uma varivel de matriz cujo tamanho tenha sido explicitamente especificado em uma instruo Private, Public ou Dim, um erro ser gerado. Quando variveis so inicializadas, uma varivel numrica inicializada como 0, uma seqncia de caracteres de comprimento varivel inicializada como uma seqncia de caracteres de comprimento zero ("") e uma seqncia de caracteres de comprimento fixo preenchida com zeros. As variveis Variant so inicializadas como Empty. Cada elemento de uma varivel de tipo definido pelo usurio inicializado como se fosse uma varivel separada. Observao: Quando voc utiliza a instruo Private em um procedimento, geralmente coloca a instruo Private no incio dele.

Instruo Property Get


Declara o nome, os argumentos e o cdigo que formam o corpo de um procedimento Property, que obtm o valor de uma propriedade. Sintaxe [Public | Private] [Static] Property Get name [(arglist)] [As type] [statements] [name = expression] [Exit Property] [statements] [name = expression] End Property A sintaxe da instruo Property Get tem estas partes: Parte Descrio Public Opcional. Indica que o procedimento Property Get acessvel a todos os outros procedimentos de todos os mdulos. Se utilizada em um mdulo que contm uma instruo Option Private, o procedimento no se encontrar disponvel fora do projeto. Private Opcional. Indica que o procedimento Property Get acessvel somente a outros procedimentos do mdulo em que declarado. Static Opcional. Indica que as variveis locais do procedimento Property Get so preservadas entre chamadas. O atributo Static no afeta variveis que sejam declaradas fora do procedimento Property Get, mesmo que elas sejam utilizadas no procedimento. name Obrigatria. Nome do procedimento Property Get; segue as convenes de nomenclatura padro de variveis, exceto que o nome pode ser o mesmo de um procedimento Property Let ou Property Set do mesmo mdulo. arglist Opcional. Lista de variveis que representam argumentos que so passados ao procedimento Property Get quando ele chamado.

Funes Internas

76

type

statements expression

Mltiplos argumentos so separados por vrgulas. O nome e o tipo de dados de cada argumento de um procedimento Property Get devem ser iguais ao argumento correspondente de um procedimento Property Let (se houver um). Opcional. Tipo de dados do valor retornado pelo procedimento Property Get; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String (exceto comprimento fixo), Object, Variant ou tipo definido pelo usurio. No podem ser retornadas matrizes de tipo algum, mas um Variant que contenha uma matriz pode. O type de retorno de um procedimento Property Get deve ser do mesmo tipo de dados do ltimo (ou algumas vezes do nico) argumento de um procedimento Property Let correspondente (se houver um) que define o valor atribudo propriedade do lado direito de uma expresso. Opcional. Qualquer grupo de instrues a serem executadas dentro do corpo do procedimento Property Get. Opcional. Valor da propriedade retornado pelo procedimento definido pela instruo Property Get.

O argumento arglist possui a sintaxe e as partes abaixo: [Optional] [ByVal | ByRef] varname[( )] [As type] [= defaultvalue] Parte Optional ByVal ByRef ParamArray Descrio Opcional. Indica que um argumento no obrigatrio. Se utilizada, todos os argumentos subseqentes em arglist devero tambm ser opcionais e declarados utilizando-se a palavra-chave Optional. Opcional. Indica que o argumento passado por valor. Opcional. Indica que o argumento passado por referncia. ByRef o padro do Visual Basic. Opcional. Utilizada apenas como o ltimo argumento em arglist para indicar que o argumento final uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite que voc fornea um nmero arbitrrio de argumentos. Ela no deve ser utilizada com ByVal, ByRef ou Optional. Obrigatria. Nome da varivel que representa o argumento; segue as convenes de nomenclatura padro de variveis. Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String (somente de comprimento varivel), Object, Variant. Se o parmetro no for Optional, um tipo definido pelo usurio ou um tipo de objeto tambm poder ser especificado. Opcional. Qualquer constante ou expresso de constante. Vlido somente para parmetros Optional. Se o tipo for um Object, um valor padro explcito somente poder ser Nothing.

varname type

defaultvalue

Comentrios Se no especificado explicitamente utilizando-se Public ou Private, os procedimentos Property sero pblicos como padro. Se Static no for utilizado, o valor de variveis locais no ser preservado entre chamadas. Todo o cdigo executvel deve estar nos procedimentos. Voc no pode definir um procedimento Property Get dentro de outro procedimento Property, Sub ou Function. A instruo Exit Property causa uma sada imediata de um procedimento Property Get. A execuo do programa continua com a instruo que segue a instruo que chamou o procedimento Property Get. Pode aparecer qualquer nmero de instrues Exit Property em qualquer lugar de um procedimento Property Get. Como um procedimento Sub e Property Let, um procedimento Property Get um procedimento separado que pode tomar argumentos, efetuar uma srie de instrues e alterar os valores de seus argumentos. Entretanto, ao contrrio de um procedimento Sub ou Property Let, voc pode utilizar um procedimento Property Get do lado direito de uma expresso da mesma forma que utiliza um Function ou um nome de propriedade quando deseja retornar o valor de uma propriedade.

Instruo Property Let


Declara o nome, os argumentos e o cdigo que formam o corpo de um procedimento Property Let, que atribui um valor a uma propriedade. Sintaxe [Public | Private] [Static] Property Let name ([arglist,] value) [statements] [Exit Property] [statements] End Property A sintaxe da instruo Property Let tem estas partes: Parte Descrio Funes Internas

77

Public

Private Static

nome

arglist

value

statements

Opcional. Indica que o procedimento Property Let acessvel a todos os outros procedimentos de todos os mdulos. Se utilizada em um mdulo que contm uma instruo Option Private, o procedimento no estar disponvel fora do projeto. Opcional. Indica que o procedimento Property Let acessvel somente para outros procedimentos do mdulo em que declarado. Opcional. Indica que as variveis locais do procedimento Property Let so preservadas entre chamadas. O atributo Static no afeta variveis que sejam declaradas fora do procedimento Property Let, mesmo que elas sejam utilizadas no procedimento. Obrigatria. Nome do procedimento Property Let; segue as convenes de nomenclatura padro de variveis, exceto que o nome pode ser o mesmo de um procedimento Property Get ou Property Set do mesmo mdulo. Obrigatria. Lista de variveis que representam argumentos que so passados ao procedimento Property Let quando ele chamado. Mltiplos argumentos so separados por vrgulas. O nome e o tipo de dados de cada argumento de um procedimento Property Let (exceto o ltimo) devem ser iguais ao argumento correspondente de um procedimento Property Get. Obrigatria. Varivel que contm o valor a ser atribudo propriedade. Quando o procedimento chamado, este argumento aparece no lado direito da expresso de chamada. O tipo de dados de value deve ser o mesmo que o tipo de retorno do procedimento Property Get correspondente. Opcional. Qualquer grupo de instrues a ser executado dentro do procedimento Property Let.

O argumento arglist possui a sintaxe e as partes abaixo: [Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue] Parte Optional Descrio Opcional. Indica que um argumento no obrigatrio. Se utilizada, todos os argumentos subseqentes em arglist devem tambm ser opcionais e declarados utilizando-se a palavra-chave Optional. Observe que o lado direito de uma expresso Property Let no pode ser Optional. ByVal Opcional. Indica que o argumento passado por valor. ByRef Opcional. Indica que o argumento passado por referncia. ByRef o padro no Visual Basic. ParamArray Opcional. Utilizada apenas como o ltimo argumento em arglist para indicar que o argumento final uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite que voc fornea um nmero arbitrrio de argumentos. Ela no pode ser utilizada com ByVal, ByRef ou Optional. varname Obrigatria. Nome da varivel que representa o argumento; segue as convenes de nomenclatura padro de variveis. type Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String (somente de comprimento varivel), Object, Variant. Se o parmetro no for Optional, tambm pode ser especificado um tipo definido pelo usurio ou um tipo de objeto. defaultvalue Opcional. Qualquer constante ou expresso de constante. Vlido somente para parmetros Optional. Se o tipo for um Object, um valor padro explcito somente poder ser Nothing. Observao: Toda instruo Property Let deve definir pelo menos um argumento para o procedimento que ela define. Esse argumento (ou o ltimo argumento se houver mais de um) contm o valor real a ser atribudo propriedade quando o procedimento definido pela instruo Property Let for chamado. Tal argumento referido como value na sintaxe anterior. Comentrios Se no especificados explicitamente utilizando-se Public ou Private, os procedimentos Property sero pblicos como padro. Se Static no for utilizado, o valor de variveis locais no ser preservado entre chamadas. Todo o cdigo executvel deve estar nos procedimentos. Voc no pode definir um procedimento Property Let dentro de outro procedimento Property, Sub ou Function. A instruo Exit Property causa uma sada imediata de um procedimento Property Let. A execuo do programa continua com a instruo que segue a instruo que chamou o procedimento Property Let. Pode aparecer qualquer nmero de instrues Exit Property em qualquer lugar de um procedimento Property Let. Da mesma forma que um procedimento Function e Property Get, um procedimento Property Let um procedimento separado que pode tomar argumentos, efetuar uma srie de instrues e alterar o valor de seus argumentos. Entretanto, ao contrrio de um procedimento Function e Property Get, os quais retornam um valor, voc somente pode utilizar um procedimento Property Let do lado esquerdo de uma expresso de atribuio de propriedade ou instruo Let.

Funes Internas

78

Instruo Property Set


Declara o nome, os argumentos e o cdigo que formam o corpo de um procedimento Property, o qual define uma referncia a um objeto. Sintaxe [Public | Private] [Static] Property Set name ([arglist,] reference) [statements] [Exit Property] [statements] End Property A sintaxe da instruo Property Set tem estas partes: Parte Descrio Optional Opcional. Indica que o argumento pode ou no ser fornecido pelo chamador. Public Opcional. Indica que o procedimento Property Set acessvel a todos os outros procedimentos em todos os mdulos. Se utilizada em um mdulo que contm uma instruo Option Private, o procedimento no estar disponvel fora do projeto. Private Opcional. Indica que o procedimento Property Set acessvel somente a outros procedimentos do mdulo em que declarado. Static Opcional. Indica que as variveis locais do procedimento Property Set so preservadas entre chamadas. O atributo Static no afeta variveis que sejam declaradas fora do procedimento Property Set, mesmo se forem utilizadas no procedimento. name Obrigatria. Nome do procedimento Property Set; segue as convenes de nomenclatura padro de variveis, exceto que o nome pode ser o mesmo de um procedimento Property Get ou Property Let do mesmo mdulo. arglist Obrigatria. Lista de variveis que representam argumentos que so passados ao procedimento Property Set quando ele chamado. Mltiplos argumentos so separados por vrgulas. reference Obrigatria. Varivel que contm a referncia ao objeto utilizada no lado direito da atribuio de referncia ao objeto. statements Opcional. Qualquer grupo de instrues a ser executado dentro do corpo do procedimento Property. O argumento arglist possui a sintaxe e as partes abaixo: [Optional] [ByVal | ByRef] varname[( )] [As type] [= defaultvalue] Parte Optional Descrio Opcional. Indica que um argumento no obrigatrio. Se utilizada, todos os argumentos subseqentes em arglist tambm devero ser opcionais e declarados utilizando-se a palavra-chave Optional. Observe que o lado direito de uma expresso Property Set no pode ser Optional. Opcional. Indica que o argumento passado por valor. Opcional. Indica que o argumento passado por referncia. ByRef o padro do Visual Basic. Opcional. Utilizada apenas como o ltimo argumento em arglist para indicar que o argumento final uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite que voc fornea um nmero arbitrrio de argumentos. Ela no pode ser utilizada com ByVal, ByRef ou Optional. Obrigatria. Nome da varivel que representa o argumento; segue as convenes de nomenclatura padro de variveis. Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (nosuportado atualmente), Date, String (somente de comprimento varivel), Object, Variant. Se o parmetro no for Optional, poder ser especificado um tipo definido pelo usurio ou um tipo de objeto. Opcional. Qualquer constante ou expresso de constante. Vlido somente para parmetros Optional. Se o tipo for um Object, um valor padro explcito somente poder ser Nothing.

ByVal ByRef ParamArray

varname type

defaultvalue

Observao: Toda instruo Property Set deve definir pelo menos um argumento do procedimento que ela define. Esse argumento (ou o ltimo argumento se houver mais de um) contm a referncia real ao objeto da propriedade quando o procedimento definido pela instruo Property Set chamado. Ele referido como reference na sintaxe anterior. No pode ser Optional. Comentrios Se no forem especificados explicitamente utilizando-se Public ou Private, os procedimentos Property sero pblicos como padro. Se Static no for utilizado, o valor de variveis locais no ser preservado entre chamadas. Todo o cdigo executvel deve estar nos procedimentos. Voc no pode definir um procedimento Property Set dentro de outro procedimento Property, Sub ou Function.

Funes Internas

79

A instruo Exit Property causa uma sada imediata de um procedimento Property Set. A execuo do programa continua com a instruo que segue a instruo que chamou o procedimento Property Set. Pode aparecer qualquer nmero de instrues Exit Property em qualquer lugar de um procedimento Property Set. Da mesma forma que um procedimento Function e Property Get, um procedimento Property Set um procedimento separado que pode tomar argumentos, efetuar uma srie de instrues e alterar o valor de seus argumentos. Entretanto, ao contrrio de um procedimento Function e Property Get, os quais retornam um valor, voc pode utilizar somente um procedimento Property Set do lado esquerdo de uma atribuio de referncia de objeto (instruo Set).

Instruo Public
Utilizada no nvel de mdulo para declarar variveis pblicas e alocar espao de armazenamento. Sintaxe Public [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . . A sintaxe da instruo Public tem estas partes: Parte Descrio WithEvents Opcional. Palavra-chave que especifica que varname uma varivel de objeto utilizada para responder a eventos acionados por um objeto ActiveX. Vlida somente em mdulos de classe. Voc pode declarar quantas variveis individuais desejar utilizando WithEvents, mas no pode criar matrizes com WithEvents. Voc no pode utilizar New com WithEvents. varname Obrigatria. Nome da varivel; segue as convenes de nomenclatura padro de variveis. subscripts Opcional. Dimenses de uma varivel de matriz; at 60 dimenses mltiplas podem ser declaradas. O argumento subscripts utiliza a sintaxe abaixo: [lower To] upper [,[lower To] upper] . . . Quando no enunciado explicitamente em lower, o limite inferior de uma matriz controlado pela instruo Option Base. O limite inferior ser zero se no estiver presente uma instruo Option Base. New Opcional. Palavra-chave que permite a criao implcita de um objeto. Se voc utilizar New quando declarar a varivel de objeto, uma nova ocorrncia do objeto ser criada na primeira referncia a ele; portanto, voc no precisa utilizar a instruo Set para atribuir a referncia ao objeto. A palavra-chave New no pode ser utilizada para declarar variveis de tipo de dados intrnseco, no pode ser utilizada para declarar instncias de objetos dependentes e no pode ser utilizada com WithEvents. type Opcional. Tipo de dados da varivel; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String, (para seqncias de caracteres de comprimento varivel), String * length (para seqncias de caracteres de comprimento fixo), Object, Variant, um tipo definido pelo usurio ou um tipo de objeto. Utilize uma clusula As type separada para cada varivel que estiver sendo definida. Comentrios Variveis declaradas utilizando-se a instruo Public esto disponveis para todos os procedimentos de todos os mdulos de todos os aplicativos, a menos que Option Private Module esteja em vigor, caso em que as variveis sero pblicas somente dentro do projeto no qual residem. Ateno A instruo Public no pode ser utilizada em um mdulo de classe para declarar uma varivel de seqncia de caracteres de comprimento fixo. Utilize a instruo Public para declarar o tipo de dados de uma varivel. Por exemplo, a instruo abaixo declara uma varivel como um Integer: Public NmeroDeEmpregados As Integer Utilize tambm uma instruo Public para declarar o tipo de objeto de uma varivel. A instruo abaixo declara uma varivel para uma nova ocorrncia de uma planilha. Public X As New Worksheet Se a palavra-chave New no for utilizada ao declarar uma varivel de objeto, a varivel que se refere ao objeto dever ser atribuda a um objeto existente utilizando-se a instruo Set para que ela possa ser utilizada. At que seja atribudo um objeto, a varivel de objeto declarada ter o valor especial Nothing, que indica que no se refere a uma ocorrncia especfica de um objeto. Voc tambm pode utilizar a instruo Public com parnteses vazios para declarar uma matriz dinmica. Depois de declarar uma matriz dinmica, utilize a instruo ReDim dentro de um procedimento para definir o nmero de dimenses e elementos na matriz. Se voc tentar declarar novamente uma dimenso de uma varivel de matriz cujo tamanho tenha sido especificado explicitamente em uma instruo Private, Public ou Dim, um erro ser gerado. Se voc no especificar um tipo de dados ou um tipo de objeto e no houver uma instruo Deftype no mdulo, a varivel ser Variant como padro.

Funes Internas

80

Quando variveis so inicializadas, uma varivel numrica inicializada como 0, uma seqncia de caracteres de comprimento varivel inicializada como uma seqncia de caracteres de comprimento zero ("") e uma seqncia de caracteres de comprimento fixo preenchida com zeros. As variveis Variant so inicializadas como Empty. Cada elemento de uma varivel de tipo definido pelo usurio inicializado como se fosse uma varivel separada.

Funes Internas

81

Instruo ReDim
Utilizado no nvel de procedimento para realocar o espao de armazenamento para as variveis de matriz dinmica. Sintaxe ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . . A sintaxe da instruo ReDim tem estas partes: Parte Descrio Preserve Opcional. Palavra-chave utilizada para preservar os dados em uma matriz existente quando voc altera o tamanho da ltima dimenso. varname Obrigatria. Nome da varivel; segue as convenes de nomenclatura padro de varivel. subscripts Obrigatria. Dimenses de uma varivel de matriz; at 60 dimenses mltiplas podem ser declaradas. O argumento subscripts utiliza a sintaxe abaixo: [lower To] upper [,[lower To] upper] . . . Quando no declarado de forma explcita em lower, o limite inferior de uma matriz controlado pela instruo Option Base. O limite inferior ser zero se nenhuma instruo Option Base estiver presente. type Opcional. Tipo de dados da varivel; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String (para seqncias de caracteres de comprimento varivel), String * length (para seqncias de caracteres de comprimento fixo), Object, Variant, um tipo definido pelo usurio ou um tipo de objeto. Utilize uma clusula As type separada para cada varivel sendo definida. Para um Variant contendo uma matriz, type descreve o tipo de cada elemento da matriz, mas no altera o Variant para algum outro tipo. Comentrios A instruo ReDim utilizada para dimensionar ou redimensionar uma matriz dinmica que j tenha sido declarada formalmente utilizando-se uma instruo Private, Public ou Dim com os parnteses vazios (sem subscritos de dimenso). Voc pode utilizar a instruo ReDim repetidamente para alterar o nmero de elementos e dimenses em uma matriz. Contudo, voc no pode declarar uma matriz de um tipo dados e utilizar posteriormente ReDim para alterar a matriz para um outro tipo de dados, a menos que a matriz esteja contida em um Variant. Se a matriz estiver contida em um Variant, o tipo dos elementos podem ser alterados utilizando-se uma clusula As type, a menos que voc esteja utilizando a palavrachave Preserve, que no caso, no permite alteraes no tipo de dados. Se voc utilizar a palavra-chave Preserve, poder redimensionar somente a ltima dimenso da matriz e no poder alterar o nmero de dimenses. Por exemplo, se sua matriz possuir somente uma dimenso, voc poder redimensionar essa dimenso porque ela a ltima e a nica dimenso. Contudo, se sua matriz possuir duas ou mais dimenses, voc poder alterar somente o tamanho da ltima dimenso e ainda preservar o contedo da matriz. O exemplo abaixo mostra como voc pode aumentar o tamanho da ltima dimenso de uma matriz dinmica sem apagar os dados nela contidos. ReDim X(10, 10, 10) ... ReDim Preserve X(10, 10, 15) De forma semelhante, quando voc utiliza Preserve, pode alterar o tamanho da matriz somente alterando o limite superior; alterar o limite inferior gera um erro. Se voc tornar uma matriz menor do que seu tamanho original, os dados contidos nos elementos eliminados sero perdidos. Se voc passar uma matriz para um procedimento por referncia, no poder redimensionar a matriz dentro do procedimento. Quando as variveis forem inicializadas, uma varivel numrica ser inicializada para 0, uma seqncia de caracteres de comprimento varivel ser inicializada para uma seqncia de caracteres de comprimento zero ("") e uma seqncia de caracteres de comprimento fixo ser preenchida com zeros. As variveis Variant so inicializadas para Empty. Cada elemento de uma varivel de tipo definido pelo usurio inicializada como se fosse uma varivel separada. Uma varivel que faz referncia a um objeto deve ser atribuda a um objeto existente utilizando-se a instruo Set antes que possa ser utilizada. At que um objeto seja atribudo a ela, a varivel de objeto declarada ter o valor especial Nothing, o que indica que ela no faz referncia a uma ocorrncia especfica de um objeto. Ateno A instruo ReDim age como uma instruo declarativa se a varivel que ela declara no existir no nvel de mdulo ou no nvel de procedimento. Se uma outra varivel com o mesmo nome for criada posteriormente, mesmo em um escopo mais amplo, ReDim far referncia varivel posterior e no causar necessariamente um erro de compilao, mesmo que Option Explicit esteja em vigor. Para evitar tais conflitos, ReDim no deve ser utilizada como uma instruo declarativa, mas simplesmente para o redimensionamento de matrizes. Observao: Para redimensionar uma matriz contida em um Variant, voc deve declarar de forma explicita a varivel Variant antes de tentar redimensionar sua matriz.

Instruo Rem
Utilizada para incluir comentrios explicativos em um programa. Sintaxe Rem comment Voc tambm pode utilizar a sintaxe abaixo:

Funes Internas

82

' comment O argumento opcional comment o texto de qualquer comentrio que voc deseje incluir. necessrio um espao entre a palavra-chave Rem e o comment. Comentrios Se voc utilizar nmeros de linha ou rtulos de linha, poder desviar de uma instruo GoTo ou GoSub para uma linha contendo uma instruo Rem. A execuo continua com a primeira instruo executvel que segue a instruo Rem. Se a palavra-chave Rem seguir outras instrues em uma linha, ela deve ser separada das instrues por dois-pontos (:). Voc pode utilizar um apstrofo (') ao invs da palavra-chave Rem. Quando voc utiliza um apstrofo, os dois-pontos no so obrigatrios aps outras instrues.

Instruo Set
Atribui uma referncia de objeto a uma varivel ou propriedade. Sintaxe Set objectvar = {[New] objectexpression | Nothing} A sintaxe da instruo Set tem estas partes: Parte Descrio objectvar Obrigatria. Nome da varivel ou propriedade; segue as convenes de nomenclatura padro de varivel. New Opcional. New geralmente utilizado durante a declarao para possibilitar a criao implcita de objeto. Quando New for utilizada com Set, ela criar uma nova ocorrncia da classe. Se objectvar contiver uma referncia a um objeto, essa referncia ser liberada quando for atribuda uma nova. A palavra-chave New no pode ser utilizada para criar novas instncias de qualquer tipo de dados intrnseco e no pode ser utilizada para criar objetos dependentes. objectexpression Obrigatria. Expresso que consiste no nome de um objeto, uma outra varivel declarada do mesmo tipo de objeto ou uma funo ou mtodo que retorna um objeto do mesmo tipo. Nothing Opcional. Suspende a associao de objectvar com qualquer objeto especfico. Atribuir Nothing a objectvar libera todos os recursos de sistema e memria associados com o objeto referenciado anteriormente quando nenhuma outra varivel fizer referncia a ele. Comentrios Para ser vlido, objectvar deve ser um tipo de objeto consistente com o objeto sendo atribudo ao mesmo. As instrues Dim, Private, Public, ReDim e Static declaram somente uma varivel que faz referncia a um objeto. No feita nenhuma referncia a um objeto real at que voc utilize a instruo Set para atribuir um objeto especfico. O exemplo abaixo ilustra como Dim utilizado para declarar uma matriz com o tipo Form1. Nenhuma ocorrncia de Form1 existe realmente. Set ento atribui referncias s novas instncias de Form1 varivel FormulriosFilho. Tal cdigo pode ser utilizado para criar formulrios filho em um aplicativo MDI. Dim FormulriosFilho(1 to 4) As Form1 Set FormulriosFilho(1) = New Form1 Set FormulriosFilho(2) = New Form1 Set FormulriosFilho(3) = New Form1 Set FormulriosFilho(4) = New Form1 Geralmente, quando voc utiliza Set para atribuir uma referncia de objeto a uma varivel, nenhuma cpia do objeto criada para essa varivel. Em vez disso, uma referncia ao objeto criada. possvel fazer com que mais do que uma varivel de objeto faa referncia ao mesmo objeto. Como tais variveis so referncias ao objeto em vez de cpias do objeto, qualquer alterao no objeto refletida em todas as variveis que fazem referncia a ele. Contudo, quando voc utiliza a palavra-chave New na instruo Set, estar realmente criando uma ocorrncia do objeto.

Instruo Static
Utilizada no nvel de procedimento para declarar variveis e alocar espao de armazenamento. As variveis declaradas com a instruo Static retm seus valores desde que o cdigo esteja sendo executado. Sintaxe Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . . A sintaxe da instruo Static tem estas partes: Parte Descrio varname Obrigatria. Nome da varivel; segue as convenes de nomenclatura padro de varivel. subscripts Opcional. As dimenses de uma varivel de matriz; podem ser declaradas at 60 dimenses variadas. O argumento subscripts utiliza a sintaxe abaixo: [lower To] upper [,[lower To] upper] . . . Quando no enunciado de forma explcita em lower, o limite inferior de uma matriz ser controlado pela instruo Option Base. O limite inferior ser zero se nenhuma instruo Option Base estiver presente. New Opcional. Palavra-chave que possibilita a criao implcita de um objeto. Se voc utilizar New ao declarar a varivel de objeto, uma nova Funes Internas

83

type

ocorrncia do objeto ser criada na primeira referncia a ele, assim no ser necessrio utilizar a instruo Set para atribuir a referncia ao objeto. A palavra-chave New no pode ser utilizada para declarar variveis de qualquer tipo de dados intrnseco e no pode ser utilizada para declarar instncias de objetos dependentes. Opcional. Tipo de dados da varivel; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String, (para seqncias de caracteres de comprimento varivel), String * length (para seqncias de caracteres de comprimento fixo), Object, Variant, um tipo definido pelo usurio ou um tipo de objeto. Utilize uma clusula As type separada para cada varivel sendo definida.

Comentrios Assim que o cdigo do mdulo estiver sendo executado, as variveis declaradas com a instruo Static retero seus valores at que o mdulo seja redefinido ou reinicializado. Utilize a instruo Static em um procedimento no-esttico para declarar as variveis explicitamente, as quais so visveis somente dentro do procedimento, mas cujo tempo de vida seja o mesmo que o mdulo no qual o procedimento definido. Utilize uma instruo Static dentro de um procedimento para declarar o tipo de dados de uma varivel que retenha seu valor entre as chamadas de procedimento. Por exemplo, a instruo abaixo declara uma matriz de tamanho fixo de nmeros inteiros: Static NmeroDoEmpregado(200) As Integer A instruo abaixo declara uma varivel para uma nova ocorrncia de uma planilha: Static X As New Worksheet Se a palavra-chave New no for utilizada ao declarar uma varivel de objeto, dever ser atribudo um objeto existente varivel que se refere ao objeto utilizando-se a instruo Set antes que ela possa ser utilizada. At que um objeto seja atribudo a ela, a varivel de objeto declarada conter o valor especial Nothing, indicando que ela no se refere a uma ocorrncia em particular de um objeto. Quando voc utiliza a palavra-chave New na declarao, uma ocorrncia do objeto criada na primeira referncia a ele. Se voc no especificar um tipo de dados ou um tipo objeto e se no houver uma instruo Deftype no mdulo, a varivel ser Variant como padro. Observao: A instruo Static e a palavra-chave Static so semelhantes, mas so utilizadas para efeitos diferentes. Se voc declarar um procedimento utilizando a palavra-chave Static (como em Static Sub ContabVendas ()), o espao de armazenamento para todas as variveis locais dentro de um procedimento ser alocado uma vez e os valores das variveis sero preservados durante todo o tempo em que o programa encontrar-se em execuo. Para procedimentos noestticos, o espao de armazenamento referente s variveis alocado cada vez que o procedimento chamado e liberado quando o procedimento finalizado. A instruo Static utilizada para declarar variveis especficas dentro de procedimentos no-estticos para preservar seus valores durante o tempo em que o programa estiver sendo executado. Quando as variveis so inicializadas, uma varivel numrica inicializada para o valor 0, uma seqncia de caracteres de comprimento varivel inicializada para uma seqncia de caracteres de comprimento ("") e uma seqncia de caracteres de comprimento fixo preenchida com zeros. As variveis Variant so inicializadas para Empty. Cada elemento de uma varivel de tipo definida pelo usurio inicializado como se fosse uma varivel separada. Observao: Quando voc utilizar as instrues Static dentro de um procedimento, coloque-as no incio do procedimento com outras instrues declarativas como Dim.

Instruo Sub
Declara o nome, os argumentos e o cdigo que formam o corpo de um procedimento Sub. Sintaxe [Private | Public] [Static] Sub name [(arglist)] [statements] [Exit [statements] End Sub A sintaxe da instruo Sub tem estas partes: Parte Descrio Public Opcional. Indica que o procedimento Sub acessvel a todos os outros procedimentos em todos os mdulos. Se utilizado em um mdulo que contiver uma instruo Option Private, o procedimento no estar disponvel fora do projeto. Private Opcional. Indica que o procedimento Sub acessvel somente a outros procedimentos no mdulo onde ele declarado. Static Opcional. Indica que as variveis locais do procedimento Sub so preservadas entre as chamadas. O atributo Static no afeta as variveis que so declaradas fora de Sub, mesmo que elas sejam utilizadas no procedimento. name Obrigatria. Nome de Sub; segue as convenes de nomenclatura padro de varivel. arglist Opcional. Lista de variveis representando os argumentos que so passados para o procedimento Sub quando ele chamado. As variveis

Sub]

Funes Internas

84

statements

so separadas por vrgulas. Opcional. Qualquer grupo de instrues a serem executadas dentro do procedimento Sub.

O argumento arglist possui a sintaxe e as partes abaixo: [Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue] Parte Optional Descrio Opcional. Palavra-chave indicando que um argumento no obrigatrio. Se utilizada, todos os argumentos subseqentes em arglist devero tambm ser opcionais e declarados utilizando-se a palavra-chave Optional. Optional no poder ser utilizado para qualquer argumento se ParamArray for utilizado. ByVal Opcional. Indica que o argumento passado por valor. ByRef Opcional. Indica que o argumento passado por referncia. ByRef representa o padro no Visual Basic. ParamArray Opcional. Utilizado somente como ltimo argumento em arglist para indicar que o argumento final uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite-lhe fornecer um nmero arbitrrio de argumentos. ParamArray no pode ser utilizado com ByVal, ByRef ou Optional. varname Obrigatria. Nome da varivel representando o argumento; segue as convenes de nomenclatura padro de varivel. type Opcional. Tipo de dados do argumento passado ao procedimento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String (somente de comprimento varivel), Object, Variant. Se o parmetro no for Optional, um tipo definido pelo usurio ou um tipo de objeto tambm pode ser especificado. defaultvalue Opcional. Qualquer constante ou expresso de constante. Vlida somente para parmetros Optional. Se o tipo for um Object, o valor padro explcito poder ser apenas Nothing. Comentrios Se no forem especificados de forma explcita utilizando Public ou Private, os procedimentos Sub sero pblicos como padro. Se no for utilizado Static, o valor das variveis locais no ser preservado entre as chamadas. Ateno Os procedimentos Sub podem ser recursivos; ou seja, eles podem chamar a si mesmos para efetuar uma certa tarefa. Contudo, a recurso pode levar a um estouro de pilha. A palavra-chave Static geralmente no utilizada com os procedimentos Sub recursivos. Todos os cdigos executveis devem estar contidos em procedimentos. Voc no pode definir um procedimento Sub dentro de um outro procedimento Sub, Function ou Property. As palavras-chave Exit Sub causam uma sada imediata de um procedimento Sub. A execuo do programa continua com a instruo que segue a instruo que chamou esse procedimento. possvel aparecer um nmero variado de instrues Exit Sub em qualquer lugar de um procedimento Sub. Como um procedimento Function, um procedimento Sub um procedimento separado que pode tomar os argumentos, efetuar uma srie de instrues e alterar o valor de seus argumentos. Contudo, ao contrrio do procedimento Function, que retorna um valor, um procedimento Sub no pode ser utilizado em uma expresso. Voc chama um procedimento Sub utilizando o nome do procedimento seguido pela lista de argumentos. Consulte a instruo Call para obter Especificidades sobre como chamar os procedimentos Sub. As variveis utilizadas nos procedimentos Sub incorrem em duas categorias: aquelas que so declaradas de forma explcita dentro de um procedimento e aquelas que no o so. As variveis que so declaradas de forma explcita em um procedimento (utilizando-se Dim ou equivalente) so sempre locais no que se refere ao procedimento. As variveis que so utilizadas mas no so declaradas de forma explcita em um procedimento tambm so locais, a menos que elas sejam declaradas de forma explcita em algum nvel superior fora do procedimento. Ateno Um procedimento pode utilizar uma varivel que no declarada de forma explcita no procedimento, mas poder ocorrer um conflito de nomeao se algo que voc tenha definido no nvel de mdulo possuir o mesmo nome. Se seu procedimento fizer referncia a uma varivel no-declarada que possui o mesmo nome que um outro procedimento, constante ou varivel, ser assumido que seu procedimento est se referindo quele nome no nvel de mdulo. Para evitar esse tipo de conflito, declare as variveis de forma explcita. Voc pode utilizar uma instruo Option Explicit para forar a declarao explcita das variveis. Observao: Voc no pode utilizar GoSub, GoTo ou Return para entrar ou sair de um procedimento Sub.

Funes Internas

85

Instruo Type
Utilizada no nvel de mdulo para definir um tipo de dados definido pelo usurio contendo um ou mais elementos. Sintaxe [Private | Public] Type varname elementname[([subscripts])] As type [elementname[([subscripts])] As type] ... End Type A sintaxe da instruo Type tem estas partes: Parte Descrio Public Opcional. Utilizada para declarar tipos definidos pelo usurio que esto disponveis para todos os procedimentos em todos os mdulos e em todos os projetos. Private Opcional. Utilizada para declarar tipos definidos pelo usurio que esto disponveis somente dentro do mdulo onde ocorre a declarao. varname Obrigatria. Nome do tipo definido pelo usurio; segue as convenes de nomenclatura padro de variveis. elementnam Obrigatria. Nome de um elemento de tipo definido pelo usurio. Os nomes e de elemento tambm seguem as convenes de nomenclatura padro de varivel, exceto que palavras-chave podem ser utilizadas. subscripts Opcional. Dimenses de um elemento de matriz. Utilize somente parnteses quando declarar uma matriz cujo tamanho pode ser alterado. O argumento subscripts utiliza a sintaxe abaixo: [lower To] upper [,[lower To] upper] . . . Quando no for declarado de forma explcita em lower, o limite inferior de uma matriz ser controlado pela instruo Option Base. O limite inferior ser zero se nenhuma instruo Option Base estiver presente. type Obrigatria. Tipo de dados do elemento; pode ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no-suportado atualmente), Date, String(para seqncias de caracteres de comprimento varivel), String * comprimento (para seqncias de caracteres de comprimento fixo), Object, Variant, um outro tipo definido pelo usurio ou um tipo de objeto. Comentrios A instruo Type pode ser utilizada somente no nvel de mdulo. Assim que voc tiver declarado um tipo definido pelo usurio utilizando a instruo Type, ser possvel declarar uma varivel daquele tipo em qualquer lugar dentro do escopo da declarao. Utilize Dim, Private, Public, ReDim ou Static para declarar uma varivel do tipo definido pelo usurio. Nos mdulos padro, os tipos definidos pelo usurio so pblicos como padro. Essa visibilidade pode ser alterada utilizando-se a palavra-chave Private. Nos mdulos de classe, contudo, os tipos definidos pelo usurio podem somente ser privados e a visibilidade no pode ser alterada utilizando-se a palavra-chave Public. No so permitidos nmeros de linha e rtulos de linha nos blocos Type...End Type. Os tipos definidos pelo usurio so geralmente utilizados com registros de dados, que freqentemente consistem em um nmero de elementos relacionados de diferentes tipos de dados. O exemplo abaixo mostra a utilizao de matrizes de tamanho fixo em um tipo definido pelo usurio: Type StateData CdigoDaCidade (1 To 100) As Integer ' Declara uma matriz esttica. Municpio As String * 30 End Type Dim SoPaulo(1 To 100) As StateData No exemplo anterior, StateData inclui a matriz esttica CdigoDaCidade e o registro SoPaulo possui a mesma estrutura que StateData. Quando voc declara uma matriz de tamanho fixo dentro de um tipo definido pelo usurio, suas dimenses devem ser declaradas com literais numricos ou constantes em vez de variveis. A definio da instruo Option Base determina o limite inferior para as matrizes dentro dos tipos definidos pelo usurio.

Funo UBound
Retorna um Long contendo o maior subscrito disponvel para a dimenso indicada de uma matriz. Sintaxe UBound(arrayname[, dimension]) A sintaxe da funo UBound tem estas partes: Parte Descrio arrayname Obrigatria. Nome da varivel de matriz; segue as convenes de nomenclatura padro de varivel. dimension Opcional; Variant (Long). Nmero inteiro indicando o limite superior da dimenso que retornado. Utilize 1 para a primeira dimenso, 2 para a segunda e assim por diante. Se dimension for omitida, assume-se o valor

Funes Internas

86

1. Comentrios A funo UBound utilizada com a funo LBound para determinar o tamanho de uma matriz. Utilize a funo LBound para encontrar o limite inferior da dimenso de uma matriz. UBound retorna os seguintes valores para uma matriz com as dimenses abaixo: Dim A(1 To 100, 0 To 3, -3 To 4) Instruo UBound(A, 1) UBound(A, 2) UBound(A, 3) Exemplo da funo Array Este exemplo utiliza a funo Array para retornar uma Variant que contm uma matriz. Dim MyWeek, MyDay MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") ' Os valores de retorno assumem o limite inferior definido como 1 (utilizando a instruo Option Base). MyDay = MyWeek(2) ' MyDay contm "Tue". MyDay = MyWeek(4) ' MyDay contm "Thu". Valor de retorno 100 3 4

Funes Internas

87

Exemplo da instruo Const Este exemplo utiliza a instruo Const para declarar constantes para uso em lugar de valores literais. As constantes Public ocorrem em uma seo Geral de um mdulo padro, em vez de em um mdulo de classe. As constantes Private podem aparecer na seo Geral de qualquer tipo de mdulo. ' As constantes so Private como padro. Const MyVar = 459 ' Declara a constante Public. Public Const MyString = "HELP" ' Declara a constante Integer Private. Private Const MyInt As Integer = 5 ' Declara mltiplas constantes na mesma linha. Const MyStr = "Hello", MyDouble As Double = 3.4567 Exemplo da funo CreateObject Este exemplo utiliza a funo CreateObject para definir uma referncia (xlApp) ao Microsoft Excel. Ele utiliza a referncia para acessar a propriedade Visible do Microsoft Excel e, em seguida, utiliza o mtodo Quit do Microsoft Excel para fechlo. Por fim, a prpria referncia liberada. Dim xlApp As Object ' Declara a varivel para conter a referncia. Set xlApp = CreateObject("excel.application") ' Voc pode ter que definir a propriedade Visible como True ' se quiser ver o aplicativo. xlApp.Visible = True ' Usa xlApp para acessar outros objetos do ' Microsoft Excel. xlApp.Quit' Quando terminar, use o mtodo Quit para fechar Set xlApp = Nothing ' o aplicativo e, em seguida, libere a referncia. Exemplo da instruo Declare Este exemplo mostra como a instruo Declare utilizada em nvel de mdulo de um mdulo padro para declarar uma referncia a um procedimento externo em uma biblioteca de vinculao dinmica (DLL) ou no recurso de cdigo do Macintosh. Voc pode inserir as instrues Declare em mdulos de classe se as instrues Declare forem Private. ' No Microsoft Windows (de 16 bits): Declare Sub MessageBeep Lib "User" (ByVal N As Integer) ' Suponha que SomeBeep um alias para o nome do procedimento. Declare Sub MessageBeep Lib "User" Alias "SomeBeep"(ByVal N As Integer) ' Usa um ordinal na clusula Alias para chamar GetWinFlags. Declare Function GetWinFlags Lib "Kernel" Alias "#132"() As Long ' Nos sistemas Microsoft Windows de 32 bits, especifique a biblioteca USER32.DLL, ' em vez de USER.DLL. Voc pode utilizar a compilao ' condicional para gravar um cdigo que possa ser ' executado tanto no Win32 como no Win16. #If Win32 Then Declare Sub MessageBeep Lib "User32" (ByVal N As Long) #Else Declare Sub MessageBeep Lib "User" (ByVal N As Integer) #End If ' No Macintosh: Declare Sub MessageAlert Lib "MyHd:MyAlert" Alias "MyAlert" (ByVal N _ As Integer) ' Utiliza um recurso de cdigo na clusula Alias. Declare Sub MessageAlert Lib "MyHd:MyAlert" Alias "XTST$MyAlert" _ (ByVal N As Integer) ' Se o especificador do tipo de recurso de cdigo tiver ' somente 3 caracteres, certifique-se de deixar um ' espao em branco onde apareceria normalmente o ' caractere final. Declare Sub MessageAlert Lib "MyHd:AnAlert" Alias "COD $AnAlert" _ (ByVal N As Integer) Exemplo de instrues Deftype Este exemplo mostra vrios usos das instrues Deftype para definir os tipos de dados padro de variveis e procedimentos de funo cujos nomes iniciam com caracteres especificados. O tipo de dados padro pode ser sobrescrito somente por atribuio explcita utilizando-se a instruo Dim. As instrues Deftype somente podem ser utilizadas em nvel de mdulo (ou seja, fora dos procedimentos). ' Os nomes de varivel que comeam com as letras entre A e K tm como padro Integer. Funes Internas

88

DefInt A-K ' Os nomes de varivel que comeam com as letras entre L e Z tm como padro String. DefStr L-Z CalcVar = 4 ' Inicializa Integer. StringVar = "Hello, there" ' Inicializa String. AnyVar = "Hello" ' Provoca o erro "Type Mismatch". Dim Calc As Double ' Define explicitamente o tipo como Double. Calc = 2.3455 ' Atribui um Double. ' As instrues Deftype tambm se aplicam a procedimentos de funo. CalcNum = ATestFunction(4) ' Chama a funo definida pelo usurio. ' Definio do procedimento de funo ATestFunction. Function ATestFunction(INumber) ATestFunction = INumber * 2 ' O valor de retorno um inteiro. End Function Exemplo da instruo Dim Este exemplo mostra vrios usos da instruo Dim para declarar variveis. Ele tambm mostra a instruo Dim sendo utilizada para declarar matrizes. O limite inferior padro dos subscritos de matriz 0 e pode ser sobrescrito em nvel de mdulo utilizando-se a instruo Option Base. ' AnyValue e MyValue so declaradas como Variant como padro com o valores definidos como Empty. Dim AnyValue, MyValue ' Declara explicitamente uma varivel do tipo Integer. Dim Nmero As Integer ' Mltiplas declaraes em uma nica linha. AnotherVar do tipo Variant ' porque o seu tipo est omitido. Dim AnotherVar, Option As Boolean, BirthDate As Date ' DayArray uma matriz de variantes com 51 elementos indexados, de ' 0 a 50, pressupondo-se que Option Base esteja definida como 0 (padro) para o ' mdulo atual. Dim DayArray(50) ' Matrix uma matriz bidimensional de inteiros. Dim Matrix(3, 4) As Integer ' MyMatrix uma matriz tridimensional de duplos com limites explcitos. Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double ' BirthDay uma matriz de datas com ndices de 1 a 10. Dim BirthDay(1 To 10) As Date ' MyArray uma matriz dinmica de variantes. Dim MyArray() Exemplo da instruo Enum O exemplo abaixo mostra a instruo Enum usada para definir uma coleo de constantes nomeadas. Neste caso, as constantes so cores que voc poderia escolher para designar formulrios de entrada de dados para um banco de dados. Public Enum InterfaceColors icMistyRose = &HE1E4FF& icSlateGray = &H908070& icDodgerBlue = &HFF901E& icDeepSkyBlue = &HFFBF00& icSpringGreen = &H7FFF00& icForestGreen = &H228B22& icGoldenrod = &H20A5DA& icFirebrick = &H2222B2& End Enum Exemplo da instruo Erase Este exemplo utiliza a instruo Erase para reinicializar os elementos de matrizes de tamanho fixo e desalocar espao de armazenamento de matrizes dinmicas. ' Declara variveis de matriz. Dim NumArray(10) As Integer ' Matriz Integer. Dim StrVarArray(10) As String ' Matriz de seqncia de caracteres varivel. Dim Str|FixArray(10) As String * 10 ' Matriz de seqncia de caracteres fixa. Dim VarArray(10) As Variant' Matriz de variante. Dim DynamicArray() As Integer ' Matriz Dinmica. ReDim DynamicArray(10) ' Alocar espao de armazenamento. Erase NumArray ' Cada elemento definido como 0.

Funes Internas

89

Erase StrVarArray ' Cada elemento definido como seqncia de caracteres de Length ' zero (""). Erase Str|FixArray ' Cada elemento definido como 0. Erase VarArray ' Cada elemento definido como Empty. Erase DynamicArray ' Liberar a memria utilizada pela matriz.

Funes Internas

90

Exemplo da instruo Event O exemplo abaixo utiliza eventos para contar segundos durante uma demonstrao da mais rpida corrida de 100 metros rasos. O cdigo ilustra todos os mtodos relacionados com eventos, propriedades e instrues, incluindo a instruo Event. A classe que produz um evento da origem do evento e a classe que implementa o evento so os coletores. Uma origem de evento pode ter mltiplos coletores para os eventos que ela gera. Quando a classe provoca o evento, ele disparado em todas as classes que escolheram eventos coletores para aquela ocorrncia do objeto. O exemplo tambm utiliza um formulrio (Form1) com um boto (Command1), um rtulo (Label1) e duas caixas de texto (Text1 e Text2). Quando voc clica no boto, a primeira caixa de texto exibe "A partir de agora" e a segunda inicia a contagem de segundos. Quando o tempo completo (9,84 segundos) decorre, a primeira caixa de texto exibe "At agora" e a segunda exibe "9,84" O cdigo para Form1 especifica os estados inicial e final do formulrio. Ele tambm contm o cdigo executado quando os eventos so provocados. Option Explicit Private WithEvents mText As TimerState Private Sub Command1_Click() Text1.Text = "Frow now" Text1.Refresh Text2.Text = "0" Text2.Refresh Call mText.TimerTask(9.84) End Sub Private Sub Form_Load() Command1.Caption = "Click to Start Timer" Text1.Text = "" Text2.Text = "" Label1.Caption = "The fastest 100 meter run took this long:" Set mText = New TimerState End Sub Private Sub mText_ChangeText() Text1.Text = "At agora" Text2.Text = "9.84" End Sub Private Sub mText_UpdateTime(ByVal dblJump As Double) Text2.Text = Str(Format(dblJump, "0")) DoEvents End Sub O cdigo restante est em um mdulo de classe chamado TimerState. As instrues Event declaram os procedimentos iniciados quando eventos so provocados. Option Explicit Public Event UpdateTime(ByVal dblJump As Double) Public Event ChangeText() Public Sub TimerTask(ByVal Duration As Double) Dim dblStart As Double Dim dblSecond As Double Dim dblSoFar As Double dblStart = Timer dblSoFar = dblStart Do While Timer < dblStart + Duration If Timer - dblSoFar >= 1 Then dblSoFar = dblSoFar + 1 RaiseEvent UpdateTime(Timer - dblStart) End If Loop RaiseEvent ChangeText End Sub Exemplo da instruo Function Este exemplo utiliza a instruo Function para declarar o nome, argumentos e cdigo que formam o corpo de um procedimento Function. O ltimo exemplo utiliza argumentos Optional inicializados. ' A seguinte funo definida pelo usurio retorna a raiz quadrada do Funes Internas

91

' argumento passado a ela. Function CalculateSquareRoot(NumberArg As Double) As Double If NumberArg < 0 Then ' Avalia o argumento. Exit Function ' Sai para chamar o procedimento. Else CalculateSquareRoot = Sqr(NumberArg) ' Retorna a raiz quadrada. End If End Function O uso da palavra-chave ParamArray possibilita que uma funo aceite um nmero varivel de argumentos. Na definio a seguir, FirstArg passado pelo valor. Function CalcSum(ByVal FirstArg As Integer, ParamArray OtherArgs()) Dim ReturnValue ' Se a funo for chamada da seguinte maneira: ReturnValue = CalcSum(4, 3 ,2 ,1) ' As variveis locais so atribudas aos seguintes valores: FirstArg = 4, ' OtherArgs(1) = 3, OtherArgs(2) = 2, e assim por diante, pressupondo-se o limite inferior padro ' para matrizes = 1. Os argumentos Optional agora podem ter valores e tipos padro diferentes de Variant. ' Se os argumentos de uma funo forem definidos da seguinte maneira: Function MyFunc(MyStr As String, Optional MyArg1 As Integer = 5, Optional MyArg2 = "Dolly") Dim RetVal ' A funo pode ser chamada da seguinte maneira: RetVal = MyFunc("Hello", 2, "World") ' Todos os 3 argumentos fornecidos. RetVal = MyFunc("Test", , 5)' Segundo argumento omitido. ' Argumentos um e trs utilizando argumentos nomeados. RetVal = MyFunc(MyStr:="Hello ", MyArg1:=7)

Funes Internas

92

Exemplo da funo GetObject Este exemplo utiliza a funo GetObject para obter uma referncia a uma planilha especfica do Microsoft Excel (MyXL). Ele utiliza a propriedade Application da planilha para tornar o Microsoft Excel visvel, fech-lo etc. A primeira chamada de GetObject provoca um erro se o Microsoft Excel ainda no estiver sendo executado. No exemplo, o erro faz com que o sinalizador ExcelNoEstavaSendo Executado seja definido como True. A segunda chamada de GetObject especifica um arquivo a ser aberto. Se o Microsoft Excel ainda no estiver sendo executado, a segunda chamada o iniciar e retornar uma referncia planilha representada pelo arquivo especificado. O arquivo, meuteste.xls no exemplo, deve existir no local especificado; caso contrrio, ser gerado o erro de automao do Visual Basic. Depois, o cdigo de exemplo torna visveis tanto o Microsoft Excel como a janela que contm a planilha especificada. Por fim, se no havia verso anterior do Microsoft Excel sendo executada, o cdigo utiliza o mtodo Quit do objeto Application para fechar o Microsoft Excel. Se o aplicativo j estava sendo executado, no feita nenhuma tentativa de fech-lo. A prpria referncia liberada sendo definida como Nothing. ' Declara necessrio as routinas API : Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName as String, _ ByVal lpWindowName As Long) As Long Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _ ByVal wParam as Long _ ByVal lParam As Long) As Long Sub GetExcel() Dim MyXL As Object ' Varivel para conter a referncia ao Microsoft Excel. Dim ExcelWasNotRunning As Boolean ' Sinalizador para liberao final. ' Testa para ver se j h uma cpia do Microsoft Excel sendo executada. On Error Resume Next ' Adia a interceptao do erro. ' Funo GetObject chamada sem que o primeiro argumento ' retorne uma referncia a uma instncia do aplicativo. ' Se o aplicativo no estiver sendo executado, ocorrer ' um erro. Observe a vrgula utilizada como marcador para o primeiro argumento Set MyXL = Getobject(, "Excel.Application") If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' Limpa o objeto Err se tiver ocorrido o erro. ' Verifique para o Microsoft Excel. Se o Microsoft Excel est sendo executado, ' insira dentro da tabela Running Object. DetectExcel ' Define a varivel de objeto para fazer referncia ao arquivo que voc deseja ver. Set MyXL = Getobject("c:\vb4\MYTEST.XLS") ' Mostra o Microsoft Excel atravs da sua propriedade Application. Em seguida mostra a janela real que contm o arquivo que utiliza a coleo Windows ' da referncia do objeto MyXL. MyXL.Application.Visible = True MyXL.Parent.Windows(1).Visible = True ' Faz a manipulao do seu ' arquivo aqui. ' ... ' Se esta cpia do Microsoft Excel no estava sendo executada quando voc iniciou, feche-a utilizando o mtodo Quit da propriedade Application. ' Observe que, quando voc tentar sair do Microsoft Excel, a barra de ttulo do Microsoft Excel ' piscar e o Microsoft Excel exibir uma mensagem perguntando-lhe se deseja ' salvar os arquivos carregados. If ExcelWasNotRunning = True Then MyXL.Application.Quit End If Set MyXL = Nothing ' Libera a referncia para o ' aplicativo e planilha. End Sub Sub DetectExcel() ' O procedimento detecta que o Excel est sendo executado e registra-o. Const WM_USER = 1024 Dim hWnd As Long ' Se o Excel est sendo executado esta chamada API retorna seu identificador. hWnd = FindWindow("XLMAIN", 0) If hWnd = 0 Then ' 0 significa que o Excel no est executando. Exit Sub Else ' O Excel est sendo executado, ento use o SendMessage API

Funes Internas

93

' funo para inserir a tabela Running Object . SendMessage hWnd, WM_USER + 18, 0, 0 End If End Sub Exemplo da instruo Implements O exemplo abaixo mostra como usar a instruo Implements para fazer um conjunto de declaraes disponveis para mltiplas classes. Compartilhando as declaraes atravs da instruo Implements, nenhuma classe precisa fazer qualquer declarao. Suponhamos que existam dois formulrios. O formulrio Selector tem dois botes, Customer Data e Supplier Data. Para inserir informaes de nome e endereo para um cliente ou um fornecedor, o usurio clica no boto Customer ou no boto Supplier no formulrio Selector e, em seguida, insere o nome e o endereo usando o formulrio Data Entry. Este formulrio tem dois campos, Name e Address. O cdigo abaixo para as declaraes compartilhadas est em uma classe chamada PersonalData: Public Name As String Public Address As String O cdigo que suporta os dados do cliente est em um mdulo de classe chamado Customer: Implements PersonalData Private Property Get PersonalData_Address() As String PersonalData_Address = "CustomerAddress" End Property Private Property Let PersonalData_Address(ByVal RHS As String) ' End Property Private Property Let PersonalData_Name(ByVal RHS As String) ' End Property Private Property Get PersonalData_Name() As String PersonalData_Name = "CustomerName" End Property O cdigo que suporta os dados do fornecedor est em um mdulo de classe chamado Supplier: Implements PersonalData Private Property Get PersonalData_Address() As String PersonalData_Address = "SupplierAddress" End Property Private Property Let PersonalData_Address(ByVal RHS As String) ' End Property Private Property Let PersonalData_Name(ByVal RHS As String) ' End Property Private Property Get PersonalData_Name() As String PersonalData_Name = "SupplierName" End Property O cdigo abaixo suporta o formulrio Selector: Private cust As New Customer Private sup As New Supplier Private Sub Command1_Click() Dim frm2 As New Form2 Set frm2.PD = cust frm2.Show 1 End Sub Private Sub Command2_Click() Dim frm2 As New Form2 Set frm2.PD = sup frm2.Show 1 End Sub

Funes Internas

94

O cdigo abaixo suporta o formulrio Data Entry: Private m_pd As PersonalData Private Sub Form_Load() With m_pd Text1 = .Name Text2 = .Address End With End Sub Public Property Set PD(Data As PersonalData) Set m_pd = Data End Property

Funes Internas

95

Exemplo da funo LBound Este exemplo utiliza a funo LBound para determinar o menor subscrito disponvel para a dimenso indicada de uma matriz. Utiliza a instruo Option Base para sobrescrever o valor 0 do subscrito da matriz base padro. Dim Lower Dim MyArray(1 To 10, 5 To 15, 10 To 20) ' Declara as variveis de matriz. Dim AnyArray(10) Lower = Lbound(MyMatrix, 1) ' Retorna 1. Lower = Lbound(MyMatrix, 3) ' Retorna 10. Lower = Lbound(AnyArray) ' Retorna 0 ou 1, dependendo da ' definio de Option Base. Exemplo da instruo Let Este exemplo atribui os valores de expresses a variveis utilizando a instruo Let explcita e implcita. Dim MyStr, MyInt ' As atribuies de varivel a seguir utilizam a instruo Let. Let MyStr = "Hello World" Let MyInt = 5 As instrues a seguir so as mesmas, sem a instruo Let. Dim MyStr, MyInt MyStr = "Hello World" MyInt = 5 Exemplo da instruo Option Base Este exemplo utiliza a instruo Option Base para sobrescrever o valor 0 do subscrito da matriz base padro. A funo LBound retorna o menor subscrito disponvel para a dimenso indicada de uma matriz. A instruo Option Base utilizada somente em nvel de mdulo. Option base 1 ' Define os subscritos da matriz padro como 1. Dim Lower Dim MyArray(20), TwoDArray(3, 4) ' Declara as variveis de matriz. Dim ZeroArray(0 To 5) ' Sobrescreve o subscrito base padro. ' Utiliza a funo LBound para testar os limites Inferiores da matrizes. Lower = LBound(MyArray) ' Retorna 1. Lower = LBound(TwoDArray, 2) ' Retorna 1. Lower = LBound(ZeroArray) ' Retorna 0. Exemplo da instruo Option Compare Este exemplo utiliza a instruo Option Compare para definir o mtodo de comparao de seqncias padro. A instruo Option Compare utilizada somente no nvel de mdulo. ' Define o mtodo de comparao de seqncias de caracteres como Binary. Option compare Binary ' Ou seja, "AAA" menos que "aaa" ' Define o mtodo de comparao de seqncias como Text. Option compare Text ' Ou seja, "AAA" igual a "aaa".

Funes Internas

96

Exemplo da instruo Option Explicit Este exemplo utiliza a instruo Option Explicit para for-lo a declarar explicitamente todas as variveis. A tentativa de utilizar uma varivel no declarada provoca um erro em tempo de compilao. A instruo Option Explicit utilizada somente no nvel de mdulo. Option explicit ' Fora a declarao de varivel explcita. Dim MyVar' Declara a varivel. MyInt = 10 ' Varivel no declarada gera erro. MyVar = 10 ' Varivel declarada no gera erro. Exemplo da instruo Option Private Este exemplo demonstra a instruo Option Private, que utilizada no nvel de mdulo para indicar que o mdulo inteiro privado. Com Option Private Module, os smbolos de nvel de mdulo no declarados Private continuam disponveis para outros mdulos no projeto, mas no para outros projetos ou aplicativos. Option private Module ' Indica que o mdulo privado. Exemplo da instruo Private Este exemplo mostra a instruo Private sendo utilizada no nvel de mdulo para declarar variveis como privadas, ou seja, elas esto disponveis somente para o mdulo em que so declaradas. Private Nmero As Integer ' Varivel Integer privada. Private NameArray(1 To 5) As String ' Varivel de matriz privada. ' Mltiplas declaraes, duas Variants e um Integer, todos Private. Private MyVar, YourVar, ThisVar As Integer Exemplo da instruo Property Get Este exemplo utiliza a instruo Property Get para definir um procedimento de propriedade que obtm o valor de uma propriedade. A propriedade identifica, como uma seqncia de caracteres, a cor atual de uma caneta em um pacote de desenho. Dim CurrentColor As Integer Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3 ' Retorna a cor atual da caneta como uma seqncia de caracteres. Property Get PenColor() As String Select Case CurrentColor Case RED PenColor = "Red" Case GREEN PenColor = "Green" Case BLUE PenColor = "Blue" End Select End Property ' O cdigo a seguir obtm a cor da caneta ' que chama o procedimento Property Get. ColorName = PenColor

Funes Internas

97

Exemplo da instruo Property Let Este exemplo utiliza a instruo Property Let para definir um procedimento que atribui um valor a uma propriedade. A propriedade identifica a cor da caneta para um pacote de desenho. Dim CurrentColor As Integer Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3 ' Define a propriedade da cor da caneta de um pacote de desenho. ' A varivel em nvel de mdulo CurrentColor definida como um valor numrico que identifica a cor utilizada no desenho. Property Let PenColor(ColorName As String) Select Case ColorName ' Verifica a seqncia de caracteres do nome da cor. Case "Red" CurrentColor = RED ' Atribui o valor a Red. Case "Green" CurrentColor = GREEN ' Atribui o valor a Green. Case "Blue" CurrentColor = BLUE ' Atribui o valor a Blue. Case Else CurrentColor = BLACK ' Atribui valor padro. End Select End Property ' O cdigo a seguir define a propriedade PenColor de um pacote de desenho ' chamando o procedimento Property Let. PenColor = "Red" Exemplo da instruo Property Set Este exemplo utiliza a instruo Property Set para definir um procedimento de propriedade que define uma referncia a um objeto. ' A propriedade Pen pode ser definida como diferentes implementaes Pen. Property Set Pen(P As Object) Set CurrentPen = P ' Atribui Pen ao objeto. End Property Exemplo da instruo Public Este exemplo utiliza a instruo Public no nvel de mdulo (seo Geral) de um mdulo padro para declarar explicitamente variveis como pblicas, ou seja, elas esto disponveis para todos os procedimentos em todos os aplicativos, a menos que Option Private Module esteja ativa. Public Nmero As Integer ' Varivel Integer pblica. Public NameArray(1 To 5) As String ' Varivel de matriz pblica. ' Mltiplas declaraes, duas Variants e um Integer, todos Public. Public MyVar, YourVar, ThisVar As Integer

Funes Internas

98

Exemplo da instruo ReDim Este exemplo utiliza a instruo ReDim para alocar e realocar o espao de armazenamento para variveis de matriz dinmica. Ele pressupe que a Option Base seja 1. Dim MyArray() As Integer ' Declara a matriz dinmica. Redim MyArray(5) ' Aloca 5 elementos. For I = 1 To 5 ' Faz o loop 5 vezes. MyArray(I) = I ' Inicializa a matriz. Next I A prxima instruo redimensiona a matriz e apaga os elementos. Redim MyArray(10)' Redimensiona para 10 elementos. For I = 1 To 10 ' Faz o loop 10 vezes. MyArray(I) = I ' Inicializa a matriz. Next I A instruo a seguir redimensiona a matriz, mas no apaga os elementos: Redim Preserve MyArray(15) ' Redimensiona para 15 elementos. Exemplo da instruo Rem Este exemplo ilustra as vrias formas da instruo Rem, que utilizada para incluir comentrios explicativos em um programa. Rem Esta a primeira forma da sintaxe. A segunda forma da sintaxe a seguinte: Dim MyStr1, MyStr2 MyStr1 = "Hello": Rem Comentrio aps uma instruo separada por dois-pontos. MyStr2 = "Goodbye" ' Isto tambm um comentrio; no h necessidade de dois-pontos. Exemplo da instruo Set Este exemplo utiliza a instruo Set para atribuir referncias de objeto s variveis. YourObject considerado um objeto vlido com uma propriedade Text. Dim YourObject, MyObject, MyStr Set MyObject = YourObject ' Atribui referncia a objeto. ' MyObject e YourObject se referem ao mesmo objeto. YourObject.Text = "Hello World" ' Inicializa a propriedade. MyStr = MyObject.Text ' Retorna "Hello World". ' Descontinua a associao. MyObject no se refere mais a YourObject. Set MyObject = Nothing ' Solta o objeto. Exemplo da instruo Static Este exemplo utiliza a instruo Static para conter o valor de uma varivel desde que o cdigo do mdulo esteja sendo executado. ' Definio de funo. Function KeepTotal(Number) ' Somente a varivel Accumulate preserva o seu valor entre chamadas. Static Accumulate Accumulate = Accumulate + Number KeepTotal = Accumulate End Function ' Definio de funo Static. Static Function MyFunction(Arg1, Arg2, Arg3) ' Todas as variveis locais preservam o valor entre chamadas de funo. Accumulate = Arg1 + Arg2 + Arg3 Half = Accumulate / 2 MyFunction = Half End Function Exemplo da instruo Sub Este exemplo utiliza a instruo Sub para definir o nome, argumentos e o cdigo que formam o corpo de um procedimento Sub. ' Definio do procedimento Sub. ' Procedimento Sub com dois argumentos. Sub SubComputeArea(Length, TheWidth) Dim Area As Double ' Declara a varivel local. If Length = 0 Or TheWidth = 0 Then ' Se ambos os argumentos = 0. Exit Sub ' Sai de Sub imediatamente. End If

Funes Internas

99

Area = Length * TheWidth ' Calcula a rea do retngulo. Debug.Print Area ' Imprime a rea na janela Depurar. End Sub Exemplo da instruo Type Este exemplo utiliza a instruo Type para definir um tipo de dados definido pelo usurio. A instruo Type utilizada somente no nvel de mdulo. Se ela aparecer em um mdulo de classe, uma instruo Type dever ser precedida pela palavra-chave Private. Type EmployeeRecord ' Cria o tipo definido pelo usurio. ID As Integer ' Define elementos de um tipo de dados. Name As String * 20 Adress As String * 30 Phone As Long HireDate As Date End Type Sub CreateRecord() Dim MyRecord As EmployeeRecord ' Declara a varivel. ' A atribuio varivel EmployeeRecord deve ocorrer em um procedimento. MyRecord.ID = 12003 ' Atribui um valor a um elemento. End Sub

Funes Internas

100

Exemplo da funo UBound Este exemplo utiliza a funo UBound para determinar o maior subscrito disponvel para a dimenso indicada de uma matriz. Dim Upper Dim MyArray(1 To 10, 5 To 15, 10 To 20) ' Declara as variveis de matriz. Dim AnyArray(10) Upper = UBound(MyArray, 1) ' Retorna 10. Upper = UBound(MyArray, 3) ' Retorna 20. Upper = UBound(AnyArray) ' Retorna 10.

Convenes da documentao
A documentao do Visual Basic utiliza as seguintes convenes tipogrficas. Convenes Descrio Sub, If, ChDir, Print, True,Palavras em negrito cuja primeira letra maiscula Debug indicam palavras-chaves especficas da linguagem. Setup Palavras que voc instrudo a digitar aparecem em negrito. Objeto, nomevar, lista_arg Letras minsculas em itlico indicam lugares reservados para informaes que voc fornece. nomecaminho, Letras minsculas em itlico e negrito indicam lugares nmeroarquivo reservados para argumentos onde voc pode usar sintaxe posicional ou de argumento nomeado. [listaexpresso] Na sintaxe, os itens entre de colchetes so opcionais. {While | Until} Na sintaxe, chaves e uma barra vertical indicam uma escolha obrigatria entre dois ou mais itens. Voc deve escolher um dos itens, a no ser que todos os itens tambm estejam entre colchetes. Por exemplo: [{Isto| OuAquilo}] ESC, ENTER Palavras em maisculas pequenas indicam nomes de teclas e seqncias de teclas. ALT+F1, CTRL+R Um sinal de adio (+) entre nomes de teclas indica uma combinao de teclas. Por exemplo, ALT+F1 significa que voc deve manter a tecla ALT pressionada enquanto pressiona a tecla F1. Convenes de cdigo So usadas as seguintes convenes de cdigo: Sample Code MinhaSeqncia = "Al, mundo!" ' Isto um comentrio. MinhaVar = "Isto & "exemplo" & " de como continuar o cdigo." Exemplo da instruo ChDir Este exemplo utiliza a instruo ChDir para alterar o diretrio ou pasta atual. ' Altera o diretrio ou pasta atual para "MEUDIR". ChDir "MEUDIR" ' Pressupe que "C:" a unidade de disco atual. A instruo a seguir altera ' o diretrio padro na unidade de disco "D:". "C:" permanece a unidade de disco atual. ChDir "D:\WINDOWS\SYSTEM" Exemplo da instruo ChDrive Este exemplo utiliza a instruo ChDrive para alterar a unidade de disco atual. ChDrive "D" ' Torna "D" a unidade de disco atual. Exemplo da funo CurDir Este exemplo utiliza a funo CurDir para retornar o caminho atual. ' Pressupe que o caminho atual na unidade de disco C "C:\WINDOWS\SYSTEM". ' Pressupe que o caminho atual na unidade de disco D "D:\EXCEL". ' Pressupe que C a unidade de disco atual. Dim MeuCaminho MeuCaminho = CurDir ' Retorna "C:\WINDOWS\SYSTEM". Funes Internas um " _ _

Descrio Esta fonte usada para cdigo, variveis e texto de mensagens de erro. Uma apstrofo (') introduz comentrios sobre o cdigo. Um espao e uma sublinha (_) do continuidade a uma linha de cdigo.

101

MeuCaminho = CurDir("C") ' Retorna "C:\WINDOWS\SYSTEM". MeuCaminho = CurDir("D") ' Retorna "D:\EXCEL". Exemplo da funo Dir Este exemplo utiliza a funo Dir para verificar se determinados arquivos e diretrios existem. Dim MeuArquivo, MeuCaminho, MeuNome ' Retorna "WIN.INI" se existir. MeuArquivo = Dir("C:\WINDOWS\WIN.INI") ' Retorna o nome do arquivo com a extenso especificada. Se existir mais de um arquivo *.ini, ' o primeiro arquivo encontrado ser retornado. MeuArquivo = Dir("C:\WINDOWS\*.INI") ' Chama Dir novamente sem argumentos para retornar o prximo arquivo *.INI no ' mesmo diretrio. MeuArquivo = Dir ' Retorna primeiro o arquivo *.TXT com um atributo oculto definido. MeuArquivo = Dir("*.TXT", vbHidden) ' Exibe os nomes em C:\ que representam diretrios. MeuCaminho = "c:\" ' Define o caminho. MeuNome = Dir(MeuCaminho, vbDirectory) ' Recupera a primeira entrada. Do While MeuNome <> "" ' Inicia o loop. ' Ignora o diretrio atual e o diretrio abrangente. If MeuNome <> "." And MeuNome <> ".." Then ' Utiliza a comparao bit a bit para se certificar de que MeuNome um diretrio. If (GetAttr(MeuCaminho & MeuNome) And vbDirectory) = vbDirectory Then Debug.Print MeuNome ' Exibe a entrada somente se End If ' representar um diretrio. End If MeuNome = Dir ' Obtm a prxima entrada. Loop Exemplo da funo Environ Este exemplo utiliza a funo Environ para fornecer o nmero e comprimento de entrada da instruo PATH da tabela de seqncias de caracteres de ambiente. Dim SeqAmb, Ind, Msg, CompCaminho ' Declara as variveis. Ind = 1 ' Inicializa o ndice como 1. Do SeqAmb = Environ(Ind) ' Obtm a varivel ' de ambiente. If Left(SeqAmb, 5) = "PATH=" Then ' Verifica a entrada PATH. CompCaminho = Len(Environ("PATH")) ' Obtm o comprimento. Msg = "entrada PATH = " & Ind & " e comprimento = " & CompCaminho Exit Do Else Ind = Ind + 1 ' No h entrada PATH, End If ' ento incrementa. Loop Until SeqAmb = "" If CompCaminho > 0 Then MsgBox Msg ' Exibe a mensagem. Else MsgBox "No existe a varivel de ambiente PATH." End If Exemplo da instruo FileCopy Este exemplo utiliza a instruo FileCopy para copiar um arquivo em outro. Para este exemplo, pressuponha que ARQORIGEM um arquivo que contm alguns dados. Dim ArquivoDeOrigem, ArquivoDeDestino ArquivoDeOrigem = "ARQORIGEM" ' Define o nome do arquivo de origem. ArquivoDeDestino = "ARQDESTINO" ' Define o nome do arquivo de destino. FileCopy ArquivoDeOrigem, ArquivoDeDestino ' Copia a origem no destino.

Funes Internas

102

Exemplo da funo FileDateTime Este exemplo utiliza a funo FileDateTime para determinar a data e a hora em que um arquivo foi criado ou modificado pela ltima vez. O formato da data e hora exibido baseado nas definies de localidade do seu sistema. Dim MinhaMarcao ' Pressupe que ARQUIVODETESTE foi modificado pela ltima vez em 12 de fevereiro de 1993, s 4:35:47 PM. ' Pressupe as definies de localidade Ingls/EUA. MinhaMarcao = FileDateTime("ARQUIVODETESTE") ' Retorna "12/2/93 4:35:47 PM". Exemplo da funo FileLen Este exemplo utiliza a funo FileLen para retornar o comprimento de um arquivo em bytes. Para este exemplo, suponha que ARQUIVODETESTE um arquivo que contm alguns dados. Dim MeuTamanho MeuTamanho = FileLen("ARQUIVODETESTE") ' Retorna o comprimento do arquivo (bytes). Exemplo da funo GetAttr Este exemplo utiliza a funo GetAttr para determinar os atributos de um arquivo e diretrio ou pasta. Dim MeuAtributo ' Pressupe que o arquivo ARQUIVODETESTE tem o atributo de oculto definido. MeuAtributo = GetAttr("ARQUIVODETESTE") ' Retorna 2. ' Retorna um valor diferente de zero se o atributo de oculto estiver definido em ARQUIVODETESTE. Debug.Print MeuAtributo And vbHidden ' Pressupe que o arquivo ARQUIVODETESTE tem os atributos de oculto e somente leitura definidos. MeuAtributo = GetAttr("ARQUIVODETESTE") ' Retorna 3. ' Retorna um valor diferente de zero se o atributo de oculto estiver definido em ARQUIVODETESTE. Debug.Print MeuAtributo And (vbHidden + vbReadOnly) ' Pressupe que MEUDIR um diretrio ou pasta. MeuAtributo = GetAttr("MEUDIR") ' Retorna 16. Exemplo da instruo Kill Este exemplo utiliza a instruo Kill para excluir um arquivo de um disco. ' Pressupe que ARQUIVODETESTE um arquivo que contm alguns dados. Kill "ArquivoDeTeste" ' Exclui o arquivo. ' Exclui todos os arquivos *.TXT do diretrio atual. Kill "*.TXT"

Funes Internas

103

Exemplo da instruo MkDir Este exemplo utiliza a instruo MkDir para criar um diretrio ou pasta. Se a unidade de disco no for especificada, o novo diretrio ou pasta ser criado na unidade de disco atual. MkDir "MEUDIR" ' Cria um novo diretrio ou pasta. Exemplo da instruo Name Este exemplo utiliza a instruo Name para renomear um arquivo. Para este exemplo, suponha que os diretrios ou pastas especificados j existem. Dim NomeAntigo, NovoNome NomeAntigo = "NOMEANTIGO": NovoNome = "NOVOARQUIVO" ' Define os nomes de arquivo. Name NomeAntigo As NovoNome ' Renomeia o arquivo. NomeAntigo = "C:\MEUDIR\ARQUIVOANTIGO": NovoNome = "C:\SEUDIR\NOVOARQUIVO" Name NomeAntigo As NovoNome ' Move e renomeia o arquivo. Exemplo da funo QBColor Este exemplo utiliza a funo QBColor para alterar a propriedade BackColor do formulrio passado como MeuFormulrio para a cor indicada por CdigoDaCor. QBColor aceita valores inteiros entre 0 e 15. Sub ChangeBackColor (CdigoDaCor As Integer, MeuFormulrio As Form) MeuFormulrio.BackColor = QBColor(CdigoDaCor) End Sub Exemplo da funo RGB Este exemplo mostra como a funo RGB utilizada para retornar um nmero inteiro que representa um valor de cor RGB. Ela utilizada em mtodos e propriedades de aplicativo que aceitam uma especificao de cor. O objeto MeuObjeto e a sua propriedade so utilizados somente com finalidades ilustrativas. Se MeuObjeto no existir, ou se no tiver uma propriedade Color, ocorrer um erro. Dim VERMELHO, I, ValorRGB, MeuObjeto Vermelho = RGB(255, 0, 0) ' Retorna o valor para Vermelho. I = 75 ' Inicializa o deslocamento. ValorRGB = RGB(I, 64 + I, 128 + I) ' Igual a RGB(75, 139, 203). MeuObjeto.Color = RGB(255, 0, 0) ' Define a propriedade Color de ' MeuObjeto como Vermelho. Exemplo da instruo RmDir Este exemplo utiliza a instruo RmDir para remover um diretrio ou pasta existente. ' Pressupe que MEUDIR um diretrio ou pasta vazia. RmDir "MEUDIR" ' Remove MEUDIR.

Funes Internas

104

Exemplo da instruo SetAttr Este exemplo utiliza a instruo SetAttr para definir atributos para um arquivo. SetAttr "ARQUIVODETESTE ", vbHidden ' Define o atributo de oculto. SetAttr "ARQUIVODETESTE", vbHidden + vbReadOnly ' Define os atributos de ' oculto e somente leitura.

Instruo ChDir
Altera o diretrio ou pasta atual. Sintaxe ChDir caminho O argumento caminho obrigatrio uma expresso de seqncia que identifica qual diretrio ou pasta se torna o novo diretrio ou pasta padro. O caminho pode incluir a unidade de disco. Se nenhuma unidade for especificada, ChDir altera o diretrio ou pasta padro na unidade atual. Comentrios A instruo ChDir altera o diretrio padro, mas no a unidade de disco padro. Por exemplo, se a unidade padro for C, a instruo a seguir altera o diretrio padro na unidade D, mas C permanece como unidade padro: ChDir "D:\TMP"

Instruo ChDrive
Altera a unidade de disco atual. Sintaxe ChDrive unidade O argumento unidade obrigatrio uma expresso de seqncia que especifica uma unidade existente. Se voc fornecer uma seqncia de comprimento zero (""), a unidade atual no ser alterada. Se o argumento unidade for uma seqncia de mltiplos caracteres, CdDrive utilizar somente a primeira letra.

Funo CurDir
Retorna um Variant (String) representando o caminho atual. Sintaxe CurDir[(unidade)] O argumento opcional unidade uma expresso de seqncia que especifica uma unidade existente. Se no for especificada uma unidade ou se unidade for uma seqncia de comprimento zero (""), CurDir retorna o caminho para a unidade atual.

Funes Internas

105

Funo Dir
Retorna um String que representa o nome de um arquivo, diretrio ou pasta que corresponde a um padro especificado ou atributo de arquivo, ou o rtulo de volume de uma unidade de disco. Sintaxe Dir[(nomedocaminho[, atributos])] A sintaxe da funo Dir possui as partes a seguir: Parte Descrio nomedocami Opcional. Expresso de seqncia que especifica um nome de arquivo nho pode incluir diretrio ou pasta e unidade de disco. Retorna uma seqncia de comprimento zero ("") se nomedocaminho no for encontrado. atributos Opcional. Constante ou expresso numrica cuja soma especifica os atributos de arquivo. Se for omitido, todos os arquivos que correspondem a nomedocaminho so retornados. Definies As definies do argumento atributos so: Constante Valor vbNormal 0 vbHidden 2 vbSystem 4 vbVolume 8 vbDirectory 16

Descrio Normal Oculto Arquivo do sistema Rtulo do volume. Se for especificado, todos os outros atributos sero ignorados Diretrio ou pasta

Observao Estas constantes so especificadas pelo Visual Basic para Aplicativos e podem ser utilizadas em qualquer parte do seu cdigo no lugar de valores reais. Comentrios Dir suporta a utilizao de curingas de mltiplos caracteres (*) e de caractere nico (?) para especificar vrios arquivos. Voc deve especificar nomedocaminho na primeira vez que chamar a funo Dir ou um erro ser gerado. Se especificar tambm atributos de arquivo, ser necessrio incluir nomedocaminho. Dir retorna o primeiro nome de arquivo que corresponda a nomedocaminho. Para obter qualquer nome de arquivo adicional que combine com nomedocaminho, chame Dir novamente sem argumentos. Quando no houver mais nenhum nome de arquivo correspondente, Dir retornar uma seqncia de comprimento zero (""). Uma vez que essa seqncia seja retornada, voc dever especificar nomedocaminho em chamadas subseqentes ou um erro ser gerado. Voc pode mudar para um novo nomedocaminho sem recuperar todos os nomes de arquivo que correspondam ao nomedocaminho atual. Entretanto, voc no pode chamar a funo Dir recorrentemente. Chamar Dir com o atributo vbDirectory no retorna subdiretrios continuamente. Dica Em razo de os nomes de arquivo serem recuperados sem nenhuma ordem especfica, pode ser que voc deseje armazenar nomes de arquivo retornados em uma matriz e depois classific-la.

Funes Internas

106

Funo Environ
Retorna o String associado a uma varivel de ambiente do sistema operacional. Sintaxe Environ({envstring | number}) A sintaxe da funo Environ possui os argumentos nomeados a seguir: Parte Descrio envstring Opcional. Expresso de seqncia que contm o nome de uma varivel de ambiente. number Opcional. Expresso numrica que corresponde ordem numrica da seqncia de ambiente na tabela de seqncia de ambiente. O argumento number pode ser qualquer expresso numrica, mas ser arredondado para um nmero inteiro antes de ser avaliado. Comentrios Se envstring no puder ser encontrado na tabela de seqncia de ambiente, uma seqncia de comprimento zero ("") ser retornada. Caso contrrio, Environ retornar o texto atribudo ao envstring especificado, isto , o texto subseqente ao sinal de igual (=) na tabela de seqncia de ambiente daquela varivel de ambiente. Se voc especificar number, a seqncia que ocupa aquela posio numrica na tabela de seqncia de ambiente ser retornada. Neste caso, Environ retornar todo o texto, incluindo envstring. Se no houver seqncia de ambiente na posio especificada, Environ retornar uma seqncia de comprimento zero.

Instruo FileCopy
Copia um arquivo. Sintaxe FileCopy source, destination A sintaxe da instruo FileCopy possui os argumentos nomeados a seguir: Parte Descrio source Obrigatrio. Expresso de seqncia arquivo a ser copiado. Source pode unidade de disco. destination Obrigatrio. Expresso de seqncia arquivo de destino. Destination pode unidade de disco.

que especifica o nome do incluir diretrio ou pasta e que especifica o nome do incluir diretrio ou pasta e

Comentrios Se voc tentar utilizar a instruo FileCopy em um arquivo atualmente aberto, um erro ser gerado.

Funes Internas

107

Funo FileDateTime
Retorna um Variant (Date) que indica a data e hora em que um arquivo foi criado ou modificado pela ltima vez. Sintaxe FileDateTime(nomedocaminho) O argumento obrigatrio nomedocaminho uma expresso de seqncia que especifica um nome de arquivo. O nomedocaminho pode incluir o diretrio ou pasta e a unidade de disco.

Funo FileLen
Retorna um Long que especifica o tamanho de um arquivo em bytes. Sintaxe FileLen(nomedocaminho) O argumento obrigatrio nomedocaminho uma expresso de seqncia que especifica um arquivo. O nomedocaminho pode incluir o diretrio ou pasta e a unidade de disco. Comentrios Se o arquivo especificado estiver aberto quando a funo FileLen for chamada, o valor retornado representa o tamanho do arquivo imediatamente antes de ele ser aberto. Observao Para obter o tamanho de um arquivo aberto, utilize a funo LOF.

Funo GetAttr
Retorna um Integer que representa os atributos de um arquivo, diretrio ou pasta. Sintaxe GetAttr(nomedocaminho) O argumento obrigatrio nomedocaminho uma expresso de seqncia que especifica um nome de arquivo. O nomedocaminho pode incluir o diretrio ou pasta e a unidade de disco. Valores de retorno O valor retornado por GetAttr a soma dos valores de atributos a seguir: Constante Valor Descrio vbNormal 0 Normal vbReadOnly 1 Somente leitura vbHidden 2 Oculto vbSystem 4 Sistema vbDirectory 16 Diretrio ou pasta vbArchive 32 O arquivo foi alterado desde o ltimo backup Observao Estas constantes so especificadas pelo Visual Basic para Aplicativos. Os nomes podem ser utilizados em qualquer parte do seu cdigo no lugar dos valores reais. Comentrios Para determinar quais atributos esto definidos, utilize o operador And para efetuar uma comparao bit a bit do valor retornado pela funo GetAttr e do valor do atributo individual de arquivo que voc deseja. Se o resultado no for zero, o atributo ser definido para o arquivo nomeado. Por exemplo, o valor de retorno da expresso And a seguir ser zero se o atributo Archive no estiver definido: Result = GetAttr(FName) And vbArchive Um valor diferente de zero ser retornado se o atributo Archive estiver definido.

Instruo Kill
Exclui arquivos de um disco. Sintaxe Kill nomedocaminho O argumento obrigatrio nomedocaminho uma expresso de seqncia que especifica um ou mais nomes de arquivo a serem excludos. O nomedocaminho pode incluir o diretrio ou pasta e a unidade de disco. Comentrios Kill suporta a utilizao de curingas de mltiplos caracteres (*) ou de caractere nico (?) para especificar vrios arquivos. Se voc tentar utilizar Kill para excluir um arquivo aberto, um erro ser gerado. Observao Para excluir diretrios, utilize a instruo RmDir.

Instruo MkDir
Cria um novo diretrio ou pasta. Sintaxe MkDir caminho O argumento obrigatrio caminho uma expresso de seqncia que identifica o diretrio ou pasta a ser criado. O caminho pode incluir a unidade de disco. Se uma unidade no for especificada, MkDir cria o novo diretrio ou pasta na unidade atual.

Funes Internas

108

Instruo Name
Renomeia um arquivo, diretrio ou pasta no disco. Sintaxe Name nomeantigodocaminho As nomenovodocaminho A sintaxe da instruo Name possui as partes a seguir: Parte Descrio nomeantigodocaminho Obrigatrio. Expresso de seqncia que especifica o nome de arquivo existente e sua localizao pode incluir diretrio ou pasta e unidade de disco. Nomenovodocaminho Obrigatrio. Expresso de seqncia que especifica o novo nome de arquivo e sua localizao pode incluir diretrio ou pasta e unidade de disco. O nome de arquivo especificado por nomenovodocaminho no pode j existir. Comentrios Tanto nomenovodocaminho quanto nomeantigodocaminho devem estar na mesma unidade. Se o caminho em nomenovodocaminho existir e for diferente do caminho em nomeantigodocaminho, a instruo Name mover o arquivo para o novo diretrio ou pasta e, se necessrio, renomear o arquivo. Se nomenovodocaminho e nomeantigodocaminho tiverem caminhos diferentes e nomes de arquivo iguais, Name mover o arquivo para a nova localizao e no alterar o nome do arquivo. Utilizando Name, voc poder mover um arquivo de um diretrio ou pasta para outro, mas no poder mover um diretrio ou pasta. A utilizao de Name em um arquivo aberto gera um erro. Voc deve fechar um arquivo que esteja aberto antes de renome-lo. Os argumentos de Name no podem conter curingas de mltiplos caracteres (*) nem de caractere nico (?).

Funo QBColor
Retorna um Long que representa o cdigo de cores RGB correspondente ao nmero de cor especificado. Sintaxe QBColor(cor) O argumento obrigatrio cor um nmero inteiro no intervalo de 0 a 15. Definies O argumento cor possui as definies a seguir: Nmero Cor Nmero Cor 0 Preto 8 Cinza 1 Azul 9 Azul-claro 2 Verde 10 Verde-claro 3 Ciano 11 Ciano-claro 4 Vermelho 12 Vermelho-claro 5 Magenta 13 Magenta-claro 6 Amarelo 14 Amarelo-claro 7 Branco 15 Branco-brilhante Comentrios O argumento cor representa valores de cor utilizados por verses anteriores do Basic (como o Microsoft Visual Basic para MS-DOS e o Basic Compiler). Comeando pelo byte menos significativo, o valor retornado especifica os valores de vermelho, verde e azul utilizados para definir a cor apropriada no sistema RGB utilizado pelo Visual Basic para Aplicativos.

Funo RGB
Retorna um nmero inteiro Long que representa um valor de cor RGB. Sintaxe RGB(red, green, blue A sintaxe da funo RGB possui os argumentos nomeados a seguir: Parte Descrio red Obrigatrio; Variant (Integer). Nmero no intervalo de 0 a 255, inclusive, que representa o componente vermelho da cor. green Obrigatrio; Variant (Integer). Nmero no intervalo de 0 a.255, inclusive, que representa o componente verde da cor. blue Obrigatrio; Variant (Integer). Nmero no intervalo de 0 a 255, inclusive, que representa o componente azul da cor. Comentrios Os mtodos e as propriedades de aplicativos que aceitam uma especificao de cor esperam que essa especificao seja um nmero que represente um valor de cor RGB. Este valor especifica a intensidade relativa de vermelho, verde e azul que causa a exibio de uma cor especfica. O valor de qualquer argumento de RGB que exceda 255 assumido como sendo 255. A tabela a seguir lista algumas cores padro e os valores de vermelho, verde, e azul que elas contm: Cor Valor doValor do verde Valor do azul vermelho

Funes Internas

109

Preto Azul Verde Ciano Vermelho Magenta Amarelo Branco

0 0 0 0 255 255 255 255

0 0 255 255 0 0 255 255

0 255 0 255 0 255 0 255

Instruo RmDir
Remove um diretrio ou pasta existente. Sintaxe RmDir caminho O argumento obrigatrio caminho uma expresso de seqncia que identifica o diretrio ou pasta a ser removida. O caminho pode incluir a unidade de disco. Se uma unidade no for especificada, RmDir remove o diretrio ou pasta da unidade atual. Comentrios Se voc tentar utilizar RmDir em um diretrio ou pasta que contenha arquivos, um erro ser gerado. Utilize a instruo Kill para excluir todos os arquivos antes de tentar a remoo de um diretrio ou pasta.

Instruo SetAttr
Define as informaes de atributo de um arquivo. Sintaxe SetAttr pathname, attributes A sintaxe da instruo SetAttr possui os argumentos nomeados a seguir: Parte Descrio pathname Obrigatrio. Expresso de seqncia que especifica um nome de arquivo pode incluir diretrio ou pasta e unidade de disco. Attributes Obrigatrio. Constante ou expresso numrica cuja soma especifica os atributos do arquivo. Definies As definies do argumento attributes so: Constante Valor vbNormal 0 vbReadOnly 1 vbHidden 2 vbSystem 4 vbArchive 32

Descrio Normal (padro) Somente leitura Oculto Arquivo do sistema O arquivo foi alterado desde o ltimo backup

Observao Estas constantes so especificadas pelo Visual Basic para Aplicativos. Os nomes podem ser utilizados em qualquer parte do seu cdigo no lugar dos valores reais. Comentrios Um erro em tempo de execuo ocorrer se voc tentar definir os atributos de um arquivo que esteja aberto. Exemplo da instruo Close Este exemplo utiliza a instruo Close para fechar os trs arquivos abertos para Output. Dim I, NomeDoArquivo For I = 1 To 3 ' Faz o loop 3 vezes. NomeDoArquivo = "TESTE" & I' Cria o nome de arquivo. Open NomeDoArquivo For Output As #I ' Abre o arquivo. Print #I, "Isto um teste." ' Grava a seqncia de caracteres no arquivo. Next I Close ' Fecha os 3 arquivos abertos. Exemplo da funo EOF Este exemplo utiliza a funo EOF para detectar o final de um arquivo. Este exemplo pressupe que MEUARQUIVO seja um arquivo de texto com algumas linhas de texto. Dim DadosDeEntrada Open "MEUARQUIVO" For Input As #1 ' Abre o arquivo para entrada. Do While Not EOF(1) ' Procura o fim do arquivo. Line Input #1, DadosDeEntrada ' L a linha de dados. Debug.Print DadosDeEntrada ' Imprime para a janela Depurar. Loop Close #1 ' Fecha o arquivo.

Funes Internas

110

Exemplo da funo FileAttr Este exemplo utiliza a funo FileAttr para retornar o modo de arquivo e o identificador de arquivo de um arquivo aberto. Dim NumArquivo, Modo, Identificador NumArquivo = 1 ' Atribui o nmero de arquivo. Open "ARQUIVODETESTE" For Append As NumArquivo ' Abre o arquivo. Modo = FileAttr(NumArquivo, 1) ' Retorna 8 (modo de arquivo Acrscimo). Identificador = FileAttr(NumArquivo, 2) ' Retorna o identificador do arquivo. Close NumArquivo ' Fecha o arquivo.

Funes Internas

111

Exemplo da funo FreeFile Este exemplo utiliza a funo FreeFile para retornar o prximo nmero de arquivo disponvel. Cinco arquivos so abertos para sada dentro do loop e alguns dados de exemplo so gravados em cada. Dim Meundice, NmeroDoArquivo For Meundice = 1 To 5 ' Faz o loop 5 vezes. NmeroDoArquivo = FreeFile ' Obtm o nmero de arquivo ' no utilizado. Open "TESTE" & Meundice For Output As #NmeroDoArquivo ' Cria o nome do arquivo. Write #NmeroDoArquivo, "Isto um exemplo." ' D sada ao texto. Close #NmeroDoArquivo ' Fecha o arquivo. Next Meundice Exemplo da instruo Get Este exemplo utiliza a instruo Get para ler dados de um arquivo para uma varivel. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo que contenha cinco registros do tipo Record definido pelo usurio. Type Record ' Define o tipo definido pelo usurio. ID As Integer Name As String * 20 End Type Dim MeuRegistro As Record, Posio ' Declara as variveis. ' Abre o arquivo de exemplo para acesso aleatrio. Open "ARQUIVODETESTE" For Random As #1 Len = Len(MeuRegistro) ' L o arquivo de exemplo utilizando a instruo Get. Posio = 3 ' Define o nmero do registro. Get #1, Posio, MeuRegistro ' L o terceiro registro. Close #1 ' Fecha o arquivo. Exemplo da instruo Input # Este exemplo utiliza a instruo Input # para ler dados de um arquivo em duas variveis. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo com algumas linhas de dados gravadas nele utilizando a instruo Write #, ou seja, cada linha contm uma seqncia de caracteres entre aspas e um nmero separado por uma vrgula; por exemplo, ("Al", 234). Dim MinhaSeqncia, MeuNmero Open "ARQUIVODETESTE" For Input As #1 ' Abre o arquivo para entrada. Do While Not EOF(1) ' Faz o loop at o fim do arquivo. Input #1, MinhaSeqncia, MeuNmero ' L os dados para duas variveis. Debug.Print MinhaSeqncia, MeuNmero ' Imprime os dados para a janela Depurar. Loop Close #1 ' Fecha o arquivo.

Funes Internas

112

Exemplo da funo Input Este exemplo utiliza a funo Input para ler um caractere de cada vez de um arquivo e o imprime para a janela Depurar. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo com algumas linhas de dados de exemplo. Dim MeuCar Open "ARQUIVODETESTE" For Input As #1 ' Abre o arquivo. Do While Not EOF(1) ' Faz o loop at o fim do arquivo. MeuCar = Input(1, #1) ' Obtm um caractere. Debug.Print MeuCar ' Imprime para a janela Depurar. Loop Close #1 ' Fecha o arquivo. Exemplo da instruo Line Input # Este exemplo utiliza a instruo Line Input # para ler uma linha de um arquivo seqencial e a atribui a uma varivel. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo de texto com algumas linhas de dados de exemplo. Dim LinhaDeTexto Open "ARQUIVODETESTE" For Input As #1 ' Abre o arquivo. Do While Not EOF(1) ' Faz o loop at o fim do arquivo. Line Input #1, LinhaDeTexto ' L a linha para a varivel. Debug.Print LinhaDeTexto ' Imprime para a janela Depurar. Loop Close #1 ' Fecha o arquivo. Exemplo da funo Loc Este exemplo utiliza a funo Loc para retornar a posio atual de leitura/gravao dentro de um arquivo aberto. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo de texto com algumas linhas de dados de exemplo. Dim MeuLocal, MinhaLinha Open "ARQUIVODETESTE" For Binary As #1 ' Abre o arquivo recm-criado. Do While MeuLocal < LOF(1) ' Faz o loop at o fim do arquivo. MinhaLinha = MinhaLinha & Input(1, #1) ' L o caractere para a varivel. MeuLocal = Loc(1) ' Obtm a posio atual dentro do arquivo. ' Imprime para a janela Depurar. Debug.Print MinhaLinha; Tab; MeuLocal Loop Close #1 ' Fecha o arquivo. Exemplo das instrues Lock e Unlock Este exemplo ilustra o uso das instrues Lock e Unlock. Enquanto um registro est sendo modificado, o acesso por outros processos negado. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo que contenha cinco registros do tipo Record definido pelo usurio. Type Record ' Define o tipo definido pelo usurio. ID As Integer Name As String * 20 End Type Dim MeuRegistro As Record, NmeroDoRegistro ' Declara as variveis. ' Abre o arquivo de exemplo para acesso aleatrio. Open "ARQUIVODETESTE" For Random Shared As #1 Len = Len(MeuRegistro) NmeroDoRegistro = 4 ' Define o nmero do registro. Lock #1, NmeroDoRegistro' Protege o registro. Get #1, NmeroDoRegistro, MeuRegistro ' L o registro. MeuRegistro.ID = 234 ' Modifica o registro. MeuRegistro.Name = "Joo da Silva" Put #1, NmeroDoRegistro, MeuRegistro ' Grava o arquivo modificado. Unlock #1, NmeroDoRegistro ' Desprotege o registro atual. Close #1 ' Fecha o arquivo. Exemplo da funo LOF Este exemplo utiliza a funo LOF para determinar o tamanho de um arquivo aberto. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo de texto que contenha dados de exemplo. Dim ComprimentoDoArquivo Open "ARQUIVODETESTE" For Input As #1 ' Abre o arquivo. ComprimentoDoArquivo = LOF(1) ' Obtm o comprimento do arquivo. Close #1 ' Fecha o arquivo. Exemplo da instruo Open Este exemplo ilustra vrios usos da instruo Open para permitir a entrada e sada em um arquivo. O cdigo a seguir abre o arquivo ARQUIVODETESTE no modo de entrada seqencial. Open "ARQUIVODETESTE" For Input As #1

Funes Internas

113

' Fecha antes de reabrir em outro modo. Close #1 Este exemplo abre o arquivo no modo Binrio somente para gravar operaes. Open "ARQUIVODETESTE" For Binary Access Write As #1 ' Fecha antes de reabrir em outro modo. Close #1 O exemplo a seguir abre o arquivo no modo Aleatrio. O arquivo contm registros do tipo Record definido pelo usurio. Type Record ' Define o tipo definido pelo usurio. ID As Integer Name As String * 20 End Type Dim MeuRegistro As Record' Declara a varivel. Open "ARQUIVODETESTE" For Random As #1 Len = Len(MeuRegistro) ' Fecha antes de reabrir em outro modo. Close #1 Este exemplo de cdigo abre o arquivo para sada seqencial; todo processo pode ler ou gravar no arquivo. Open "ARQUIVODETESTE" For Output Shared As #1 ' Fecha antes de reabrir em outro modo. Close #1 Este exemplo de cdigo abre o arquivo no modo Binrio para leitura; outros processos no conseguem ler o arquivo. Open "ARQUIVODETESTE" For Binary Access Read Lock Read As #1

Funes Internas

114

Exemplo da instruo Print # Este exemplo utiliza a instruo Print # para gravar dados em um arquivo. Open "ARQUIVODETESTE" For Output As #1 ' Abre o arquivo para sada. Print #1, "Isto um teste" ' Imprime o texto para o arquivo. Print #1, ' Imprime a linha no arquivo. Print #1, "Zona 1"; Tab ; "Zona 2" ' Imprime em duas zonas de impresso. Print #1, "Al" ; " " ; "Mundo" ' Seqncias de caracteres separadas por espao. Print #1, Spc(5) ; "5 espaos esquerda "' Imprime cinco espaos esquerda. Print #1, Tab(10) ; "Al" ' Imprime a palavra na coluna 10. ' Atribui valores Boolean, Date, Null e Error. Dim MeuBool, MinhaData, MeuNulo, MeuErro MeuBool = False : MinhaData = #Fevereiro 12, 1969# : MeuNulo = Null MeuErro = CVErr(32767) ' True, False, Null e Error so traduzidos utilizando-se as configuraes de localidade do seu ' sistema. As literais de data so gravadas utilizando-se a data abreviada padro. Print #1, MeuBool ; " um valor Booleano" Print #1, MinhaData ; " uma data" Print #1, MeuNulo ; " um valor nulo" Print #1, MeuErro ; " um valor de erro" Close #1 ' Fecha o arquivo. Exemplo da instruo Put Este exemplo utiliza a instruo Put para gravar dados em um arquivo. Cinco registros do tipo Record definido pelo usurio so gravados no arquivo. Type Record ' Define o tipo definido pelo usurio. ID As Integer Name As String * 20 End Type Dim MeuRegistro As Record, NmeroDoRegistro ' Declara as variveis. ' Abre o arquivo para acesso aleatrio. Open "ARQUIVODETESTE" For Random As #1 Len = Len(MeuRegistro) For NmeroDoRegistro = 1 To 5 ' Faz o loop 5 vezes. MeuRegistro.ID = NmeroDoRegistro ' Define o cdigo. MeuRegistro.Name = "Meu Nome" & NmeroDoRegistro ' Cria uma seqncia de caracteres. Put #1, NmeroDoRegistro, MeuRegistro ' Grava o registro no arquivo. Next NmeroDoRegistro Close #1 ' Fecha o arquivo.

Funes Internas

115

Exemplo da instruo Reset Este exemplo utiliza a instruo Reset para fechar todos os arquivos abertos e gravar o contedo de todos os buffers de arquivo em disco. Observe o uso da varivel Variant NmeroDoArquivo tanto como a seqncia de caracteres e o nmero. Dim NmeroDoArquivo For NmeroDoArquivo = 1 To 5 ' Faz o loop 5 vezes. ' Abre o arquivo para sada. NmeroDoArquivo concatenado na seqncia de caracteres ' TESTE para o nome do arquivo, mas um nmero que se segue a #. Open "TESTE" & NmeroDoArquivo For Output As #NmeroDoArquivo Write #NmeroDoArquivo, "Al Mundo" ' Grava os dados no arquivo. Next NmeroDoArquivo Reset ' Fecha os arquivos e grava o contedo ' em disco. Exemplo da funo Seek Este exemplo utiliza a funo Seek para retornar a posio de arquivo atual. O exemplo pressupe que ARQUIVODETESTE seja um arquivo que contenha registros do tipo Record definido pelo usurio. Type Record ' Define o tipo definido pelo usurio. ID As Integer Name As String * 20 End Type Para arquivos abertos no modo Aleatrio, Seek retorna o nmero do prximo registro. Dim MeuRegistro As Record' Declara a varivel. Open "ARQUIVODETESTE" For Random As #1 Len = Len(MeuRegistro) Do While Not EOF(1) ' Faz o loop at o final do arquivo. Get #1, , MeuRegistro ' L o prximo registro. Debug.Print Seek(1) ' Imprime o nmero do registro para a janela ' Depurar. Loop Close #1 ' Fecha o arquivo. Para arquivos abertos em modo diferentes do modo Aleatrio, Seek retorna a posio do byte em que ocorre a prxima operao. Suponha que ARQUIVODETESTE seja um arquivo que contenha algumas linhas de texto. Dim MeuCar Open "ARQUIVODETESTE" For Input As #1 ' Abre o arquivo para leitura. Do While Not EOF(1) ' Faz o loop at o fim do arquivo. MeuCar = Input(1, #1) ' L o prximo caractere de dados. Debug.Print Seek(1) ' Imprime a posio do byte para a janela ' Depurar. Loop Close #1 ' Fecha o arquivo.

Funes Internas

116

Exemplo da instruo Seek Este exemplo utiliza a instruo Seek para definir a posio da prxima leitura ou gravao dentro de um arquivo. Este exemplo pressupe que ARQUIVODETESTE seja um arquivo que contenha registros do tipo Record definido pelo usurio. Type Record ' Define o tipo definido pelo usurio. ID As Integer Name As String * 20 End Type Para arquivos abertos no modo Aleatrio, Seek define o prximo registro. Dim MeuRegistro As Record, TamanhoMax, NmeroDoRegistro ' Declara as variveis. ' Abre o arquivo no modo de arquivo aleatrio. Open "ARQUIVODETESTE" For Random As #1 Len = Len(MeuRegistro) TamanhoMax = LOF(1) \ Len(MeuRegistro) ' Obtm nmero de registros no arquivo. ' O loop l todos os registros a comear do ltimo. For NmeroDoRegistro = TamanhoMax To 1 Step - 1 Seek #1, NmeroDoRegistro ' Define a posio. Get #1, , MeuRegistro ' L o registro. Next NmeroDoRegistro Close #1 ' Fecha o arquivo. Para arquivos abertos em modos diferentes do modo Aleatrio, Seek define a posio do byte em que a prxima operao ocorre. Suponha que ARQUIVODETESTE seja um arquivo que contenha algumas linhas de texto. Dim TamanhoMax, PrximoCar, MeuCar Open "ARQUIVODETESTE" For Input As #1 ' Abre o arquivo para entrada. TamanhoMax = LOF(1) ' Obtm o tamanho do arquivo em bytes. ' O loop l todos os caracteres a comear do ltimo. For PrximoCar = TamanhoMax To 1 Step -1 Seek #1, PrximoCar ' Define a posio. MeuCar = Input(1, #1) ' L os caracteres. Next PrximoCar Close #1 ' Fecha o arquivo. Exemplo da funo Spc Este exemplo utiliza a funo Spc para posicionar a sada em um arquivo e na janela Depurar. ' A funo Spc pode ser utilizada com a instruo Print #. Open "ARQUIVODETESTE" For Output As #1 ' Abre o arquivo para sada. Print #1, "10 espaos entre aqui "; Spc(10); "e aqui." Close #1 ' Fecha o arquivo. A instruo a seguir faz com que o texto seja impresso na janela Depurar (utilizando o mtodo Print), precedido por 30 espaos. Debug.Print Spc(30); "Trinta espaos depois..."

Funes Internas

117

Exemplo da funo Tab Este exemplo utiliza a funo Tab para posicionar a sada em um arquivo e na janela Depurar. ' A funo Tab pode ser utilizada com a instruo Print #. Open "ARQUIVODETESTE" For Output As #1 ' Abre o arquivo para sada. ' A segunda palavra impressa na coluna 20. Print #1, "Al"; Tab(20); "Mundo." ' Se o argumento for omitido, o cursor ser movido para a prxima zona de impresso. Print #1, "Al"; Tab; "Mundo" Close #1 ' Fecha o arquivo. A funo Tab tambm pode ser utilizada com o mtodo Print. A instruo a seguir imprime o texto comeando na coluna 10. Debug.Print Tab(10); "10 colunas depois do incio." Exemplo da instruo Width # Este exemplo utiliza a instruo Width # para definir a largura da linha de sada de um arquivo. Dim I Open "ARQUIVODETESTE" For Output As #1 ' Abre o arquivo para sada. Width #1, 5 ' Define a largura da linha de sada como 5. For I = 0 To 9 ' Faz o loop 10 vezes. Print #1, Chr(48 + I); ' Imprime cinco caracteres por linha. Next I Close #1 ' Fecha o arquivo. Exemplo da instruo Write # Este exemplo utiliza a instruo Write # para gravar dados brutos em um arquivo seqencial. Open "ARQUIVODETESTE" For Output As #1 ' Abre o arquivo para sada. Write #1, "Al Mundo", 234 ' Grava os dados delimitados por vrgula. Write #1, ' Grava linha em branco. Dim MeuBool, MinhaData, MeuNulo, MeuErro ' Atribui os valores Boolean, Date, Null e Error. MeuBool = False : MinhaData = #Fevereiro 12, 1969# : MeuNulo = Null MeuErro = CVErr(32767) ' Os dados Booleanos so gravados como #TRUE# ou #FALSE#. As literais de data so ' gravadas em formato de data universal; por exemplo, #1994-07-13# 'representa 13 de julho de 1994. Os dados nulos so gravados como #NULL#. ' Os dados Error so gravados como #ERROR errorcode#. Write #1, MeuBool ; " um valor Booleano" Write #1, MinhaData ; " uma data" Write #1, MeuNulo ; " um valor nulo" Write #1, MeuErro ; " um valor de erro" Close #1 ' Fecha o arquivo.

Funes Internas

118

Instruo Close
Conclui a entrada/sada (E/S) para um arquivo aberto utilizando-se a instruo Open. Sintaxe Close [listadenmerodoarquivo] O argumento opcional listadenmerodoarquivo pode ser um ou mais nmeros de arquivo que utilizam a sintaxe a seguir, onde nmerodoarquivo qualquer nmero de arquivo vlido: [[#]nmerodoarquivo] [, [#]nmerodoarquivo] . . . Comentrios Se voc omitir listadenmerodoarquivo, todos os arquivos ativos abertos pela instruo Open sero fechados. Quando voc fecha os arquivos que foram abertos para Output ou Append, o buffer final de sada gravado no buffer do sistema operacional referente ao arquivo. Todo o espao de buffer associado ao arquivo fechado liberado. Quando a instruo Close executada, encerra-se a associao de um arquivo com o seu nmero de arquivo.

Funo EOF
Retorna um Integer contendo o valor Boolean True quando se chega ao final de um arquivo aberto para Input seqencial ou Random. Sintaxe EOF(nmerodoarquivo) O argumento obrigatrio nmerodoarquivo um Integer contendo qualquer nmero de arquivo vlido. Comentrios Utilize EOF para evitar o erro gerado pela tentativa de inserir dados depois do final de um arquivo. A funo EOF retorna False enquanto no o final do arquivo no alcanado. Com os arquivos abertos para o acesso Random ou Binary, EOF retorna False at que a ltima instruo Get executada no possa ler um registro inteiro. Com os arquivos abertos para acesso Binary, uma tentativa de leitura do arquivo utilizando-se a funo Input at que EOF retorne True gera um erro. Utilize as funes LOF e Loc em vez de EOF ao ler os arquivos binrios com Input ou utilize Get ao utilizar a funo EOF. Com os arquivos abertos para Output, EOF sempre retorna True.

Funo FileAttr
Retorna um Long representando o modo de arquivo para arquivos abertos com a instruo Open. Sintaxe FileAttr(filenumber, returntype) A sintaxe da funo FileAttr possui os argumentos nomeados a seguir: Parte Descrio filenumber Obrigatrio; Integer. Qualquer nmero de arquivo vlido. returntype Obrigatrio; Integer. Nmero indicando os tipos de informaes a serem retornadas. Especifique 1 para retornar um valor indicando o modo de arquivo. Somente em sistemas que sejam de 16 bits, especifique 2 para recuperar um identificador de arquivo de sistema operacional. Returntype 2 no suportado em sistemas de 32 bits e gera um erro. Valores de retorno Quando o argumento returntype 1, os valores de retorno a seguir indicam o modo de acesso ao arquivo: Modo Valor Input 1 Output 2 Random 4 Append 8 Binary 32

Funo FreeFile
Retorna um Integer representando o prximo nmero de arquivo disponvel para utilizao pela instruo Open. Sintaxe FreeFile[(nmerodointervalo)] O argumento opcional nmerodointervalo um Variant que especifica o intervalo a partir do qual o prximo nmero de arquivo disponvel deve ser retornado. Especifique 0 (padro) para retornar um nmero de arquivo no intervalo de 1 a 255, inclusive. Especifique 1 para retornar um nmero de arquivo no intervalo de 256 a 511. Comentrios Utilize FreeFile para fornecer um nmero de arquivo que no esteja j sendo utilizado.

Instruo Get
L os dados a partir de um arquivo de disco aberto e os coloca em uma varivel. Sintaxe Get [#]nmerodoarquivo, [nmerodoreg], nomedavar A sintaxe da instruo Get possui as partes a seguir: Parte Descrio Funes Internas

119

nmerodoarquivo nmerodoreg nomedavar

Obrigatrio. Qualquer nmero de arquivo vlido. Opcional. Variant (Long). Nmero do registro (arquivos no modo Random) ou nmero de byte (arquivos no modo Binary) no qual iniciada a leitura. Obrigatrio. Nome de varivel vlido no qual os dados so lidos.

Comentrios A leitura de dados com Get normalmente gravada em um arquivo com Put. O primeiro registro ou byte em um arquivo encontra-se na posio 1, o segundo registro ou byte encontra-se na posio 2 e assim por diante. Se voc omitir nmerodoreg, o prximo registro ou byte aps a ltima instruo Get ou Put (ou apontado pela ltima funo Seek) ser lido. Voc deve incluir as vrgulas delimitadoras, por exemplo: Get #4,,FileBuffer Para os arquivos abertos no modo Random, so aplicadas as regras a seguir:
Se o comprimento dos dados que esto sendo lidos for menor que o comprimento especificado na clusula Len da

instruo Open, Get l os registros subseqentes nos limites de comprimento dos registros. O espao entre o final de um registro e o comeo do prximo preenchido com o contedo existente do buffer do arquivo. Como a quantidade dos dados de preenchimento no pode ser determinada com segurana, aconselhvel fazer com que o tamanho do registro corresponda ao comprimento dos dados que esto sendo lidos. Se a varivel que est sendo lida for uma seqncia de caracteres de comprimento varivel, Get l um descritor de 2 bytes contendo o comprimento da seqncia de caracteres e, em seguida, l os dados da varivel. Entretanto, o comprimento do registro especificado pela clusula Len na instruo Open deve ser pelo menos 2 bytes maior do que o comprimento real da seqncia de caracteres. Se a varivel que est sendo lida for um Variant de tipo numrico, Get ler 2 bytes que identificam o VarType de Variant e, em seguida, os dados da varivel. Por exemplo, ao ler um Variant de VarType 3, Get l 6 bytes: 2 bytes que identificam o Variant como VarType 3 (Long) e 4 bytes que contm os dados Long. O comprimento do registro especificado pela clusula Len na instruo Open deve ser pelo menos 2 bytes maior do que o nmero de bytes real necessrio para armazenar a varivel. Observao Voc pode utilizar a instruo Get para ler uma matriz Variant a partir do disco, mas no pode utilizar Get para ler um Variant escalar contendo uma matriz. Voc no pode tambm utilizar Get para ler os objetos a partir do disco. Se a varivel que est sendo lida for um Variant de VarType 8 (String), Get l 2 bytes que identificam o VarType, 2 bytes que indicam o comprimento da seqncia de caracteres, e, em seguida, l os dados da seqncia de caracteres. O comprimento do registro especificado pela clusula Len na instruo Open deve ser pelo menos 4 bytes maior do que o comprimento real da seqncia de caracteres. Se a varivel que est sendo lida for uma matriz dinmica, Get l um descritor cujo comprimento igual a 2 mais 8 vezes o nmero de dimenses, ou seja, 2 + 8 * NmeroDeDimenses. O comprimento do registro especificado pela clusula Len na instruo Open deve ser maior ou igual soma de todos os bytes necessrios para ler os dados da matriz e o descritor da matriz. Por exemplo, a declarao de matriz a seguir exige 118 bytes quando a matriz gravada no disco: Dim MinhaMatriz(1 To 5,1 To 10) As Integer Os 118 bytes so distribudos da seguinte maneira: 18 bytes para o descritor (2 + 8 * 2) e 100 bytes para os dados (5 * 10 * 2). Se a varivel que est sendo lida for uma matriz de tamanho fixo, o Get ler somente os dados. Nenhum descritor lido. Se a varivel que est sendo lida for de qualquer outro tipo (no for uma seqncia de caracteres de comprimento varivel ou uma Variant), o Get l somente os dados da varivel. O comprimento do registro especificado pela clusula Len na instruo Open deve ser maior ou igual ao comprimento dos dados que esto sendo lidos. Get l os elementos dos tipos definidos pelo usurio como se cada um estivesse sendo lido individualmente, com exceo de que no h preenchimento algum entre os elementos. No disco, uma matriz dinmica em um tipo definido pelo usurio (gravado com Put) prefixada por um descritor cujo comprimento igual a 2 mais 8 vezes o nmero de dimenses, ou seja, 2 + 8 * NmeroDeDimenses. O comprimento do registro especificado pela clusula Len na instruo Open deve ser maior ou igual soma de todos os bytes necessrios para ler os elementos individuais, incluindo as matrizes e seus descritores. Para arquivos abertos no modo Binary, todas as regras de Random so aplicadas, exceto: A clusula Len na instruo Open no possui efeito. Get l todas as variveis a partir do disco de forma contgua; ou seja, sem preenchimento entre os registros. Para qualquer matriz que no tenha sido definida pelo usurio, Get l somente os dados. Nenhum descritor lido. Get l as seqncias de caracteres de comprimento varivel que no sejam elementos de tipos definidos pelo usurio sem esperar pelo descritor de 2 bytes de comprimento. O nmero de bytes lidos igual ao nmero de caracteres que j se encontram na seqncia de caracteres. Por exemplo, as instrues a seguir lem 10 bytes do nmero de arquivo 1: SeqVar = String(10," ") Get #1,,SeqVar

Instruo Input #
L os dados de um arquivo seqencial aberto e atribui os dados s variveis. Sintaxe Input #nmerodoarquivo, listadevar A sintaxe da instruo Input # possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. Funes Internas

120

listadevar

Obrigatrio. Lista de variveis delimitada por vrgulas s quais so atribudos os valores lidos do arquivo no pode ser uma matriz ou varivel de objeto. Contudo, as variveis que descrevem um elemento de uma matriz ou um tipo definido pelo usurio podem ser utilizadas.

Comentrios Os dados lidos com Input # so geralmente gravados em um arquivo com Write #. Utilize essa instruo somente com arquivos abertos no modo Input ou Binary. Quando lidos, seqncias de caracteres padro ou dados numricos so atribudos s variveis sem modificao. A tabela a seguir ilustra como outros dados de sada so tratados: Dados Valor atribudo varivel Vrgula delimitadora ou linhaEmpty em branco #NULL# Null #TRUE# ou #FALSE# True ou False #dd-mm-aaaa hh:mm:ss# A data e/ou hora representada pela expresso #ERROR nmerodoerro# nmerodoerro (varivel um Variant marcado como um erro) As aspas duplas (" ") dentro dos dados de entrada so ignoradas. Os itens dos dados em um arquivo devem aparecer na mesma ordem que as variveis em listadevar e corresponderem s variveis do mesmo tipo de dados. Se uma varivel for numrica e os dados no forem, um valor zero atribudo varivel. Se o fim do arquivo atingido enquanto um item de dados estiver sendo inserido, a insero interrompida e um erro gerado. Observao Para possibilitar a leitura correta dos dados em variveis a partir de um arquivo com Input #, utilize a instruo Write # em vez da instruo Print # para gravar os dados nos arquivos. A utilizao de Write # assegura que cada campo de dados separado seja delimitado de forma apropriada.

Funes Internas

121

Funo Input
Retorna String contendo os caracteres de um arquivo aberto no modo Input ou Binary. Sintaxe Input(nmero, [#]nmerodoarquivo) A sintaxe da funo Input possui as partes a seguir: Parte Descrio nmero Obrigatrio. Qualquer expresso numrica vlida especificando o nmero de caracteres a serem retornados. nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. Comentrios Os dados lidos com a funo Input so normalmente gravados em um arquivo com Print # ou Put. Utilize essa funo apenas com arquivos abertos no modo Input ou Binary. Ao contrrio da instruo Input #, a funo Input retorna todos os caracteres que l, incluindo vrgulas, retornos de carro, alimentaes de linha, aspas e espaos esquerda. Com arquivos abertos para acesso Binary, uma tentativa de se ler o arquivo utilizando a funo Input at que EOF retorne True gera um erro. Utilize as funes LOF e Loc em vez de EOF quando estiver lendo arquivos binrios com Input ou utilize Get quando utilizar a funo EOF. Observao Utilize a funo InputB para dados de bytes contidos em arquivos de texto. Com InputB, nmero especifica o nmero de bytes a serem retornados em vez do nmero de caracteres a serem retornados.

Instruo Line Input #


L uma nica linha a partir de um arquivo seqencial aberto e a atribui a uma varivel String. Sintaxe Line Input #nmerodoarquivo, nomedavar A sintaxe da instruo Line Input # possui as seguintes partes: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. nomedavar Obrigatrio. Nome da varivel Variant ou String vlido. Comentrios Os dados lidos com Line Input # so geralmente gravados a partir de um arquivo com Print #. A instruo Line Input # l um caractere do arquivo de cada vez, at encontrar um retorno de carro (Chr(13)) ou uma seqncia de retorno de carro alimentao de linha (Chr(13) + Chr(10)). As seqncias de retorno de carro alimentao de linha so ignoradas em vez de serem anexadas seqncia de caracteres.

Funes Internas

122

Funo Loc
Retorna um Long especificando a posio de leitura/gravao atual dentro de um arquivo aberto. Sintaxe Loc(nmerodoarquivo) O argumento obrigatrio nmerodoarquivo pode ser qualquer nmero de arquivo Integer vlido. Comentrios A tabela abaixo descreve o valor de retorno para cada modo de acesso a arquivo: Modo Valor de retorno Random Nmero do ltimo registro lido de ou gravado no arquivo. Sequential Posio atual do byte no arquivo dividido por 128. Entretanto, as informaes retornadas por Loc para os arquivos seqenciais no so utilizadas nem exigidas. Binary Posio do ltimo byte lido ou gravado.

Instrues Lock e Unlock


Controla o acesso atravs de outros processos para todo ou parte de um arquivo aberto com a instruo Open. Sintaxe Lock [#]nmerodoarquivo[, intervalodoregistro] ... Unlock [#]nmerodoarquivo[, intervalodoregistro] A sintaxe das instrues Lock e Unlock possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. intervalodoregistro Opcional. O intervalo de registros a serem bloqueados ou desbloqueados. Definies As definies do argumento intervalodoregistro so: nmerodoreg | [incio] To fim Definio nmerodoreg incio fim Descrio Nmero do registro (arquivos no modo Random) ou nmero byte (arquivos no modo Binary) no qual o bloqueio desbloqueio iniciado. Nmero do primeiro registro ou byte a ser bloqueado desbloqueado. Nmero do ltimo registro ou byte a ser bloqueado desbloqueado. de ou ou ou

Comentrios As instrues Lock e Unlock so utilizadas em ambientes onde vrios processos podem precisar ter acesso ao mesmo arquivo. As instrues Lock e Unlock so sempre utilizadas aos pares. Os argumentos para Lock e Unlock devem ter correspondncia exata. O primeiro registro ou byte em um arquivo encontra-se na posio 1, o segundo registro ou byte na posio 2 e assim por diante. Se voc especificar apenas um registro, somente esse registro ser bloqueado ou desbloqueado. Se voc especificar um intervalo de registros e omitir um registro inicial (incio), todos os registros do primeiro at o ltimo (fim) do intervalo sero bloqueados ou desbloqueados. A utilizao de Lock sem nmerodoreg bloqueia todo o arquivo; a utilizao de Unlock sem nmerodoreg desbloqueia todo o arquivo. Se o arquivo tiver sido aberto para entrada ou sada seqencial, Lock e Unlock afetaro todo o arquivo, independente do intervalo especificado por incio e fim. Ateno Certifique-se de remover todos os bloqueios com uma instruo Unlock antes de fechar um arquivo ou sair de seu programa. Caso contrrio, resultados imprevisveis podero ser provocados.

Funo LOF
Retorna um Long representando o tamanho, em bytes, de um arquivo aberto com a instruo Open. Sintaxe LOF(nmerodoarquivo) O argumento obrigatrio nmerodoarquivo um Integer que contm um nmero de arquivo vlido. Observao Utilize a funo FileLen para obter o comprimento de um arquivo que no est aberto.

Instruo Open
Possibilita a entrada/sada (E/S) para um arquivo. Sintaxe Open nomedocaminho For modo [Access acesso] [bloqueio] As [#]nmerodoarquivo [Len=comprimentodoreg] Funes Internas

123

A sintaxe da instruo Open possui as partes a seguir: Parte Descrio nomedocaminho Obrigatrio. Expresso de seqncia que especifica um nome de arquivo pode incluir um diretrio ou pasta e unidade de disco. modo Obrigatrio. Palavra-chave especificando o modo de arquivo: Append, Binary, Input, Output ou Random. Se no for especificado, o arquivo aberto para acesso Random. acesso Opcional. Palavra-chave especificando as operaes permitidas no arquivo aberto: Read, Write ou Read Write. bloqueio Opcional. Palavra-chave especificando as operaes permitidas no arquivo aberto por outros processos: Shared, Lock Read, Lock Write e Lock Read Write. nmerodoarquivo Obrigatrio. Um nmero de arquivo vlido no intervalo de 1 a 511, inclusive. Utilize a funo FreeFile para obter o prximo nmero de arquivo disponvel. comprimentodoreg Opcional. Nmero menor ou igual a 32.767 (bytes). Para arquivos abertos para acesso aleatrio, esse valor o comprimento do registro. Para arquivos seqenciais, esse valor o nmero de caracteres presentes no buffer. Comentrios Voc deve abrir um arquivo antes que nele seja realizada qualquer operao de E/S. Open aloca um buffer para E/S para o arquivo e determina o modo de acesso a ser utilizado com o buffer. Se o arquivo especificado por nomedocaminho no existir, ele ser criado quando um arquivo for aberto para os modos Append, Binary, Output ou Random. Se o arquivo j se encontra aberto por um outro processo e o tipo de acesso especificado no for permitido, a operao Open falhar e um erro ser gerado. A clusula Len ignorada se modo for Binary. Importante Nos modos Binary, Input e Random, voc pode abrir um arquivo utilizando um nmero de arquivo diferente sem ter que antes fechar o arquivo. Nos modos Append e Output, voc deve fechar um arquivo antes de abri-lo com um nmero de arquivo diferente.

Instruo Print #
Grava os dados formatados para tela em um arquivo seqencial. Sintaxe Print #nmerodoarquivo, [listadesada] A sintaxe da instruo Print # possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. listadesada Opcional. Expresso ou lista de expresses a ser impressa. Definies As definies do argumento listadesada so: [{Spc(n) | Tab[(n)]}] [expresso] [posdocarac] Definio Spc(n) Tab(n) Descrio Utilizado para inserir caracteres de espao na sada, onde n o nmero de caracteres de espao a serem inseridos. Utilizado para posicionar o ponto de insero em um nmero absoluto de coluna, onde n o nmero da coluna. Utilize Tab sem argumento para posicionar o ponto de insero no comeo da prxima zona de impresso. Expresses numricas ou expresses de seqncia de caracteres a serem impressas. Especifica o ponto de insero para o prximo caractere. Utilize um ponto-e-vrgula para posicionar o ponto de insero imediatamente aps o ltimo caractere exibido. Utilize Tab(n) para posicionar o ponto de insero em um nmero absoluto de coluna. Utilize Tab sem argumento para posicionar o ponto de insero no incio da prxima zona de impresso. Se posdocarac for omitido, o prximo caractere ser impresso na prxima linha.

expresso posdocarac

Comentrios Os dados gravados com Print # so geralmente lidos a partir de um arquivo com Line Input # ou Input. Se voc omitir listadesada e incluir apenas um separador de lista aps nmerodoarquivo, uma linha em branco ser impressa no arquivo. Vrias expresses podem ser separadas com um espao ou um ponto-e-vrgula. Um espao possui o mesmo efeito de um ponto-e-vrgula. Para dados Boolean, True ou False so impressos. As palavras-chave True e False no so traduzidas, independente da localidade.

Funes Internas

124

Os dados Date so gravados no arquivo utilizando o formato padro curto de datas reconhecido pelo seu sistema. Quando o componente data ou hora no estiver presente ou for zero, somente a parte fornecida gravada no arquivo. Se os dados de listadesada forem Empty., nada ser gravado no arquivo. Contudo, se listadesada for Null, Null gravado no arquivo. Para os dados de Error, a sada aparece como Error cdigodoerro. A palavra-chave Error no traduzida independente da localidade. Todos os dados gravados no arquivo com Print # so reconhecidos internacionalmente; ou seja, os dados so formatados de forma correta com o separador decimal apropriado. Como Print # grava uma imagem dos dados ao arquivo, voc deve delimitar os dados para que eles sejam impressos corretamente. Se voc utilizar Tab sem argumentos para mover a posio da impresso para a prxima zona de impresso, Print # tambm gravar os espaos entre os campos de impresso no arquivo. Observao Se, no futuro, voc desejar ler os dados de um arquivo utilizando a instruo Input #, utilize a instruo Write # ao invs da instruo Print # para gravar os dados no arquivo. A utilizao de Write # garante a integridade de cada campo de dados em particular, delimitando-os do modo adequado, para que possam ser lidos de volta utilizando Input #. A utilizao de Write # tambm assegura que os dados possam ser lidos corretamente em qualquer localidade.

Instruo Put
Grava os dados a partir de uma varivel para um arquivo em disco. Sintaxe Put [#]nmerodoarquivo, [nmerodoreg], nomedavar A sintaxe da instruo Put possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. nmerodoreg Opcional. Variant (Long). Nmero do registro (arquivos no modo Random) ou nmero do byte (arquivos no modo Binary) no qual a gravao iniciada. nomedavar Obrigatrio. Nome da varivel contendo os dados a serem gravados no disco. Comentrios Os dados gravados com Put so geralmente lidos de um arquivo com Get. O primeiro registro ou byte em um arquivo encontra-se na posio 1, o segundo registro ou byte na posio 2 e assim por diante. Se nmerodoreg for omitido, o prximo registro ou byte aps a ltima instruo Get ou Put ou aquele apontado pela ltima funo Seek ser gravado. Voc deve incluir as vrgulas de delimitao, por exemplo: Put #4,,FileBuffer Para os arquivos abertos no modo Random, so aplicadas as regras a seguir:
Se o comprimento dos dados que esto sendo gravados for menor do que o comprimento especificado na clusula Len da

instruo Open, Put grava os registros subseqentes nos limites do comprimento do registro. O espao entre o final de um registro e o incio do prximo registro preenchido com o contedo existente do buffer do arquivo. Como a quantidade dos dados de preenchimento no pode ser determinada com segurana, convm fazer com que o comprimento do registro corresponda ao dos dados que esto sendo gravados. Se o comprimento dos dados que esto sendo gravados for maior do que o comprimento especificado na clusula Len da instruo Open, um erro ser gerado. Se a varivel que est sendo gravada for uma seqncia de caracteres de comprimento varivel, Put grava um descritor de 2 bytes contendo o comprimento da seqncia e, em seguida, a varivel. O comprimento do registro sendo especificado pela clusula Len na instruo Open deve ser pelo menos 2 bytes maior do que o comprimento real da seqncia de caracteres. Se a varivel que est sendo gravada for um Variant de um tipo numrico, Put grava 2 bytes identificando o VarType do Variant e, em seguida, grava a varivel. Por exemplo, ao gravar um Variant de VarType 3, Put grava 6 bytes: 2 bytes identificando o Variant como VarType 3 (Long) e 4 bytes contendo os dados Long. O comprimento do registro especificado pela clusula Len na instruo Open deve ser pelo menos 2 bytes maior do que o nmero real de bytes necessrios para armazenar a varivel. Observao Voc pode utilizar a instruo Put para gravar uma matriz Variant em disco, mas no pode utilizar Put para gravar em disco um Variant escalar contendo uma matriz. Put tambm no pode ser utilizado para gravar objetos em disco.
Se a varivel que est sendo gravada for um Variant de VarType 8 (String), Put grava 2 bytes identificando VarType, 2

bytes indicando o comprimento da seqncia de caracteres e, em seguida, grava os dados da seqncia. O comprimento do registro especificado pela clusula Len na instruo Open deve ser pelo menos 4 bytes maior do que o comprimento real da seqncia de caracteres. Se a varivel que est sendo gravada for uma matriz dinmica, Put grava um descritor cujo comprimento igual a 2 mais 8 vezes o nmero de dimenses, ou seja, 2 + 8 * NmeroDeDimenses. O comprimento do registro especificado pela clusula Len na instruo Open deve ser maior ou igual soma de todos os bytes necessrios para gravar os dados da matriz e o descritor da matriz. Por exemplo, a declarao da matriz a seguir exige 118 bytes quando a matriz gravada em disco. Dim MinhaMatriz (1 To 5,1 To 10) As Integer Os 118 bytes so distribudos da seguinte forma: 18 bytes para o descritor (2 + 8 * 2) e 100 bytes para os dados (5 * 10 * 2). Se a varivel que est sendo gravada for uma matriz de tamanho fixo, Put grava somente os dados. Nenhum descritor gravado no disco.

Funes Internas

125

Se a varivel que est sendo gravada for qualquer outro tipo de varivel (no uma seqncia de caracteres de comprimento

varivel ou um Variant), Put grava somente os dados da varivel. O comprimento do registro especificado pela clusula Len na instruo Open deve ser maior ou igual ao comprimento dos dados que esto sendo gravados. Put grava os elementos dos tipos definidos pelo usurio como se cada um fosse gravado individualmente, com exceo de que no h preenchimento entre os elementos. No disco, uma matriz dinmica de um tipo definido pelo usurio gravada com Put prefixada por um descritor cujo comprimento igual a 2 mais 8 vezes o nmero de dimenses, ou seja, 2 + 8 * NmeroDeDimenses. O comprimento do registro especificado pela clusula Len na instruo Open pode ser maior ou igual soma de todos os bytes necessrios para gravar os elementos individuais, incluindo as matrizes e seus descritores. Para os arquivos abertos no modo Binary, so aplicadas todas as regras de Random, exceto: A clusula Len na instruo Open no possui efeito. Put grava todas as variveis no disco de forma contgua; ou seja, sem preenchimento entre os registros. Para qualquer outra matriz diferente daquela de tipo definido pelo usurio, Put grava somente os dados. Nenhum descritor gravado. Put grava as seqncias de caracteres de comprimento varivel que no sejam elementos dos tipos definidos pelo usurio sem o descritor de comprimento de 2 bytes. O nmero de bytes gravados igual ao nmero de caracteres da seqncia. Por exemplo, as instrues a seguir gravam 10 bytes em um arquivo de nmero 1: VarString$ = String$(10," ") Put #1,,VarString$

Instruo Reset
Fecha todos os arquivos em disco abertos com a instruo Open. Sintaxe Reset Comentrios A instruo Reset fecha todos os arquivos ativos abertos pela instruo Open e grava em disco o contedo de todos os buffers de arquivo.

Funo Seek
Retorna um Long especificando a posio atual de leitura/gravao dentro de um arquivo aberto utilizando-se a instruo Open. Sintaxe Seek(nmerodoarquivo) O argumento obrigatrio nmerodoarquivo um Integer contendo um nmero de arquivo vlido. Comentrios Seek retorna um valor entre 1 e 2.147.483.647 (equivalente a 2^31 1), inclusive. A tabela a seguir descreve os valores de retorno para cada modo de acesso a arquivos. Modo Valor de retorno Random Nmero do prximo registro lido ou gravado Binary Posio do byte na qual ocorre a prxima operao. O primeiro byte em Output, um arquivo encontra-se na posio 1, o segundo byte na posio 2 e Append eassim por diante. Input

Instruo Seek
Define a posio da prxima operao de leitura/gravao dentro de um arquivo aberto com a instruo Open. Sintaxe Seek [#]nmerodoarquivo, posio A sintaxe da instruo Seek possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. posio Obrigatrio. Nmero no intervalo de 1 2.147.483.647, inclusive, que indica onde a prxima operao de leitura/gravao deve ocorrer. Comentrios Os nmeros de registro especificados nas instrues Get e Put sobrepem-se posio de arquivo efetuada por Seek. Realizar uma operao de gravao de arquivo aps uma operao Seek alm do final de um arquivo faz com que o mesmo aumente de tamanho. Se voc tentar uma operao Seek em uma posio negativa ou zero, um erro ser gerado.

Funo Spc
Utilizada com a instruo Print # ou o mtodo Print para posicionar a sada. Sintaxe Spc(n)

Funes Internas

126

O argumento obrigatrio n o nmero de espaos a serem inseridos antes da exibio ou impresso da prxima expresso em uma lista. Comentrios Se n for menor que a largura da linha de sada, a prxima posio de impresso seguir imediatamente o nmero de espaos impressos. Se n for maior que a largura da linha de sada, Spc calcular a prxima posio de impresso utilizando a frmula: posioatualdaimpresso + (n Mod largura) Por exemplo, se a posio atual da impresso for 24, a largura da linha de sada for 80 e voc especificar Spc(90), a prxima impresso comear na posio 34 (a posio atual de impresso + o resto de 90/80). Se a diferena entre a posio atual da impresso e a largura da linha de sada for menor do que n (ou n Mod largura), a funo Spc passar para o incio da prxima linha e gerar espaos iguais a n (largura posioatualdaimpresso). Observao Certifique-se de que suas colunas tabulares sejam largas o suficiente para acomodarem letras largas. Quando voc utiliza o mtodo Print com uma fonte proporcionalmente espaada, a largura dos caracteres de espao impressos com a funo Spc sempre uma mdia da largura de todos os caracteres em tamanho de pontos para a fonte escolhida. Contudo, no h correlao entre o nmero de caracteres impressos e o nmero de colunas de largura fixa que esses caracteres ocupam. Por exemplo, a letra maiscula W ocupa mais do que uma coluna de largura fixa e a letra minscula i ocupa menos.

Funo Tab
Utilizada com a instruo Print # ou o mtodo Print para posicionar a sada. Sintaxe Tab[(n)] O argumento opcional n representa o nmero da coluna que movido antes da exibio ou impresso da prxima expresso em uma lista. Se for omitido, Tab move o ponto de insero para o incio da prxima zona de impresso. Isso permite que Tab seja utilizado em vez de uma vrgula nas localidades onde a vrgula utilizada como um separador decimal. Comentrios Se a posio atual de impresso na linha atual for maior do que n, Tab pula para a coluna de nmero n da prxima linha de sada. Se n for menor do que 1, Tab move a posio de impresso para a coluna 1. Se n for maior do que a largura da linha de sada, Tab calcula a prxima posio de impresso utilizando a frmula: n Mod largura Por exemplo, se a largura for 80 e voc especificar Tab(90), a prxima impresso comear na coluna 10 (o resto de 90/80). Se n for menor do que a posio atual de impresso, a impresso comear na prxima linha na posio de impresso calculada. Se a posio de impresso calculada for maior do que a posio atual de impresso, a impresso comear na posio de impresso calculada na mesma linha. A posio de impresso mais esquerda em uma linha de sada sempre 1. Quando voc utiliza a instruo Print # para imprimir em arquivos, a posio de impresso mais direita a largura atual da linha de sada, que pode ser definida utilizando-se a instruo Width #. Observao Certifique-se de que suas colunas tabulares sejam largas o suficiente para acomodarem letras largas. Quando voc utiliza a funo Tab com o mtodo Print, a superfcie de impresso dividida em colunas de largura fixa e uniformes. A largura de cada coluna uma mdia da largura de todos os caracteres em tamanho de pontos para a fonte escolhida. Contudo, no h correlao entre o nmero de caracteres impressos e o nmero de colunas de largura fixa que esses caracteres ocupam. Por exemplo, a letra maiscula W ocupa mais do que uma coluna de largura fixa e a letra minscula i ocupa menos.

Instruo Width #
Atribui uma largura de linha de sada a um arquivo aberto com a instruo Open. Sintaxe Width #nmerodoarquivo, largura A sintaxe da instruo Width # possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. largura Obrigatrio. Expresso numrica na faixa de 0 a 255, inclusive, que indica a quantidade de caracteres que aparece em uma linha antes que uma nova linha seja iniciada. Se a largura for igual a 0, no haver limite para o comprimento de uma linha. O valor padro para a largura 0.

Instruo Write #
Grava os dados em um arquivo seqencial. Sintaxe Write #nmerodoarquivo, [listadesada] A sintaxe da instruo Write # possui as partes a seguir: Parte Descrio nmerodoarquivo Obrigatrio. Qualquer nmero de arquivo vlido. Funes Internas

127

listadesada

Opcional. Uma ou mais expresses numricas delimitadas por vrgula ou expresses de seqncia de caracteres a serem gravadas em um arquivo.

Comentrios Os dados gravados com Write # so geralmente lidos a partir de um arquivo com Input #. Se voc omitir listadesada e incluir uma vrgula aps nmerodoarquivo, uma linha em branco impressa no arquivo. Vrias expresses podem ser separadas com um espao, um ponto-e-vrgula ou uma vrgula. Um espao possui o mesmo efeito que um ponto-e-vrgula. Quando Write # for utilizado para gravar dados em um arquivo, vrias hipteses universais so seguidas para que os dados possam sempre ser lidos e interpretados corretamente utilizando Input #, independente da localidade: Os dados numricos so sempre gravados utilizando o ponto como separador decimal. Para dados Boolean, #TRUE# ou #FALSE# impresso. As palavras-chave True e False no so traduzidas, independente da localidade. Os dados Date so gravados no arquivo utilizando o formato de data universal. Quando o componente de data ou hora estiver faltando, ou for igual a zero, somente a parte fornecida gravada no arquivo. Se os dados de listadesada forem Empty, nada ser gravado no arquivo. Contudo, para dados Null, #NULL# gravado. Se os dados de listadesada forem Null, #NULL# gravado no arquivo. Para os dados de Error, a sada aparece como #ERROR cdigodoerro#. A palavra-chave Error no traduzida, independente da localidade. Ao contrrio da instruo Print #, a instruo Write # insere vrgulas entre itens e aspas ao redor de seqncias de caracteres assim que so gravadas no arquivo. Voc no precisa colocar delimitadores explcitos na lista. Write # insere um caractere de linha nova, ou seja, um retorno de carroalimentao de linha (Chr(13) + Chr(10)), aps ter gravado o ltimo caractere de listadesada no arquivo. Exemplo da funo DDB Este exemplo utiliza a funo DDB para retornar a depreciao de um bem por um perodo especificado dado o custo inicial (CustoInicial), o valor do salvamento ao final da vida til do bem (ValorDoSalvamento), a vida total do bem em anos (Vidatil) e o perodo em anos para o qual a depreciao calculada (Depr). Dim Fmt, CustoInicial, ValorDoSalvamento, VidaMensal, Vidatil, AnoDep, Depr Const YRMOS = 12 ' Nmero de meses em um ano. Fmt = "###,##0.00" CustoInicial = InputBox("Qual o custo inicial do bem?") ValorDoSalvamento = InputBox("Insira o valor do bem ao fim da sua vida".) VidaMensal = InputBox("Qual a vida til do bem em meses?") Do While VidaMensal < YRMOS ' Certifique-se de que o perodo >= 1 ano. MsgBox "A vida do bem deve ser de um ano ou mais". VidaMensal = InputBox("Qual a vida til do bem em meses?") Loop Vidatil = VidaMensal / YRMOS ' Converte meses em anos. If Vidatil <> Int(VidaMensal / YRMOS) Then Vidatil = Int(Vidatil + 1) ' Arredonda para o ano mais prximo. End If AnoDep = CInt(InputBox("Insira o ano para o clculo da depreciao".)) Do While AnoDep < 1 Or AnoDep > Vidatil MsgBox "Voc deve inserir no mnimo 1 mas no mais de " & Vidatil AnoDep = InputBox("Insira o ano para o clculo da depreciao".) Loop Depr = DDB(CustoInicial, ValorDoSalvamento, Vidatil, AnoDep) MsgBox "A depreciao do ano " & AnoDep & " " & _ Format(Depr, Fmt) & "." Exemplo da funo FV Este exemplo utiliza a funo FV para retornar o valor futuro de um investimento dada a taxa percentual que se acumula por perodo (APR / 12), o nmero total de pagamentos (TotPgtos), o pagamento (Pagamento), o valor atual do investimento (ValP) e um nmero que indica se o pagamento feito no incio ou no fim do perodo de pagamento (TipoPag). Observe que, como Pagamento representa dinheiro pago, um nmero negativo. Dim Fmt, Pagamento, TPA, TotPgtos, TipoPag, ValP, ValF Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. Fmt = "###,###,##0.00" ' Define o formato monetrio. Pagamento = InputBox("Quanto voc pretende economizar por ms?") TPA = InputBox("Insira a taxa de percentagem anual de juros esperados.") If TPA > 1 Then TPA = TPA / 100 ' Certifica-se de que se trata do devido formulrio. TotPgtos = InputBox("Durante quantos meses espera fazer economia?") TipoPag = MsgBox("Voc faz os pagamentos no fim do ms?", vbYesNo) If TipoPag = vbNo Then TipoPag = PERODOINICIAL Else TipoPag = PERODOFINAL ValP = InputBox("Quanto h na conta de economias agora?") ValF = FV(TPA / 12, TotPgtos, -Pagamento, -ValP, TipoPag) MsgBox "Suas economias sero valiosos " & Format(ValF, Fmt) & "."

Funes Internas

128

Exemplo da funo IPmt Este exemplo utiliza a funo IPmt para calcular quanto de um pagamento juro quando todos os pagamentos so de igual valor. Fornecidos a taxa percentual dos juros por perodo (TPA / 12), o perodo de pagamento para o qual se deseja a parte dos juros (Perodo), o nmero total de pagamentos (TotPgtos), o valor presente ou principal do emprstimo (ValP), o valor futuro do emprstimo (ValF) e um nmero que indica se o pagamento vence no incio ou no final do perodo de pagamento (TipoPag). Dim ValF, Fmt, ValP, TPA, TotPgtos, TipoPag, Perodo, PgtoJuros, TotJuros, Msg Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. ValF = 0 ' Normalmente 0 para um emprstimo. Fmt = "###,###,##0.00" ' Define o formato monetrio. ValP = InputBox("Quanto voc quer pegar emprestado?") TPA = InputBox("Qual a taxa de percentagem anual do seu emprstimo?") If TPA > 1 Then TPA = TPA / 100 ' Certifica-se de que se trata do formulrio apropriado. TotPgtos = InputBox("Quantos pagamentos mensais?") TipoPag = MsgBox("Voc faz os pagamentos no fim do ms?", vbYesNo) If TipoPag = vbNo Then TipoPag = PERODOINICIAL Else TipoPag = PERODOFINAL For Perodo = 1 To TotPgtos ' Totaliza os juros. PgtoJuros = IPmt(TPA / 12, Perodo, TotPgtos, -ValP, ValF, TipoPag) TotJuros = TotJuros + PgtoJuros Next Perodo Msg = "Voc vai pagar um total de " & Format(TotJuros, Fmt) Msg = Msg & " em juros por este emprstimo." MsgBox Msg ' Exibe os resultados.

Funes Internas

129

Exemplo da funo IRR Neste exemplo, a funo IRR retorna a taxa interna de retorno para uma srie de 5 fluxos de caixa contidos na matriz Valores(). O primeiro elemento da matriz um fluxo de caixa negativo que representa os custos iniciais do negcio. Os 4 fluxos de caixa restantes representam fluxos de caixas positivos para os quatro anos subseqentes. Estimativa a taxa interna de retorno estimada. Dim Estimativa, Fmt, TaxaRet, Msg Static Valores(5) As Double ' Configura a matriz. Estimativa = .1 ' Inicia a estimativa em 10 por cento. Fmt = "#0.00" ' Define o formato da percentagem. Valores(0) = -70000 ' Custos iniciais do negcio. ' Fluxo de caixa positivo refletindo a receita por quatro anos sucessivos. Valores(1) = 22000: Valores(2) = 25000 Valores(3) = 28000: Valores(4) = 31000 TaxaRet = IRR(Valores(), Estimativa) * 100 ' Calcula a taxa interna. Msg = "A taxa interna de retorno para estes cinco fluxos de caixa " Msg = Msg & Format(TaxaRet, Fmt) & " por cento." MsgBox Msg ' Exibe a taxa interna de retorno. Exemplo da funo MIRR Este exemplo utiliza a funo MIRR para retornar a taxa interna de retorno modificada de uma srie de fluxos de caixa contidos na matriz Valores(). TPAEmprstimo representa os juros financeiros e TPAInv representa a taxa de juros recebida no reinvestimento. Dim TPAEmprstimo, TPAInv, Fmt, TaxaRet, Msg Static Valores(5) As Double ' Configura a matriz. TPAEmprstimo = .1 ' Taxa de emprstimo. TPAInv = .12 ' Taxa de reinvestimento. Fmt = "#0.00" ' Define o formato monetrio. Valores(0) = -70000 ' Custo inicial do negcio. ' Fluxo de caixa positivo refletindo a receita por quatro anos sucessivos. Valores(1) = 22000: Valores(2) = 25000 Valores(3) = 28000: Valores(4) = 31000 TaxaRet = MIRR(Valores(), TPAEmprstimo, TPAInv) ' Calcula a taxa interna. Msg = "A taxa interna de retorno modificada para estes cinco fluxos de caixa " Msg = Msg & Format(Abs(TaxaRet) * 100, Fmt) & "%." MsgBox Msg ' Exibe a taxa de retorno ' interna. Exemplo da funo NPer Este exemplo utiliza a funo NPer para retornar o nmero de perodos durante os quais os pagamentos devem ser feitos para liquidar um emprstimo cujo valor est contido em ValP. Tambm so fornecidos a taxa percentual de juros por perodo (TPA / 12), o pagamento (Pagamento), o valor futuro do emprstimo (ValF) e o nmero que indica se o pagamento vence no incio ou no final do perodo de pagamento (TipoPag). Dim ValF, ValP, TPA, Pagamento, TipoPag, TotPgtos Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. ValF = 0 ' Normalmente 0 para um emprstimo. ValP = InputBox("Quanto voc quer pegar emprestado?") TPA = InputBox("Qual a taxa de percentagem anual do seu emprstimo?") If TPA > 1 Then TPA = TPA / 100 ' Certifica-se de que se trata do formulrio apropriado. Pagamento = InputBox("Quanto voc deseja pagar por ms?") TipoPag = MsgBox("Voc faz os pagamentos no fim do ms?", vbYesNo) If TipoPag = vbNo Then TipoPag = PERODOINICIAL Else TipoPag = PERODOFINAL TotPgtos = NPer(TPA / 12, -Pagamento, ValP, ValF, TipoPag) If Int(TotPgtos) <> TotPgtos Then TotPgtos = Int(TotPgtos) + 1 MsgBox "Voc levar " & TotPgtos & " meses para liquidar o seu emprstimo." Exemplo da funo NPV Este exemplo utiliza a funo NPV para retornar o valor presente lquido de uma srie de fluxos de caixa contidos na matriz Valores(). TaxaRet representa a taxa interna fixa de retorno. Dim Fmt, Estimativa, TaxaRet, ValPLquido, Msg Static Valores(5) As Double ' Configura a matriz. Fmt = "###,##0.00" ' Define o formato monetrio. Estimativa = .1 ' Inicia a estimativa em 10 por cento. TaxaRet = .0625 ' Define a taxa interna fixa. Valores(0) = -70000 ' Custo inicial do negcio. ' Fluxos de caixa positivos refletindo a receita por quatro anos sucessivos. Valores(1) = 22000: Valores(2) = 25000 Valores(3) = 28000: Valores(4) = 31000 ValPLquido = NPV(TaxaRet, Valores()) ' Calcula o valor presente lquido. Funes Internas

130

Msg = "O valor presente lquido destes fluxos de caixa " Msg = Msg & Format(ValPLquido, Fmt) & "." MsgBox Msg ' Exibe o valor presente lquido. Exemplo da funo Pmt Este exemplo utiliza a funo Pmt para retornar o pagamento mensalmente de um emprstimo durante um perodo fixo. Fornecida a taxa percentual de juros por perodo (TPA / 12), o nmero total de pagamentos (TotPgtos), o valor presente ou principal do emprstimo (ValP), o valor futuro do emprstimo (ValF) e um nmero que indica se o pagamento vence no incio ou final do perodo de pagamento (TipoPag). Dim Fmt, ValF, ValP, TPA, TotPgtos, TipoPag, Pagamento Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. Fmt = "###,###,##0.00" ' Define o formato monetrio. ValF = 0 ' Normalmente 0 para um emprstimo. ValP = InputBox("Quanto voc quer pegar emprestado?") TPA = InputBox("Qual a taxa percentual anual do seu emprstimo?") If TPA > 1 Then TPA = TPA / 100 ' Certifica-se de que se trata do formulrio apropriado. TotPgtos = InputBox("Quantos pagamentos mensais voc vai fazer?") TipoPag = MsgBox("Voc faz os pagamentos no fim do ms?", vbYesNo) If TipoPag = vbNo Then TipoPag = PERODOINICIAL Else TipoPag = PERODOFINAL Pagamento = Pmt(TPA / 12, TotPgtos, -ValP, ValF, TipoPag) MsgBox "O seu pagamento ser " & Format(Pagamento, Fmt) & " por ms."

Funes Internas

131

Exemplo da funo PPmt Este exemplo utiliza a funo PPmt para calcular quanto de um pagamento por um perodo especfico principal quando todos os pagamentos so de igual valor. Fornecidos a taxa percentual de juros por perodo (TPA / 12), o perodo de pagamento para o qual se deseja a parte principal (Perodo), o nmero total de pagamentos (TotPgtos), o valor presente ou principal do emprstimo (ValP), o valor futuro do emprstimo (ValF) e um nmero que indica se o pagamento vence no incio ou no final do perodo de pagamento (TipoPag). Dim NL, TB, Fmt, ValF, ValP, TPA, TotPgtos, TipoPag, Pagamento, Msg, CriaGrfico, Perodo, P, I Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. NL = Chr(13) & Chr(10) ' Define a nova linha. TB = Chr(9) ' Define a tabulao. Fmt = "###,###,##0.00" ' Define o formato monetrio. ValF = 0 ' Normalmente 0 para um emprstimo. ValP = InputBox("Quanto voc quer pegar emprestado??") TPA = InputBox("Qual a taxa de percentagem anual do seu emprstimo?") If TPA > 1 Then TPA = TPA / 100 ' Certifica-se de que se trata do formulrio apropriado. TotPgtos = InputBox("Quantos pagamentos mensais voc precisa fazer?") TipoPag = MsgBox("Voc faz os pagamentos no fim do ms?", vbYesNo) If TipoPag = vbNo Then TipoPag = PERODOINICIAL Else TipoPag = PERODOFINAL Pagamento = Abs(-Pmt(TPA / 12, TotPgtos, ValP, ValF, TipoPag)) Msg = "O seu pagamento mensal " & Format(Pagamento, Fmt) & ". " Msg = Msg & "Voc gostaria de desdobrar o seu principal e Msg = Msg & "os juros por perodo?" CriaGrfico = MsgBox(Msg, vbYesNo) ' Veja se deseja um grfico. If CriaGrfico <> vbNo Then If TotPgtos > 12 Then MsgBox "Somente o primeiro ano ser mostrado." Msg = "Ms Pagamento Principal Juros" & NL For Perodo = 1 To TotPgtos If Perodo > 12 Then Exit For ' Mostra somente os primeiros 12. P = PPmt(TPA / 12, Perodo, TotPgtos, -ValP, ValF, TipoPag) P = (Int((P + .005) * 100) / 100) ' Arredonda o principal. I = Pagamento - P I = (Int((I + .005) * 100) / 100) ' Arredonda os juros Msg = Msg & Perodo & TB & Format(Pagamento, Fmt) Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL Next Perodo MsgBox Msg ' Exibe a tabela de amortizao. End If Exemplo da funo PV Neste exemplo, a funo PV retorna o valor presente de uma anuidade de $1.000.000 que fornecer $50.000 por ano nos prximos 20 anos. So fornecidos a taxa de percentagem anual esperada (TPA), o nmero total de pagamentos (TotPgtos), o valor de cada pagamento (SuaReceita), o valor total do investimento (ValF) e o nmero que indica se cada pagamento feito no incio ou no final do perodo de pagamento (TipoPag). Observe que SuaReceita um nmero negativo porque representa o dinheiro pago da anuidade a cada ano. Dim Fmt, TPA, TotPgtos, SuaReceita, ValF, TipoPag, ValP Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. Fmt = "###,##0.00" ' Define o formato monetrio. TPA = .0825 ' Taxa de percentagem anual. TotPgtos = 20 ' Nmero total de pagamentos. SuaReceita = 50000 ' Receita anual. ValF = 1000000 ' Valor futuro. TipoPag = PERODOINICIAL ' Pagamento no incio do ms. ValP = PV(TPA, TotPgtos, -SuaReceita, ValF, TipoPag) MsgBox "O valor presente " & Format(ValP, Fmt) & "." Exemplo da funo Rate Este exemplo utiliza a funo Rate para calcular a taxa de juros de um emprstimo, fornecidos o nmero total de pagamentos (TotPgtos), o valor de pagamento do emprstimo (Pagamento), o valor presente ou principal do emprstimo (ValP), o valor futuro do emprstimo (ValF), um nmero que indica se o pagamento vence no incio ou no final do perodo de pagamento (TipoPag) e uma estimativa da taxa de juros esperada (Estimativa). Dim Fmt, ValF, Estimativa, ValP, Pagamento, TotPgtos, TipoPag, TPA Const PERODOFINAL = 0, PERODOINICIAL = 1 ' Quando os pagamentos so feitos. Fmt = "##0.00"' Define o formato percentual. ValF = 0 ' Normalmente 0 para um emprstimo. Estimativa = .1 ' Estimativa de 10 por cento. ValP = InputBox("Quanto voc pegou emprestado?") Pagamento = InputBox("Qual o seu pagamento mensal?") TotPgtos = InputBox("Quantos pagamentos mensais voc precisa fazer?")

Funes Internas

132

TipoPag = MsgBox("Voc faz os pagamentos no fim do ms?", _ vbYesNo) If TipoPag = vbNo Then TipoPag = PERODOINICIAL Else TipoPag = PERODOFINAL TPA = (Rate(TotPgtos, -Pagamento, ValP, ValF, TipoPag, Estimativa) * 12) * 100 MsgBox "A sua taxa de juros " & Format(CInt(TPA), Fmt) & " por cento." Exemplo da funo SLN Este exemplo utiliza a funo SLN para retornar a depreciao linear de um bem por um nico perodo, fornecido o custo inicial do bem (CustoInicial), o valor do salvamento ao final da vida til do bem (ValorDoSalvamento) e a vida total do bem em anos (Vidatil). Dim Fmt, CustoInicial, ValorDoSalvamento, VidaMensal, Vidatil, DeprP Const ANOMESES = 12 ' Nmero de meses em um ano. Fmt = "###,##0.00" ' Define o formato monetrio. CustoInicial = InputBox("Qual o custo inicial do bem?") ValorDoSalvamento = InputBox("Qual o valor do bem ao fim da sua vida til?") VidaMensal = InputBox("Qual a vida til do bem em meses?") Do While VidaMensal < ANOMESES ' Certifica-se de que o perodo >= 1 ano. MsgBox "A vida do bem deve ser de um ano ou mais." VidaMensal = InputBox("Qual a vida til do bem em meses?") Loop Vidatil = VidaMensal / ANOMESES ' Converte meses em anos. If Vidatil <> Int(VidaMensal / ANOMESES) Then Vidatil = Int(Vidatil + 1) ' Arredonda para o ano mais prximo. End If DeprP = SLN(CustoInicial, ValorDoSalvamento, Vidatil) MsgBox "A depreciao " & Format(DeprP, Fmt) & " por ano."

Funes Internas

133

Exemplo da funo SYD Este exemplo utiliza a funo SYD para retornar a depreciao de um bem por um perodo especificado, fornecidos o custo inicial do bem (CustoInicial), o valor do salvamento ao fim da vida til do bem (ValorDoSalvamento) e a vida total do bem em anos (Vidatil). O perodo em anos pelo qual a depreciao calculada DeprP. Dim Fmt, CustoInicial, ValorDoSalvamento, VidaMensal, Vidatil, AnoDep, DeprP Const ANOMESES = 12 ' Nmero de meses em um ano. Fmt = "###,##0.00" ' Define o formato monetrio. CustoInicial = InputBox("Qual o custo inicial do bem?") ValorDoSalvamento = InputBox("Qual o valor do bem no fim da sua vida?") VidaMensal = InputBox("Qual a vida til do bem em meses?") Do While VidaMensal < ANOMESES ' Certifica-se de que o perodo >= 1 ano. MsgBox "A vida do bem deve ser de um ano ou mais." VidaMensal = InputBox("Qual a vida til do bem em meses?") Loop Vidatil = VidaMensal / ANOMESES ' Converte os meses em anos. If Vidatil <> Int(VidaMensal / ANOMESES) Then Vidatil = Int(Vidatil + 1) ' Arredonda para o anos mais prximo. End If AnoDep = CInt(InputBox("Para qual ano voc deseja a depreciao?")) Do While AnoDep < 1 Or AnoDep > Vidatil MsgBox "Voc deve inserir no mnimo 1 mas no mais de " & Vidatil AnoDep = CInt(InputBox("Para qual ano voc deseja a depreciao?")) Loop DeprP = SYD(CustoInicial, ValorDoSalvamento, Vidatil, AnoDep) MsgBox "A depreciao por ano " & AnoDep & " " & Format(DeprP, Fmt) & "."

Funo DDB
Retorna um Double que especifica a depreciao de um ativo para um perodo de tempo especfico utilizando o mtodo de balano de declinao dupla ou algum outro mtodo que voc especifique. Sintaxe DDB(cost, salvage, life, period[,factor]) A funo DDB possui estes argumentos nomeados: Parte Descrio cost Obrigatrio. Double que especifica o custo inicial do ativo. salvage Obrigatrio. Double que especifica o valor do ativo ao final de sua vida til. life Obrigatrio. Double que especifica a durao da vida til do ativo. period Obrigatrio. Double que especifica o perodo em que a depreciao do ativo calculada. factor Opcional. Variant que especifica a taxa na qual o balano declina. Se for omitido, supe-se 2 (mtodo de declinao dupla). Comentrios O mtodo de balano de declinao dupla calcula a depreciao a uma taxa acelerada. A depreciao mais alta no primeiro perodo e diminui nos perodos sucessivos. Os argumentos life e period devem ser expressos nas mesmas unidades. Por exemplo, se life for dado em meses, period tambm deve ser dado em meses. Todos os argumentos devem ser nmeros positivos. A funo DDB utiliza a seguinte frmula para calcular a depreciao para um dado perodo: Depreciao / period = ((cost salvage) * factor) / life

Funo FV
Retorna um Double que especifica o valor futuro de uma anuidade com base em pagamentos fixos peridicos e uma taxa de juros fixa. Sintaxe FV(rate, nper, pmt[, pv[, type]]) A funo FV tem os seguintes argumentos nomeados: Parte Descrio rate Obrigatrio. Double que especifica a taxa de juros por perodo. Por exemplo, se voc obtiver um financiamento para um carro com uma taxa de porcentagem anual (TPA) de 10 porcento e efetuar pagamentos mensais, a taxa por perodo ser de 0,1/12 ou 0,0083. nper Obrigatrio. Integer que especifica o nmero total de perodos de pagamento na anuidade. Por exemplo, se voc pagar prestaes mensais de um financiamento de quatro anos para um carro, seu emprstimo ter um total de 4 * 12 (ou 48) perodos de pagamento. pmt Obrigatrio. Double que especifica o pagamento a ser efetuado em cada Funes Internas

134

pv

type

perodo. Os pagamentos geralmente contm o principal e a taxa de juros que no se altera durante a durao da anuidade. Opcional. Variant que especifica o valor presente (ou quantia global) de uma srie de pagamentos futuros. Por exemplo, quando voc obtm um financiamento para comprar um carro, a quantia do emprstimo o valor presente para o emprestador dos pagamentos mensais do carro que voc efetuar. Se for omitido, ser assumido o valor 0. Opcional. Variant que especifica quando vencem os pagamentos. Use 0 se os pagamentos vencerem no final do perodo de pagamento ou 1 se os pagamentos vencerem no incio do perodo. Se for omitido, ser assumido o valor 0.

Comentrios Uma anuidade uma srie de pagamentos monetrios fixos efetuados durante um perodo de tempo. A anuidade pode um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Os argumentos rate e nper devem ser calculados usando-se perodos de pagamento expressos nas mesmas unidades. Por exemplo, se a rate for calculada usando meses, nper tambm deve ser calculado usando meses. Para todos os argumentos, a quantia paga (como depsitos em poupana) representada por valores negativos; a quantia recebida (como cheques de dividendos) representada por nmeros positivos.

Funes Internas

135

Funo IPmt
Retorna um Double que especifica o pagamento de juros em um dado perodo de uma anuidade com base em pagamentos fixos, peridicos e uma taxa de juros fixa. Sintaxe IPmt(rate, per, nper, pv[, fv[, type]]) A funo IPmt tem os seguintes argumentos nomeados: Parte Descrio rate Obrigatrio. Double que especifica a taxa de juros por perodo. Por exemplo, se voc obtiver um financiamento para um carro a uma taxa de porcentagem anual (TPA) de 10 porcento e fizer pagamentos mensais, a taxa por perodo ser de 0,1/12 ou 0,0083. per Obrigatrio. Double que especifica o perodo de pagamento no intervalo de 1 at nper. nper Obrigatrio. Double que especifica o nmero total de perodos de pagamento na anuidade. Por exemplo, se voc fizer pagamentos mensais por um financiamento de carro de quatro anos, seu emprstimo ter um total de 4 * 12 (ou 48) perodos de pagamento. pv Obrigatrio. Double que especifica o valor presente, ou valor de hoje, de uma srie de pagamentos ou recebimentos futuros. Por exemplo, quando voc obtm uma quantia emprestada para comprar um carro, essa quantia o valor presente para o emprestador dos pagamentos mensais do carro que voc efetuar. fv Opcional. Variant que especifica o valor futuro ou o saldo desejado aps ter efetuado o pagamento final. Por exemplo, o valor futuro de um emprstimo de R$ 0,00 porque esse o valor aps o pagamento final. Contudo, se voc quiser poupar R$ 50.000 em um perodo de 18 anos para garantir a educao de seu filho, ento o valor futuro R$ 50.000. Se for omitido, ser assumido 0. type Opcional. Variant que especifica quando vencero os pagamentos. Use 0 se os pagamentos vencerem no final do perodo, ou 1 se vencerem no incio do perodo. Se for omitido, ser assumido 0. Comentrios Uma anuidade uma srie de pagamentos monetrios fixos efetuados em um perodo. A anuidade pode ser um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Os argumentos rate e nper devem ser calculados usando-se perodos de pagamento expressos na mesma unidade. Por exemplo, se rate for calculada usando meses, nper tambm deve ser calculado usando meses. Para todos os argumentos, o valor monetrio pago (como depsitos em poupana) representado por nmeros negativos; o valor monetrio recebido (como cheques de dividendos) representado por nmeros positivos.

Funo IRR
Retorna um Double que especifica uma taxa interna de retorno para uma srie de fluxos de caixa peridicos (pagamentos e recebimentos). Sintaxe IRR(values()[, guess]) A funo IRR tem os seguintes argumentos nomeados: Parte Descrio values() Obrigatrio. Matriz de Double que especifica valores de fluxo de caixa. A matriz deve conter pelo menos um valor negativo (um pagamento) e um valor positivo (um recebimento). guess Opcional. Variant que especifica o valor por voc estimado que IRR retornar. Se for omitido, guess ser 0.1 (10 porcento). Comentrios A taxa de retorno interna a taxa de juros recebida para um investimento consistindo em pagamentos e recebimentos que ocorrem a intervalos regulares. A funo IRR utiliza a ordem dos valores dentro da matriz para interpretar a ordem de pagamentos e recebimentos. Certifique-se de inserir os valores dos seus pagamentos e recebimentos na seqncia correta. O fluxo de caixa de cada perodo no precisa ser fixo, como com a anuidade. IRR calculado por iterao. Comeando com o valor de guess, IRR calcula vrias vezes at que o resultado seja exato dentro de 0,00001 porcento. Se IRR no puder encontrar um resultado aps 20 tentativas, ele falhar.

Funo MIRR
Retorna um Double que especifica a taxa interna de retorno modificada de uma srie de fluxos de caixa peridicos (pagamentos e recebimentos). Sintaxe MIRR(values(), finance_rate, reinvest_rate) A funo MIRR tem os seguintes argumentos nomeados: Funes Internas

136

Parte values() finance_rate reinvest_rate

Descrio Obrigatrio. Matriz de Double que especifica os valores de fluxo de caixa. A matriz deve conter pelo menos um valor negativo (um pagamento) e um valor positivo (um recebimento). Obrigatrio. Double que especifica a taxa de juros paga como custo do financiamento. Obrigatrio. Double que especifica a taxa de juros recebida em ganhos do reinvestimento monetrio.

Comentrios A taxa interna de retorno modificada a taxa interna de retorno quando os pagamentos e recebimentos so financiados com taxas diferentes. A funo MIRR leva em conta o custo do investimento (finance_rate) e a taxa de juros recebida no reinvestimento do dinheiro (reinvest_rate). Os argumentos finance_rate e reinvest_rate so porcentagens expressas em valores decimais. Por exemplo, 12 porcento expresso como 0,12. A funo MIRR usa a ordem dos valores dentro da matriz para interpretar a ordem dos pagamentos e recebimentos. Certifique-se de inserir os valores dos seus pagamentos e recebimentos na seqncia correta.

Funes Internas

137

Funo NPer
Retorna um Double que especifica o nmero de perodos para uma anuidade com base em pagamentos fixos e peridicos e uma taxa de juros fixa. Sintaxe NPer(rate, pmt, pv [, fv [, type]]) A funo NPer tem os seguintes argumentos nomeados: Parte Descrio rate Obrigatrio. Double que especifica a taxa de juros por perodo. Por exemplo, se voc obtiver um financiamento para um carro a uma taxa de porcentagem anual (TPA) de 10 porcento e efetuar pagamentos mensais, a taxa por perodo ser de 0,1/12 ou 0,0083. pmt Obrigatrio. Double que especifica o pagamento a ser efetuado a cada perodo. Os pagamentos geralmente contm o principal e os juros que no se alteram durante a durao da anuidade. pv Obrigatrio. Double que especifica o valor presente, ou valor de hoje, de uma srie de pagamentos ou recebimentos futuros. Por exemplo, quando voc obtm um financiamento para comprar um carro, a quantia do emprstimo o valor presente para o emprestador dos pagamentos mensais do carro que voc efetuar. fv Opcional. Variant que especifica o valor futuro ou o saldo que voc deseja aps ter efetuado o pagamento final. Por exemplo, o valor futuro de um emprstimo de R$ 0,00 porque esse o valor aps o pagamento final. Contudo, se voc quiser poupar R$ 50.000 em 18 anos para garantir a educao de seu filho, ento R$ 50.000 ser o valor futuro. Se for omitido, ser assumido o valor 0. type Opcional. Variant que especifica o vencimento dos pagamentos. Use 0 se os pagamentos vencerem ao final do perodo de pagamento, ou 1 se vencerem no incio desse perodo. Se for omitido, ser assumido o valor 0. Comentrios Uma anuidade uma srie de pagamentos monetrios fixos efetuados em um perodo de tempo. A anuidade pode ser um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Para todos os argumentos, o valor pago (como depsitos em poupana) representado por nmeros negativos; o valor recebido (como cheques de dividendos) representado por nmeros positivos.

Funo NPV
Retorna um Double que especifica o valor presente lquido de um investimento com base em uma srie de fluxos de caixa peridicos (pagamentos e recebimentos) e a taxa de desconto. Sintaxe NPV(rate, values()) A funo NPV tem os seguintes argumentos nomeados: Parte Descrio rate Obrigatrio. Double que especifica a taxa de desconto em um perodo, expresso na forma de valor decimal. values() Obrigatrio. Matriz de Double que especifica os valores de fluxo de caixa. A matriz deve conter pelo menos um valor negativo (um pagamento) e um valor positivo (um recebimento). Comentrios O valor presente lquido de um investimento o valor atual de uma futura srie de pagamentos ou recebimentos. A funo NPV usa a ordem dos valores dentro da matriz para interpretar a ordem dos pagamentos ou recebimentos. Certifique-se de fornecer os valores de seu pagamento e recebimento na seqncia correta. O investimento NPV comea um perodo antes da data do primeiro valor de fluxo de caixa e termina com o ltimo valor de fluxo de caixa da matriz. O clculo do valor presente lquido baseado nos fluxos de caixa futuros. Se o seu primeiro fluxo de caixa ocorrer no incio do primeiro perodo, o primeiro valor dever ser adicionado ao valor retornado por NPV e no deve ser includo nos valores de fluxo de caixa values(). A funo NPV semelhante funo PV (valor presente) exceto que a funo PV permite que os fluxos de caixa comecem no final ou no incio do perodo. Ao contrrio dos valores varveis de fluxo de caixa NPV, os fluxos de caixa PV devem ser fixos durante o investimento.

Funo Pmt
Retorna um Double que especifica o pagamento de uma anuidade com base em pagamentos fixos, peridicos e uma taxa de juros fixa. Sintaxe Pmt(rate, nper, pv [, fv [, type]]) A funo Pmt tem os seguintes argumentos nomeados: Parte Descrio

Funes Internas

138

rate

nper

pv

fv

type

Obrigatrio. Double que especifica a taxa de juros por perodo. Por exemplo, se voc obtiver um financiamento para um carro a uma taxa percentual anual (TPA) de 10 porcento e efetuar pagamentos mensais, a taxa do perodo ser de 0,1/12, ou 0,0083. Obrigatrio. Integer que especifica o nmero total de perodos de pagamento na anuidade. Por exemplo, se voc efetuar pagamentos mensais sobre um financiamento de quatro anos para um carro, seu financiamento ter um total de 4 * 12 (ou 48) perodos de pagamento. Obrigatrio. Double que especifica o valor presente (ou a quantia global) que uma srie de pagamentos a serem feitos no futuro valem agora. Por exemplo, quando voc obtm um financiamento para comprar um carro, a quantia do financiamento o valor presente para o emprestador dos pagamentos mensais do carro que voc efetuar. Opcional. Variant que especifica o valor futuro ou o saldo desejado aps ter efetuado o pagamento final. Por exemplo, o valor futuro de um emprstimo de R$ 0,00 porque esse seu valor aps o pagamento final. Contudo, se voc quiser poupar R$ 50.000 em um perodo de 18 anos para garantir a educao de seu filho, ento R$ 50.000 ser o valor futuro. Se for omitido, ser assumido o valor 0. Opcional. Variant que especifica o vencimento dos pagamentos. Use 0 se os pagamentos vencerem ao final do perodo de pagamento, ou 1 se vencerem no incio do perodo. Se for omitido, ser assumido o valor 0.

Comentrios Uma anuidade uma srie de pagamentos fixos a serem efetuados em um perodo. A anuidade pode ser um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Os argumentos rate e nper devem ser calculados usado-se perodos de pagamento expressos nas mesmas unidades. Por exemplo, se rate for calculada usando meses, nper tambm deve ser calculado usando meses. Para todos os argumentos, o valor pago (como depsitos em uma poupana) representado por nmeros negativos; o valor recebido (como cheques de dividendos) representado por nmeros positivos.

Funo PPmt
Retorna um Double que especifica o pagamento principal por um dado perodo de uma anuidade com base em pagamentos fixos e uma taxa de juros fixa. Sintaxe PPmt(rate, per, nper, pv [, fv [, type]]) A funo PPmt tem os seguintes argumentos nomeados: Parte Descrio rate Obrigatrio. Double que especifica a taxa de juros por perodo. Por exemplo, se voc obtiver um financiamento para um carro a uma taxa de porcentagem anual (TPA) de 10 porcento e efetuar pagamentos mensais, a taxa por perodo ser de 0,1/12, ou 0,0083. per Obrigatrio. Integer que especifica o perodo de pagamento no intervalo de 1 at nper. nper Obrigatrio. Integer que especifica o nmero total de perodos de pagamento na anuidade. Por exemplo, se voc efetuar pagamentos mensais sobre um financiamento de quatro anos para um carro, seu emprstimo ter um total de 4 * 12 (ou 48) perodos de pagamento. pv Obrigatrio. Double que especifica o valor presente, ou valor de hoje, de uma srie de pagamentos ou recebimentos futuros. Por exemplo, quando voc obtm um financiamento para comprar um carro, a quantia do financiamento o valor presente para o emprestador dos pagamentos mensais do carro que voc efetuar. fv Opcional. Variant que especifica o valor futuro ou o saldo do valor monetrio desejado aps ter efetuado o pagamento final. Por exemplo, o valor futuro de um emprstimo de R$ 0,00 porque esse o valor aps o pagamento final. Contudo, se voc quiser poupar R$ 50.000 em 18 anos para garantir a educao de seu filho, ento R$ 50.000 ser o valor futuro. Se for omitido, ser assumido o valor 0. type Opcional. Variant que especifica o vencimento dos pagamentos. Use 0 se os pagamentos vencerem no final do perodo de pagamento, ou 1 se vencerem no incio desse perodo. Se for omitido, ser assumido o valor 0. Comentrios Uma anuidade uma srie de pagamentos fixos efetuados em um perodo. Ela pode ser um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Os argumentos rate e nper devem ser calculados usando-se perodos de pagamento expressos nas mesmas unidades. Por exemplo, se a rate for calculada usando meses, nper deve tambm ser calculado usando meses. Para todos os argumentos, o valor pago (como depsitos em poupana) representado por nmeros negativos; o valor recebido (como cheque de dividendo) representado por nmeros positivos. Funes Internas

139

Funo PV
Retorna um Double que especifica o valor presente de uma anuidade com base em pagamentos fixos peridicos a serem pagos no futuro e taxas de juros fixas. Sintaxe PV(rate, nper, pmt[, fv[, type]]) A funo PV tem os seguintes argumentos nomeados: Parte Descrio rate Obrigatrio. Double que especifica a taxa de juros por perodo. Por exemplo, se voc obtiver um financiamento para um carro a uma taxa de porcentagem anual (TPA) de 10 porcento e efetuar pagamentos anuais, a taxa por perodo de 0,1/12 ou 0,0083. nper Obrigatrio. Integer que especifica o nmero total de perodos de pagamento da anuidade. Por exemplo, se voc efetuar pagamentos mensais sobre um financiamento de quatro anos para um carro, seu emprstimo ter um total de 4 * 12 (ou 48) perodos de pagamento. pmt Obrigatrio. Double que especifica o pagamento a ser efetuado a cada perodo. Os pagamentos normalmente contm o principal e os juros que no se alteram durante o perodo de durao da anuidade. fv Opcional. Variant que especifica o valor futuro ou o saldo do valor monetrio desejado aps ter efetuado o pagamento final. Por exemplo, o valor futuro de um emprstimo de R$ 0,00 porque esse o valor aps o pagamento final. Contudo, se voc quiser poupar R$ 50.000 em 18 anos para garantir a educao de seu filho, ento R$ 50.000 ser o valor futuro. Se for omitido, ser assumido o valor 0. type Opcional. Variant que especifica o vencimento dos pagamentos. Use 0 se os pagamentos vencerem ao final do perodo de pagamento, ou 1 se vencerem no incio desse perodo. Se for omitido, ser assumido o valor 0. Comentrios Uma anuidade uma srie de pagamentos monetrios fixos efetuados em um perodo de tempo. A anuidade pode ser um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Os argumentos rate e nper devem ser calculados usando-se perodos de pagamento expressos nas mesmas unidades. Por exemplo, se a rate for calculada usando meses, nper tambm deve ser calculado usando meses. Para todos os argumentos, o valor pago (como depsitos em poupana) representado por nmeros negativos; o valor recebido (como cheques de dividendos) representado por nmeros positivos.

Funes Internas

140

Funo Rate
Retorna um Double que especifica a taxa de juros por perodo da anuidade. Sintaxe Rate(nper, pmt, pv [, fv[, type[, guess]]]) A funo Rate tem os seguintes argumentos nomeados: Parte Descrio nper Obrigatrio. Double que especifica o nmero total de perodos de pagamento da anuidade. Por exemplo, se voc efetuar pagamentos mensais sobre um financiamento de quatro anos para um carro, seu financiamento possuir um total de 4 * 12 (ou 48) perodos de pagamento. pmt Obrigatrio. Double que especifica o pagamento a ser efetuado a cada perodo. Os pagamentos geralmente contm o principal e os juros que no se alteram durante a durao da anuidade. pv Obrigatrio. Double que especifica o valor presente, ou o valor de hoje, de uma srie de pagamentos ou recebimentos futuros. Por exemplo, quando voc obtiver um financiamento para comprar um carro, a quantia do financiamento o valor presente para o emprestador dos pagamentos mensais do carro que voc efetuar. fv Opcional. Variant que especifica o valor futuro ou o saldo desejado aps ter efetuado o pagamento final. Por exemplo, o valor futuro de um emprstimo de R$ 0,00 porque esse o valor aps o pagamento final. Contudo, se voc quiser poupar R$ 50.000 em 18 anos para garantir a educao de seu filho, ento R$ 50.000 ser o valor futuro. Se for omitido, ser assumido o valor 0. type Opcional. Variant que especifica um nmero indicando o vencimento dos pagamentos. Use 0 se os pagamentos vencerem ao final do perodo de pagamento, ou 1 se vencerem no incio desse perodo. Se for omitido, ser assumido o valor 0. guess Opcional. Variant que especifica o valor por voc estimado que ser retornado por Rate. Se for omitido, guess ter o valor de 0,1 (10 porcento). Comentrios Uma anuidade uma srie de pagamentos monetrios fixos efetuados em um perodo de tempo. A anuidade pode ser um emprstimo (como um financiamento imobilirio) ou um investimento (como uma poupana mensal). Para todos os argumentos, o valor pago (como depsitos em poupana) representado por nmeros negativos; o valor recebido (como cheques de dividendos) representado por nmeros positivos. Rate calculado por iterao. Comeando com o valor guess, Rate calcula vrias vezes at que o resultado seja exato dentro de 0,00001 porcento. Se Rate no puder encontrar um resultado aps 20 tentativas, ele falhar. Se sua estimativa for de 10 porcento e Rate falhar, tente um valor diferente para guess.

Funes Internas

141

Funo SLN
Retorna um Double que especifica uma depreciao em linha reta de um ativo para um perodo nico. Sintaxe SLN(cost, salvage, life) A funo SLN tem os seguintes argumentos nomeados: Parte Descrio cost Obrigatrio. Double que especifica o custo inicial do ativo. salvage Obrigatrio. Double que especifica o valor do ativo ao final de sua vida til. life Obrigatrio. Double que especifica a durao da vida til do ativo. Comentrios O perodo de depreciao deve ser expresso na mesma unidade que o argumento life. Todos os argumentos devem ser nmeros positivos.

Funo SYD
Retorna um Double que especifica a depreciao dos dgitos da soma dos anos de um ativo para um perodo especificado. Sintaxe SYD(cost, salvage, life, period) A funo SYD tem os seguintes argumentos nomeados: Parte Descrio cost Obrigatrio. Double que especifica o custo inicial do ativo. salvage Obrigatrio. Double que especifica o valor do ativo ao final de sua vida til. life Obrigatrio. Double que especifica a durao da vida til do ativo. period Obrigatrio. Double que especifica o perodo no qual a depreciao do ativo calculada. Comentrios Os argumentos life e period devem ser expressos nas mesmas unidades. Por exemplo, se life for dado em meses, period tambm deve ser dado em meses. Todos os argumentos devem ser nmeros positivos.

Funes Internas

142

Exemplo da funo IsArray Este exemplo utiliza a funo IsArray para verificar se uma varivel uma matriz. Dim MinhaMatriz(1 To 5) As Integer, SuaMatriz, MeuControle ' Declara as variveis de matriz. SuaMatriz = Array(1, 2, 3) ' Utiliza a funo Array. MeuControle = IsArray(MinhaMatriz) ' Retorna True. MeuControle = IsArray(SuaMatriz) ' Retorna True. Exemplo da funo IsDate Este exemplo utiliza a funo IsDate para determinar se uma expresso pode ser convertida em uma data. Dim MinhaData, SuaData, SemData, MeuControle MinhaData = "12 de Fevereiro de 1969": SuaData = #2/12/69#: SemData = "Al" MeuControle = IsDate(MinhaData) ' Retorna True. MeuControle = IsDate(SuaData) ' Retorna True. MeuControle = IsDate(SemData) ' Retorna False. Exemplo da funo IsEmpty Este exemplo utiliza a funo IsEmpty para determinar se uma varivel foi inicializada. Dim MinhaVar, MeuControle MeuControle = IsEmpty(MinhaVar) ' Retorna True. MinhaVar = Null ' Atribui Null. MeuControle = IsEmpty(MinhaVar) MinhaVar = Empty ' Atribui Empty. MeuControle = IsEmpty(MinhaVar) Exemplo da funo IsError Este exemplo utiliza a funo IsError para verificar se uma expresso numrica um valor de erro. A funo CVErr utilizada para retornar uma Error Variant de uma funo definida pelo usurio. Suponha que FunoDoUsurio um procedimento de funo definido pelo usurio que retorna um valor de erro; por exemplo, um valor de retorno atribudo com a instruo FunoDoUsurio = CVErr(32767), onde 32767 um nmero definido pelo usurio. Dim ValorDeRetorno, MeuControle ValorDeRetorno = FunoDoUsurio() MeuControle = IsError(ValorDeRetorno) ' Retorna True. ' Retorna False. ' Retorna True.

Funes Internas

143

Exemplo da funo IsMissing Este exemplo utiliza a funo IsMissing para verificar se um argumento opcional foi passado a um procedimento definido pelo usurio. Observe que os argumentos Optional agora podem ter valores e tipos padro diferentes de Variant. Dim ValorDeRetorno ' As instrues a seguir chamam o procedimento de funo definido pelo usurio. ValorDeRetorno = RetornaDobrado() ' Retorna Null. ValorDeRetorno = RetornaDobrado(2) ' Retorna 4. ' Definio do procedimento de funo. Function RetornaDobrado(Optional A) If IsMissing(A) Then ' Se o argumento estiver ausente, retorna um Null. RetornaDobrado = Null Else ' Se o argumento estiver presente, retorna duas vezes o valor. RetornaDobrado = A * 2 End If End Function Exemplo da funo IsNull Este exemplo utiliza a funo IsNull para determinar se uma varivel contm um Null. Dim MinhaVar, MeuControle MeuControle = IsNull(MinhaVar) ' Retorna False. MinhaVar = "" MeuControle = IsNull(MinhaVar) ' Retorna False. MinhaVar = Null MeuControle = IsNull(MinhaVar) ' Retorna True. Exemplo da funo IsNumeric Este exemplo utiliza a funo IsNumeric para determinar se uma varivel pode ser avaliada como um nmero. Dim MinhaVar, MeuControle MinhaVar = "53" ' Atribui o valor. MeuControle = IsNumeric(MinhaVar) ' Retorna True. MinhaVar = "459,95" ' Atribui o valor. MeuControle = IsNumeric(MinhaVar) ' Retorna True. MinhaVar = "Ajuda 45" ' Atribui o valor. MeuControle = IsNumeric(MinhaVar) ' Retorna False.

Funes Internas

144

Exemplo da funo IsObject Este exemplo utiliza a funo IsObject para determinar se um identificador representa uma varivel de objeto. MeuObjeto and SeuObjeto so variveis de objeto do mesmo tipo. So nomes genricos utilizados somente com fins ilustrativos. Dim MeuInt As Integer, SeuObjeto, MeuControle ' Declara as variveis. Dim MeuObjeto As Object Set SeuObjeto = MeuObjeto ' Atribui uma referncia a objeto. MeuControle = IsObject(SeuObjeto) ' Retorna True. MeuControle = IsObject(MeuInt) ' Retorna False. Exemplo da funo TypeName Este exemplo utiliza a funo TypeName para retornar informaes sobre uma varivel. ' Declara as variveis. Dim VarNula, MeuTipo, VarSeq As String, VarInt As Integer, VarAtual As Currency Dim VarMatriz (1 To 5) As Integer VarNula = Null ' Atribui o valor Null. MeuTipo = TypeName(VarSeq) ' Retorna "String". MeuTipo = TypeName(VarInt) ' Retorna "Integer". MeuTipo = TypeName(VarAtual) ' Retorna "Currency". MeuTipo = TypeName(VarNula) ' Retorna "Null". MeuTipo = TypeName(VarMatriz) ' Retorna "Integer()". Exemplo da funo VarType Este exemplo utiliza a funo VarType para determinar o subtipo de uma varivel. Dim VarInt, VarSeq, VarData, MeuControle ' Inicializa as variveis. VarInt = 459: VarSeq = "Al Mundo": VarData = #2/12/69# MeuControle = VarType(VarInt) ' Retorna 2. MeuControle = VarType(VarData) ' Retorna 7. MeuControle = VarType(VarSeq)' Retorna 8.

Funo IsArray
Retorna um valor Boolean que indica se uma varivel uma matriz. Sintaxe IsArray(nomedavar) O argumento obrigatrio nomedavar um identificador que especifica uma varivel. Comentrios IsArray retornar True se a varivel for uma matriz; caso contrrio, retornar False. IsArray especialmente til com variantes que contm matrizes.

Funes Internas

145

Funo IsDate
Retorna um valor Boolean que indica se uma expresso pode ser convertida em uma data. Sintaxe IsDate(expresso) O argumento obrigatrio expresso um Variant que contm uma expresso de data ou expresso de seqncia que pode ser reconhecida como uma data ou hora. Comentrios IsDate retornar True se a expresso for uma data ou puder ser convertida em uma data vlida; caso contrrio, retornar False. No Microsoft Windows, o intervalo de datas vlidas 1 de janeiro de 100 A.D. a 31 de dezembro de 9999 A.D. Os intervalos podem variar de um sistema operacional para outro.

Funo IsEmpty
Retorna um valor Boolean que indica se uma varivel foi inicializada. Sintaxe IsEmpty(expresso) O argumento obrigatrio expresso um Variant que contm uma expresso numrica ou expresso de seqncia. Entretanto, por ser IsEmpty utilizado para determinar se variveis individuais so inicializadas, o argumento expresso geralmente um nome de varivel nica. Comentrios IsEmpty retornar True se a varivel no tiver sido inicializada ou se tiver sido explicitamente definida como Empty; caso contrrio, retornar False. Se expresso contiver mais de uma varivel, False sempre ser retornado. IsEmpty retorna somente informaes significativas para variantes.

Funo IsError
Retorna um valor Boolean que indica se uma expresso um valor de erro. Sintaxe IsError(expresso) O argumento obrigatrio expresso deve ser uma Variant do tipo VarType vbError. Comentrios Os valores de erro so criados pela converso de nmeros reais em valores de erro utilizando a funo CVErr. A funo IsError utilizada para determinar se uma expresso numrica representa um erro. IsError retornar True se o argumento expresso indicar um erro. Caso contrrio, retornar False. IsError retorna somente informaes significativas para variantes de VarType vbError.

Funes Internas

146

Funo IsMissing
Retorna um valor Boolean que indica se um argumento Variant opcional foi passado para um procedimento. Sintaxe IsMissing(nomedoarg) O argumento obrigatrio nomedoarg contm o nome de um argumento de procedimento Variant opcional. Comentrios Utilize a funo IsMissing para detectar se argumentos Variant opcionais foram fornecidos ou no na chamada de um procedimento. IsMissing retornar True se nenhum valor tiver sido passado para o argumento especificado. Caso contrrio, retornar False. Se IsMissing retornar True para um argumento, a utilizao do argumento ausente em outro cdigo pode gerar um erro definido pelo usurio. Se IsMissing for utilizado em um argumento ParamArray, ele sempre retornar False. Para detectar um ParamArray vazio, faa um teste para ver se o limite superior da matriz menor que seu limite inferior.

Funo IsNull
Retorna um valor Boolean que indica se uma expresso contm dados que no so vlidos (Null). Sintaxe IsNull(expresso) O argumento obrigatrio expresso um Variant que contm uma expresso numrica ou expresso de seqncia. Comentrios IsNull retornar True se expresso for Null; caso contrrio, IsNull retornar False. Se expresso consistir em mais de uma varivel, Null em qualquer varivel constituinte far com que True seja retornado para a expresso inteira. O valor Null indica que Variant contm dados que no so vlidos. Null no igual a Empty, o que indica que uma varivel ainda no foi inicializada. Ele tambm no igual a uma seqncia de comprimento zero (""), que, algumas vezes, referida como seqncia nula. Importante Utilize a funo IsNull para determinar se uma expresso contm um valor Null. Expresses que voc esperaria serem avaliadas como True em algumas circunstncias, como If Var = Null and If Var <> Null, so sempre False. Isto acontece porque qualquer expresso que contenha um Null por si mesma Null e, portanto, False.

Funo IsNumeric
Retorna um valor Boolean que indica se uma expresso pode ser avaliada como um nmero. Sintaxe IsNumeric(expresso) O argumento obrigatrio expresso um Variant que contm uma expresso numrica ou expresso de seqncia. Comentrios IsNumeric retornar True se a expresso inteira for reconhecida como um nmero; caso contrrio, retornar False. IsNumeric retornar False se expresso for uma expresso de data.

Funo IsObject
Retorna um valor Boolean que indica se um identificador representa uma varivel de objeto. Sintaxe IsObject(identificador) O argumento obrigatrio identificador um nome de varivel. Comentrios IsObject til somente para determinar se um Variant do VarType vbObject. Isto poderia ocorrer se Variant realmente se referisse (ou se j se referiu) a um objeto ou se contiver Nothing. IsObject retornar True se identificador for uma varivel declarada com o tipo Object ou qualquer tipo de classe vlido, ou se identificador for um Variant de VarType vbObject, ou um objeto definido pelo usurio; caso contrrio, retornar False. IsObject retornar True mesmo que a varivel tenha sido definida como Nothing. Utilize a interceptao de erro para se certificar de que a referncia a um objeto vlida.

Funo TypeName
Retorna uma String que fornece informaes sobre uma varivel. Sintaxe TypeName(nomedavar) O argumento obrigatrio nomedavar uma Variant que contm qualquer varivel, exceto a de tipo definido pelo usurio. Comentrios A seqncia de caracteres retornada por TypeName pode ser qualquer uma das seguintes: Seqncia deVarivel caracteres retornada tipo de objeto Um objeto cujo tipo tipodeobjeto Byte Valor em bytes Integer Nmero inteiro Long Inteiro longo Single Nmero de vrgula flutuante de preciso simples Funes Internas

147

Double Currency Decimal Date String Boolean Error Empty Null Object Desconhecido Nothing

Nmero de vrgula flutuante de preciso dupla Valor de moeda Valor decimal Valor de data Seqncia de caracteres Valor booleano Um valor de erro No-inicializada Dados no-vlidos Um objeto Um objeto cujo tipo desconhecido Varivel de objeto que no se refere a um objeto

Se nomedavar for uma matriz, a seqncia de caracteres retornada pode ser qualquer uma das seqncias retornadas possveis (ou Variant) com parnteses vazios anexados. Por exemplo, se nomedavar for uma matriz de nmeros inteiros, TypeName retornar "Integer()".

Funo VarType
Retorna um Integer que indica o subtipo de uma varivel. Sintaxe VarType(nomedavar) O argumento obrigatrio nomedavar um Variant que contm qualquer varivel, exceto uma do tipo definido pelo usurio. Valores de retorno Constante Valor Descrio vbEmpty 0 Empty (no-inicializada) vbNull 1 Null (dados no-vlidos) vbInteger 2 Nmero inteiro vbLong 3 Inteiro longo vbSingle 4 Nmero de vrgula flutuante de preciso simples vbDouble 5 Nmero de vrgula flutuante de preciso dupla vbCurrency 6 Valor de moeda vbDate 7 Valor da data vbString 8 Seqncia de caracteres vbObject 9 Objeto vbError 10 Valor do erro vbBoolean 11 Valor booleano vbVariant 12 Variant (utilizada somente com matrizes de variantes) vbDataObject 13 Um objeto de acesso de dados vbDecimal 14 Valor decimal vbByte 17 Valor em bytes vbArray 8192 Matriz Observao Estas constantes so especificadas pelo Visual Basic para Aplicativos. Os nomes podem ser utilizados em qualquer parte do seu cdigo no lugar dos valores reais. Comentrios A funo VarType nunca retorna o valor de vbArray por si mesma. Ele sempre adicionado a algum outro valor para indicar uma matriz de um tipo especfico. A constante vbVariant somente retornada em conjunto com vbArray para indicar que o argumento para a funo VarType uma matriz do tipo Variant. Por exemplo, o valor retornado para uma matriz de nmeros inteiros calculado como vbInteger + vbArray ou 8194. Se um objeto possui uma propriedade padro, VarType (objeto) retorna o tipo da propriedade padro do objeto.

Funes Internas

148

Empty
A palavra-chave Empty utilizada como um subtipo de Variant. Ela indica um valor de varivel no inicializada.

False
A palavra-chave False tem valor igual a 0.

Me
A palavra-chave Me comporta-se como uma varivel declarada implicitamente. Ela automaticamente disponvel para cada procedimento em um mdulo de classe. Quando uma classe pode ter mais de uma instncia, Me proporciona uma forma de referir a instncia especfica da classe onde o cdigo est sendo executado. O uso de Me particularmente til para passar informaes sobre a instncia de uma classe que est sendo atualmente executada para um procedimento em um outro mdulo. Por exemplo, suponha que voc possua o seguinte procedimento em um mdulo: Sub AlterarCorForm(NomeForm As Form) NomeForm.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub Voc pode chamar esse procedimento e passar a instncia atual da classe do Formulrio como um argumento utilizando a seguinte instruo: AlterarCorForm Me

Nothing
A palavra-chave Nothing utilizada para desassociar uma varivel de objeto de um objeto real. Use a instruo Set para atribuir Nothing a uma varivel de objeto. Por exemplo: Set MeuObjeto = Nothing Diversas variveis de objeto podem se referir ao mesmo objeto real. Quando Nothing atribudo a uma varivel de objeto, essa varivel no far mais referncia ao objeto real. Quando vrias variveis de objeto se referirem ao mesmo objeto, os recursos de memria e sistema associados ao objeto ao qual as variveis se referem so liberados somente aps todos eles terem sido definidos como Nothing, usando Set de forma explcita ou implcita aps a ltima varivel de objeto definida como Nothing sair do escopo.

Null
A palavra-chave Null utilizada como um subtipo de Variant. Ela indica que uma varivel no contm dados vlidos.

True
A palavra-chave True tem valor igual a -1. Exemplo da funo Abs Este exemplo utiliza a funo Abs para computar o valor absoluto de um nmero. Dim MeuNmero MeuNmero = Abs(50.3) ' Retorna 50.3. MeuNmero = Abs(-50.3) ' Retorna 50.3.

Funes Internas

149

Exemplo da funo Atn Este exemplo utiliza a funo Atn para calcular o valor de pi. Dim pi pi = 4 * Atn(1) ' Calcula o valor de pi. Exemplo da funo Cos Este exemplo utiliza a funo Cos para retornar o co-seno de um ngulo. Dim Meungulo, MinhaSecante Meungulo = 1.3 ' Define o ngulo em radianos. MinhaSecante = 1 / Cos(Meungulo) ' Calcula a secante. Exemplo da funo Exp Este exemplo utiliza a funo Exp para retornar e elevado a uma potncia. Dim Meungulo, MeuSenoH ' Define o ngulo em radianos. Meungulo = 1.3 ' Calcula o seno hiperblico. MeuSenoH = (Exp(Meungulo) - Exp(-1 * Meungulo)) / 2 Exemplo da funo Int e da funo Fix Este exemplo ilustra como as funes Int e Fix retornam pores inteiras de nmeros. No caso de um argumento de nmero negativo, a funo Int retorna o primeiro inteiro negativo menor que ou igual ao nmero; a funo Fix retorna o primeiro inteiro negativo maior que ou igual ao nmero. Dim MeuNmero MeuNmero = Int(99.8) ' Retorna 99. MeuNmero = Fix(99.2) ' Retorna 99. MeuNmero = Int(-99.8) MeuNmero = Fix(-99.8) MeuNmero = Int(-99.2) MeuNmero = Fix(-99.2) Exemplo da funo Log Este exemplo utiliza a funo Log para retornar o logaritmo natural de um nmero. Dim Meungulo, MeuLog ' Define o ngulo em radianos. Meungulo = 1.3 ' Calcula o seno hiperblico inverso. MeuLog = Log(Meungulo + Sqr(Meungulo * Meungulo + 1)) ' Retorna -100. ' Retorna -99. ' Retorna -100. ' Retorna -99.

Funes Internas

150

Exemplo da instruo Randomize Este exemplo utiliza a instruo Randomize para inicializar o gerador de nmeros aleatrios. Como o argumento de nmero foi omitido, Randomize utiliza o valor de retorno da funo Timer como o novo valor semente. Dim MeuValor Randomize ' Inicializa o gerador de nmeros aleatrios. MeuValor = Int((6 * Rnd) + 1) Exemplo da funo Rnd Este exemplo utiliza a funo Rnd para gerar um valor inteiro aleatrio de 1 a 6. Dim MeuValor MeuValor = Int((6 * Rnd) + 1) ' Gera um valor aleatrio entre 1 e 6. Exemplo da funo Sgn Este exemplo utiliza a funo Sgn para determinar o sinal de um nmero. Dim MinhaVar1, MinhaVar2, MinhaVar3, MeuSinal MinhaVar1 = 12: MinhaVar2 = -2.4: MinhaVar3 = 0 MeuSinal = Sgn(MinhaVar1) ' Retorna 1. MeuSinal = Sgn(MinhaVar2) ' Retorna -1. MeuSinal = Sgn(MinhaVar3) ' Retorna 0. Exemplo da funo Sin Este exemplo utiliza a funo Sin para retornar o seno de um ngulo. Dim Meungulo, MinhaCossecante Meungulo = 1.3 ' Define o ngulo em radianos. MinhaCossecante = 1 / Sin(Meungulo) ' Calcula a cossecante. Exemplo da funo Sqr Este exemplo utiliza a funo Sqr para calcular a raiz quadrada de um nmero. Dim MinhaRaizQuad MinhaRaizQuad = Sqr(4) ' Retorna 2. MinhaRaizQuad = Sqr(23) ' Retorna 4.79583152331272. MinhaRaizQuad = Sqr(0) ' Retorna 0. MinhaRaizQuad = Sqr(-4) ' Gera um erro em tempo de execuo. Exemplo da funo Tan Este exemplo utiliza a funo Tan para retornar a tangente de um ngulo. Dim Meungulo, MinhaCotangente Meungulo = 1.3 ' Define o ngulo em radianos. MinhaCotangente = 1 / Tan(Meungulo) ' Calcula a cotangente. ' Gera um valor aleatrio entre 1 e 6.

Funes Internas

151

Funes matemticas Funo Abs


Retorna um valor do mesmo tipo que passado para ele especificando o valor absoluto de um nmero. Sintaxe Abs(nmero) O argumento obrigatrio nmero pode ser qualquer expresso numrica vlida. Se nmero contiver Null, ser retornado Null; se for uma varivel no inicializada, ser retornado zero. Comentrios O valor absoluto de um nmero sua magnitude sem sinal. Por exemplo, tanto ABS(-1) como ABS(1) retornam 1.

Funo Atn
Retorna um Double que especifica o arco tangente de um nmero. Sintaxe Atn(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida. Comentrios A funo Atn toma a razo entre dois lados de um tringulo retngulo (nmero) e retorna o ngulo correspondente em radianos. A razo o comprimento do lado oposto ao ngulo dividido pelo comprimento do lado adjacente a ele. O intervalo do resultado -pi/2 a pi/2 radianos. Para converter graus em radianos, multiplique graus por pi/180. Para converter radianos em graus, multiplique radianos por 180/pi. Observao Atn a funo trigonomtrica inversa de Tan, que toma um ngulo como seu argumento e retorna a razo entre dois lados de um tringulo retngulo. No confunda Atn com a co-tangente, que o inverso simples da tangente (1/tangente).

Funo Cos
Retorna um Double que especifica o co-seno de um ngulo. Sintaxe Cos(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida que expressa um ngulo em radianos. Comentrios A funo Cos toma um ngulo e retorna a razo entre dois lados de um tringulo retngulo. A razo o comprimento do lado adjacente ao ngulo dividido pelo comprimento da hipotenusa. O resultado situa-se no intervalo -1 a 1. Para converter graus em radianos, multiplique graus por pi/180. Para converter radianos em graus, multiplique radianos por 180/pi.

Funes Internas

152

Funo Exp
Retorna um Double que especifica e (a base dos logaritmos naturais) elevada a uma potncia. Sintaxe Exp(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida. Comentrios Se o valor de nmero exceder 709,782712893, ocorrer um erro. A constante e vale aproximadamente 2,718282. Observao A funo Exp complementa a ao da funo Log e s vezes chamada de antilogaritmo.

Funes Int, Fix


Retornam um valor do tipo passado para ele contendo a parte inteira de um nmero. Sintaxe Int(nmero) Fix(nmero) argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida. Se nmero contiver Null, retornado Null. Comentrios Tanto Int como Fix removem a parte fracionria de nmero e retornam o valor inteiro resultante. A diferena entre Int e Fix que, se nmero for negativo, Int retorna o primeiro inteiro negativo que seja menor ou igual a nmero, enquanto Fix retorna o primeiro inteiro negativo maior ou igual a nmero. Por exemplo, Int converte -8.4 para -9, e Fix converte -8.4 para -8. Fix(nmero) equivalente a: Sgn(nmero) * Int(Abs(nmero))

Funo Log
Retorna um Double que especifica o logaritmo natural de um nmero. Sintaxe Log(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida maior que zero. Comentrios O logaritmo natural o logaritmo com base e. A constante e vale aproximadamente 2,718282. Voc pode calcular logaritmos de base n para qualquer nmero x dividindo o logaritmo natural de x pelo logaritmo natural de n, como a seguir: Logn(x) = Log(x) / Log(n) O exemplo seguinte ilustra um Function personalizada que calcula logaritmos de base 10: Static Function Log10(X) Log10 = Log(X) / Log(10#) End Function

Instruo Randomize
Inicializa o gerador de nmeros aleatrios. Sintaxe Randomize [nmero] O argumento opcional nmero um Variant ou qualquer expresso numrica vlida. Comentrios Randomize utiliza nmero para inicializar o gerador de nmeros aleatrios da funo Rnd, dando-lhe um novo valor de semente. Se voc omitir nmero, o valor retornado pelo cronmetro do sistema ser utilizado como o novo valor de semente. Se Randomize no for utilizado, a funo Rnd (sem argumentos) utilizar o mesmo nmero como uma semente a primeira vez chamada, e da em diante utilizar o ltimo nmero gerado como valor semente. Observao Para repetir seqncias de nmeros aleatrios, chame Rnd com um argumento negativo imediatamente antes de utilizar Randomize com um argumento numrico. Utilizar Randomize com o mesmo valor de nmero no repete a seqncia anterior.

Funo Rnd
Retorna um Single que contm um nmero aleatrio. Sintaxe Rnd[(nmero)] O argumento opcional nmero um Single ou qualquer expresso numrica vlida. Valores de Retorno Se nmero for Rnd gera Menor que zero O mesmo nmero todas as vezes, utilizando nmero como

Funes Internas

153

Maior que zero Igual a zero No fornecido

semente. O prximo nmero aleatrio na seqncia. O nmero gerado mais recentemente. O prximo nmero aleatrio na seqncia.

Comentrios A funo Rnd retorna um valor menor que 1, mas maior ou igual a zero. O valor de nmero determina como Rnd gera um nmero aleatrio: Para qualquer semente inicial dada, a mesma seqncia de nmeros gerada porque cada chamada que sucede a funo Rnd utiliza o nmero anterior como semente para o prximo nmero da seqncia. Antes de chamar Rnd, utilize a instruo Randomize sem argumento para inicializar o gerador de nmeros aleatrios com uma semente baseada no cronmetro do sistema. Para produzir nmeros inteiros aleatrios, utilize esta frmula: Int((limitesuperior - limiteinferior + 1) * Rnd + limiteinferior) Aqui, limitesuperior o nmero mais alto do intervalo e limiteinferior o nmero mais baixo. Observao Para repetir seqncias de nmeros aleatrios, chame Rnd com um argumento negativo imediatamente antes de utilizar Randomize com um argumento numrico. A utilizao de Randomize com o mesmo valor de nmero no repete a seqncia anterior.

Funo Sgn
Retorna um Variant (Integer) que indica o sinal de um nmero. Sintaxe Sgn(nmero) O argumento obrigatrio nmero pode ser qualquer expresso numrica vlida. Valores de retorno Se nmero for Sgn retorna Maior que zero 1 Igual a zero 0 Menor que zero -1 Comentrios O sinal do argumento nmero determina o valor de retorno da funo Sgn.

Funo Sin
Retorna um Double que especifica o seno de um ngulo. Sintaxe Sin(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida que exprima um ngulo em radianos. Comentrios A funo Sin toma um ngulo e retorna a razo entre dois lados de um tringulo retngulo. A razo o comprimento do lado oposto ao ngulo dividido pelo comprimento da hipotenusa. O resultado situa-se no intervalo -1 a 1. Para converter graus em radianos, multiplique graus por pi/180. Para converter radianos em graus, multiplique radianos por 180/pi.

Funo Sqr
Retorna um Double que especifica a raiz quadrada de um nmero. Sintaxe Sqr(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida maior ou igual a zero.

Funes Internas

154

Funo Tan
Retorna um Double que especifica a tangente de um ngulo. Sintaxe Tan(nmero) O argumento obrigatrio nmero um Double ou qualquer expresso numrica vlida que exprima um ngulo em radianos. Comentrios Tan toma um ngulo e retorna a razo entre dois lados de um tringulo retngulo. A razo o comprimento do lado oposto ao ngulo dividido pelo comprimento do lado adjacente. Para converter graus em radianos, multiplique graus por pi/180. Para converter radianos em graus, multiplique radianos por 180/pi.

Funes matemticas derivadas


A lista abaixo uma lista de funes matemticas no intrnsecas que podem ser derivadas a partir das funes matemticas intrnsecas: Funo Equivalentes derivadas Secante Co-secante Co-tangente Seno inverso Co-seno inverso Secante inversa Co-secante inversa Co-tangente inversa Seno hiperblico Co-seno hiperblico Tangente hiperblica Secante hiperblica Co-secante hiperblica Co-tangente hiperblica Seno hiperblico inverso Co-seno hiperblico inverso Tangente hiperblica inversa Secante hiperblica inversa Co-secante hiperblica inversa Co-tangente hiperblica inversa Logaritmo de base N Sec(X) = 1 / Cos(X) Cosec(X) = 1 / Sin(X) Cotan(X) = 1 / Tan(X) Arcsin(X) = Atn(X / Sqr(-X * X + 1)) Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) Arcsec(X) = Atn(X / Sqr(X * X 1)) + Sgn((X) 1) * (2 * Atn(1)) Arccosec(X) = Atn(X / Sqr(X * X 1)) + (Sgn(X) 1) * (2 * Atn(1)) Arccotan(X) = Atn(X) + 2 * Atn(1) Sinh(X) = (Exp(X) Exp(-X)) / 2 Cosh(X) = (Exp(X) + Exp(-X)) / 2 Tanh(X) = (Exp(X) Exp(-X)) / (Exp(X) + Exp(-X)) Sech(X) = 2 / (Exp(X) + Exp(-X)) Cosech(X) = 2 / (Exp(X) Exp(-X)) Cotanh(X) = (Exp(X) + Exp(-X)) / (Exp(X) Exp(-X)) Arcsinh(X) = Log(X + Sqr(X * X + 1)) Arccosh(X) = Log(X + Sqr(X * X 1)) Arctanh(X) = Log((1 + X) / (1 X)) / 2 Arcsech(X) = Log((Sqr(-X * X + 1) + 1) / X) Arccosech(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) Arccotanh(X) = Log((X + 1) / (X 1)) / 2 Logn(X) = Log(X) / Log(N)

Funes Internas

155

Exemplo do mtodo Add Este exemplo utiliza o mtodo Add para adicionar objetos Inst (instncias de uma classe denominada Class1 que contm uma varivel Public NomeDaInstncia) a uma coleo denominada MinhasClasses. Para ver como isto funciona, insira um mdulo de classe e declare uma varivel pblica denominada NomeDaInstncia em nvel de mdulo da Class1 (digite Public NomeDaInstncia) para conter os nomes de cada instncia. Deixe o nome padro como Class1. Copie e cole o cdigo a seguir no procedimento de evento Form_Load de um mdulo de formulrio. Dim MinhasClasses As New Collection ' Cria um objeto Collection. Dim Num As Integer ' Contador para individualizar chaves. Dim Msg Dim ONome ' Contm os nomes que o usurio insere. Do Dim Inst As New Class1 ' Cria uma nova instncia da Class1. Num = Num + 1 ' Incrementa Num e, em seguida, obtm um nome. Msg = "Insira um nome para este objeto". & Chr(13) _ & "Pressione Cancelar para ver os nomes na coleo". ONome = InputBox(Msg, "Nomeie a coleo de Items") Inst.NomeDaInstncia = ONome ' Coloca o nome na instncia de objeto. ' Se o usurio inseriu o nome, adiciona-o coleo. If Inst.NomeDaInstncia <> "" Then ' Adiciona o objeto nomeado coleo. MinhasClasses.Add item := Inst, key := CStr(Num) End If ' Limpa a referncia atual em preparao para a seguinte. Set Inst = Nothing Loop Until ONome = "" For Each x In MinhasClasses MsgBox x.NomeDaInstncia, , "Nome da instncia" Next Exemplo do mtodo Clear Este exemplo utiliza o mtodo Clear do objeto Err para redefinir as propriedades numricas do objeto Err como zero e as suas propriedades de seqncia de caracteres como seqncias de caracteres de comprimento zero. Se Clear fosse omitido do cdigo a seguir, a caixa de dilogo de mensagem de erro seria exibida a cada iterao do loop (depois que ocorresse um erro), independentemente de um clculo sucessivo gerar ou no um erro. Voc pode simplesmente passar pelo cdigo para ver o resultado. Dim Resultado(10) As Integer ' Declara a matriz cujos elementos ' sero facilmente sobrecarregados. Dim ind On Error Resume Next ' Adia a interceptao do erro. Do Until ind = 10 ' Gera um erro ocasional ou armazena o resultado se no houver erro. Resultado(ind) = Rnd * ind * 20000 If Err.Number <> 0 Then MsgBox Err, , "Erro gerado: ", Err.HelpFile, Err.HelpContext Err.Clear ' Limpa as propriedades do objeto Err. End If ind = ind + 1 Loop

Funes Internas

156

Exemplo do mtodo Item Este exemplo utiliza o mtodo Item para recuperar uma referncia a um objeto em uma coleo. Supondo que Aniversrios um objeto Collection, o cdigo a seguir recupera referncias aos objetos da coleo que representam a data do aniversrio de Bill Smith e do aniversrio de Adam Smith, utilizando as chaves "SmithBill" e "SmithAdam" como argumentos de ndice. Observe que a primeira chamada especifica explicitamente o mtodo Item, mas a segunda no. Ambas as chamadas funcionam porque o mtodo Item o padro de um objeto Collection. As referncias, atribudas a SmithBillBD e SmithAdamBD utilizando Set, podem ser utilizadas para acessar as propriedades e mtodos dos objetos especificados. Para executar este cdigo, crie a coleo e preencha-a com pelo menos dois membros referenciados. Dim SmithBillBD As Object Dim SmithAdamBD As Object Dim Aniversrios Set SmithBillBD = Aniversrios.Item("SmithBill") Set SmithAdamBD = Aniversrios("SmithAdam") Exemplo do mtodo Print Utilizando o mtodo Print, este exemplo exibe o valor da varivel MinhaVar no painel Imediato da janela Depurar. Observe que o mtodo Print se aplica somente a objetos que podem exibir texto. Dim MinhaVar MinhaVar = "Venha me ver no painel Imediato" Debug.Print MinhaVar Exemplo do mtodo Raise Este exemplo utiliza o mtodo Raise do objeto Err para gerar um erro com um objeto de Automao gravado no Visual Basic. Ele tem o cdigo programtico MeuProj.MeuObjeto. Const MeuCdigoDeContexto = 1010407 ' Define uma constante para o cdigo do contexto. Function TestName(NomeAtual, NovoNome) If Instr(NovoNome, "bob") Then' Testa a validade de NovoNome. ' Provoca a exceo. Err.Raise vbObjectError + 27, "MeuProj.MeuObjeto", _ "Nenhum ""bob"" permitido no seu nome", "c:\MeuProj\MinhAjuda.Hlp", _ MeuCdigoDeContexto End If End Function Exemplo do mtodo Remove Este exemplo ilustra o uso do mtodo Remove para remover objetos de um objeto Collection, MinhasClasses. Este cdigo remove o objeto cujo ndice 1 em cada iterao do loop. Dim Num, MinhasClasses For Num = 1 To MinhasClasses.Count MinhasClasses.Remove 1 ' Remove o primeiro objeto cada vez ' atravs do loop at que no haja mais ' objetos na coleo. Next Num

Mtodo Add
Adiciona um membro a um objeto Collection. Sintaxe objeto.Add item, key, before, after A sintaxe do mtodo Add tem o qualificador de objeto e os argumentos nomeados a seguir: Parte Descrio objeto Obrigatrio. Uma expresso de objeto que avaliado como um objeto da lista Relativo a. item Obrigatrio. Uma expresso de qualquer tipo que especifica o membro a ser adicionado coleo. key Opcional. Uma expresso de seqncia de caracteres exclusiva que especifica uma seqncia-chave que pode ser utilizada, em vez de um ndice posicional, para acessar um membro da coleo. before Opcional. Uma expresso que especifica uma posio relativa na coleo. O membro a ser adicionado colocado na coleo antes do membro identificado pelo argumento before. Se for uma expresso numrica, before deve ser um nmero de 1 ao valor da propriedade Count da coleo. Se for uma expresso de seqncia de caracteres, before deve corresponder key especificada quando o membro sendo referido foi adicionado coleo. Voc pode especificar uma posio before ou uma posio after, mas no ambas. after Opcional. Uma expresso que especifica uma posio relativa na coleo. O membro a ser adicionado colocado na coleo depois do membro

Funes Internas

157

identificado pelo argumento after. Se for numrico, after deve ser um nmero de 1 ao valor da propriedade Count da coleo. Se for uma seqncia de caracteres, after deve corresponder key especificada quando o membro referido foi adicionado coleo. Voc pode especificar uma posio before ou uma posio after, mas no ambas. Comentrios Se o argumento before ou after for uma expresso de seqncia de caracteres ou uma expresso numrica, ele deve fazer referncia a um membro existente da coleo, ou ocorrer um erro. Tambm ocorrer um erro se uma key especificada duplicar a key de um membro existente da coleo.

Mtodo Clear
Limpa todas as configuraes de propriedade do objeto Err. Sintaxe objeto.Clear O objeto sempre o objeto Err. Comentrios Utilize Clear para limpar explicitamente o objeto Err aps um erro ter sido tratado, por exemplo, quando voc utiliza a manipulao de erro diferida com On Error Resume Next. O mtodo Clear chamado automaticamente sempre que qualquer uma das instrues a seguir for executada: Qualquer tipo de instruo Resume Exit Sub, Exit Function, Exit Property Qualquer instruo On Error Observao A construo On Error Resume Next pode ser prefervel a On Error GoTo ao tratar erros gerados durante o acesso a outros objetos. Verificar Err aps cada interao com um objeto remove a ambigidade sobre qual objeto foi acessado pelo cdigo. Voc pode ter certeza de qual objeto colocou o cdigo de erro em Err.Number, assim como de qual objeto gerou originalmente o erro (o objeto especificado em Err.Source).

Mtodo Item
Retorna um membro especfico de um objeto Collection, seja por posio ou por chave. Sintaxe objeto.Item(ndice) A sintaxe do mtodo Item tem o qualificador e parte do objeto a seguir: Parte Descrio objeto Obrigatrio. Uma expresso de objeto que avaliada como um objeto na lista Relativo a. ndice Obrigatrio. Uma expresso que especifica a posio de um membro da coleo. Se for uma expresso numrica, ndice deve ser um nmero de 1 ao valor da propriedade Count da coleo. Se for uma expresso de seqncia de caracteres, ndice deve corresponder ao argumento key especificado quando o membro referido tiver sido adicionado coleo.

Comentrios Se o valor fornecido como ndice no corresponder a nenhum membro existente da coleo, ocorrer um erro. O mtodo Item o mtodo padro de uma coleo. Por essa razo, as linhas de cdigo a seguir so equivalentes: Print MinhaColeo(1) Print MinhaColeo.Item(1)

Mtodo Print
Imprime o texto no painel Imediato da janela Depurar. Sintaxe objeto.Print [listadesada] A sintaxe do mtodo Print tem o seguinte qualificador e parte do objeto: Parte Descrio objeto Opcional. Uma expresso de objeto que avaliada como um objeto da lista Relativo a. listadesada Opcional. Expresso ou lista de expresses a ser impressa. Se for omitida, ser impressa uma linha em branco. O argumento listadesada tem as seguintes sintaxe e partes: {Spc(n) | Tab(n)} expresso poscarac Parte Spc(n) Tab(n) Descrio Opcional. Utilizado para inserir caracteres espao na sada, onde n o nmero de caracteres espao a ser inseridos. Opcional. Utilizado para posicionar o ponto de insero em um nmero

Funes Internas

158

expresso poscarac

de coluna absoluto onde n o nmero de coluna. Use Tab sem argumento para posicionar o ponto de insero no incio da prxima rea de impresso. Opcional. Expresso numrica ou expresso de seqncia de caracteres a ser impressa. Opcional. Especifica o ponto de insero para o prximo caractere. Use ponto-e-vrgula (;) para posicionar o ponto de insero imediatamente aps o ltimo caractere exibido. Use Tab(n) para posicionar o ponto de insero em um nmero de coluna absoluto. Use Tab sem argumento para posicionar o ponto de insero no incio da rea de impresso. Se poscarac for omitido, o prximo caractere ser impresso na prxima linha.

Comentrios Vrias expresses podem ser separadas com um espao ou um ponto-e-vrgula. Todos os dados impressos na janela Imediato so formatados de forma apropriada usando o separador decimal para as configuraes de localidade especificadas para seu sistema. As palavras-chave so colocadas no idioma apropriado do aplicativo host. Para os dados Boolean, impresso True ou False. As palavras-chave True e False so convertidas de acordo com a definio de localidade para o aplicativo host. Os dados Date so gravados usando o formato de data padro reconhecido pelo seu sistema. Quando faltam os componentes de data ou hora ou eles equivalem a zero, somente os dados fornecidos so gravados. Nada gravado se os dados de listadesada estiverem Empty. Contudo, se esses dados forem Null, a sada ser Null. A palavra-chave Null convertida de forma apropriada na sada. Para os dados com erro, a sada gravada como Error cdigoerro. A palavra-chave Error convertida de forma apropriada na sada. O objeto ser requerido se o mtodo for utilizado fora de um mdulo contendo um espao de exibio padro. Por exemplo, ocorrer um erro se o mtodo for chamado em um mdulo padro sem especificar um objeto, mas, se for chamado em um mdulo de formulrio, listadesada ser exibida no formulrio. Observao Como o mtodo Print tipicamente imprime com caracteres com espao proporcional, no h correlao entre o nmero de caracteres impressos e o nmero de colunas de largura fixa que esses caracteres ocupam. Por exemplo, uma letra larga, como o "W", ocupa mais do que uma coluna de largura fixa, e uma letra estreita, como o "i", ocupa menos do que essa coluna. Para permitir os casos em que os caracteres maiores do que a mdia sejam usados, suas colunas tabulares devem ser posicionadas longe o suficiente umas das outras. De forma alternativa, voc pode imprimir usando uma fonte de espaamento fixo (como Courier) para assegurar que cada caractere ocupe somente uma coluna.

Mtodo Raise
Gera um erro de tempo de execuo. Sintaxe objeto.Raise number, source, description, helpfile, helpcontext O mtodo Raise tem o qualificador de objeto e os argumentos nomeados a seguir: Argumento Descrio objeto Obrigatrio. sempre o objeto Err. number Obrigatrio. Inteiro Long que identifica a natureza do erro. Os erros do Visual Basic (erros definidos pelo Visual Basic ou definidos pelo usurio) encontram-se no intervalo de 0 a 65535. Ao definir a propriedade Nmero para seu prprio cdigo de erro em um mdulo de classe, voc adiciona seu nmero de cdigo de erro constante. vbObjectError. Por exemplo, para gerar o nmero de erro 1050, atribua vbObjectError + 1050 para a propriedade Number. source Opcional. Expresso de seqncia de caracteres que d nome ao objeto ou aplicativo que gerou o erro. Ao definir essa propriedade para um objeto, use a forma projeto.classe. Se source no for especificada, utilizada a identificao programtica do projeto atual do Visual Basic. description Opcional. A expresso de seqncia de caracteres que descreve o erro. Se no for especificada, o valor em Number ser examinado. Se ele puder ser mapeado para um cdigo de erro de tempo de execuo do Visual Basic, a seqncia de caracteres que iria ser retornada pela funo Error ser utilizada como Description. Se no houver erro no Visual Basic que corresponda a Number, ser usada a mensagem "Erro de definio de aplicativo ou de definio de objeto". helpfile Opcional. O caminho completo para o arquivo de Ajuda do Microsoft Windows no qual pode ser encontrada ajuda sobre esse erro. Se no for especificado, o Visual Basic utilizar a unidade, o caminho e o nome do arquivo completo do arquivo de Ajuda do Visual Basic. helpcontext Opcional. A identificao de contexto que identifica um tpico dentro do helpfile que fornece ajuda para o erro. Se for omitido, ser usada

Funes Internas

159

a identificao de contexto do arquivo de Ajuda do Visual Basic referente ao erro correspondente propriedade Number, caso ele exista. Comentrios Todos os argumentos so opcionais com exceo de number. Se voc usar Raise sem especificar alguns argumentos, e as configuraes de propriedade do objeto Err contiverem valores que tenham sido removidos, esses valores serviro como os valores para o seu erro. Raise utilizado para gerar erros de tempo de execuo e pode ser usado no lugar da instruo Error. Raise til para gerar erros ao gravar mdulos de classe, pois o objeto Err fornece informaes mais completas do que seria possvel se voc gerasse erros com a instruo Error. Por exemplo, com o mtodo Raise, a fonte que gerou o erro pode ser especificada na propriedade Source, a Ajuda on-line para o erro pode ser referida e assim por diante.

Mtodo Remove
Remove um membro de um objeto Collection. Sintaxe objeto.Remove ndice A sintaxe do mtodo Remove tem o qualificador e parte do objeto a seguir: Parte Descrio objeto Obrigatrio. Uma expresso de objeto que avaliada como um objeto da lista Relativo a. ndice Obrigatrio. Uma expresso que especifica a posio de um membro da coleo. Se for uma expresso numrica, ndice deve ser um nmero de 1 ao valor da propriedade Count da coleo. Se for uma expresso de seqncia de caracteres, ndice deve corresponder ao argumento key especificado quando o membro referido tiver sido adicionado coleo. Comentrios Se o valor fornecido como ndice no corresponder a um membro existente da coleo, ocorrer um erro. Exemplo da instruo AppActivate Este exemplo ilustra vrios usos da instruo AppActivate para ativar uma janela de aplicativo. As instrues Shell supem que os aplicativos esto nos caminhos especificados. Dim MeuCdigoDoAplicativo, ValorDeRetorno ' No Microsoft Windows: AppActivate "Microsoft Word" ' Ativa o Microsoft ' Word. ' AppActivate tambm pode utilizar o valor de retorno da funo Shell. MeuCdigoDoAplicativo = Shell("C:\WORD\WINWORD.EXE", 1) ' Executa o Microsoft Word. AppActivate MeuCdigoDoAplicativo ' Ativa o Microsoft ' Word.

' Voc pode tambm utilizar o valor de retorno da funo Shell. ValorDeRetorno = Shell("c:\EXCEL\EXCEL.EXE",1) ' Executa o Microsoft Excel. AppActivate ValorDeRetorno ' Ativa o Microsoft ' Excel. Exemplo da instruo Beep Este exemplo utiliza a instruo Beep para emitir trs avisos sonoros consecutivos atravs do alto-falante do computador. Dim I For I = 1 To 3 ' Faz o loop 3 vezes. Beep ' Emite um aviso sonoro. Next I Exemplo da funo Command Este exemplo utiliza a funo Command para obter os argumentos da linha de comando em uma funo que os retorna em uma Variant que contm uma matriz. Function GetCommandLine(Optional ArgsMax) 'Declara as variveis. Dim C, LinhaDeComando, CompLinhaDeComando, ArgIn, I, ArgsNum 'V se ArgsMax foi fornecido. If IsMissing(ArgsMax) Then ArgsMax = 10 'Torna a matriz do tamanho correto. ReDim MatrizArg(ArgsMax) ArgsNum = 0: ArgIn = False 'Obtm argumentos da linha de comando. Funes Internas

160

LinhaDeComando = Command() CompLinhaDeComando = Len(LinhaDeComando) 'Percorre a linha de comando um caractere 'de cada vez. For I = 1 To CompLinhaDeComando C = Mid(LinhaDeComando, I, 1) 'Testa quanto a espao ou tabulao. If (C <> " " And C <> vbTab) Then 'Nem espao nem tabulao. 'Testa se j existe no argumento. If Not ArgIn Then 'O novo argumento iniciado. 'Testa quanto ao nmero excessivo de argumentos. If ArgsNum = ArgsMax Then Exit For ArgsNum = ArgsNum + 1 ArgIn = True End If 'Adiciona caractere ao argumento atual. MatrizArg(ArgsNum) = MatrizArg(ArgsNum) + C Else 'Encontrado um espao ou tabulao. 'Define o sinalizador ArgIn como False. ArgIn = False End If Next I 'Redimensiona a matriz o suficiente para conter argumentos. ReDim Preserve MatrizArg(ArgsNum) 'Retorna a Matriz no nome da funo. GetCommandLine = MatrizArg() End Function Exemplo da funo InputBox Este exemplo mostra vrias maneiras de utilizar a funo InputBox para solicitar ao usurio que insira um valor. Se as posies x e y forem omitidas, a caixa de dilogo ser automaticamente centralizada em relao aos respectivos eixos. A varivel MeuValor contm o valor inserido pelo usurio se o usurio clicar em OK ou pressionar a tecla ENTER. Se o usurio clicar em Cancelar, ser retornada uma seqncia de comprimento zero. Dim Mensagem, Ttulo, Padro, MeuValor Mensagem = "Insira um valor entre 1 e 3" ' Define o aviso. Ttulo = "Demonstrao da CaixaDeEntrada" ' Define o ttulo. Padro = "1" ' Define o padro. ' Exibe a mensagem, o ttulo e o valor padro. MeuValor = InputBox(Mensagem, Ttulo, Padro) ' Utiliza o arquivo de Ajuda e o contexto. O boto Ajuda adicionado automaticamente. MeuValor = InputBox(Mensagem, Ttulo, , , , "DEMO.HLP", 10) ' Exibe a caixa de dilogo na posio 100, 100. MeuValor = InputBox(Mensagem, Ttulo, Padro, 100, 100)

Funes Internas

161

Exemplo da funo MsgBox Este exemplo utiliza a funo MsgBox para exibir uma mensagem de erro crtico em uma caixa de dilogo com os botes Sim e No. O boto No especificado como a resposta padro. O valor retornado pela funo MsgBox depende do boto escolhido pelo usurio. Este exemplo supe que DEMO.HLP um arquivo de Ajuda que contm um tpico com um nmero de contexto da Ajuda igual a 1000. Dim Msg, Estilo, Ttulo, Ajuda, Ctxt, Resposta, MinhaSeqncia Msg = "Deseja continuar?" ' Define a mensagem. Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define os botes. Ttulo = "Demonstrao de MsgBox" ' Define o ttulo. Ajuda = "DEMO.HLP" ' Define o arquivo de Ajuda. Ctxt = 1000 ' Define o contexto do ' tpico. ' Exibe a mensagem. Resposta = MsgBox(Msg, Estilo, Ttulo, Ajuda, Ctxt) If Resposta = vbYes Then ' O usurio escolheu Sim. MinhaSeqncia = "Sim" ' Executa alguma ao. Else ' O usurio escolheu No. MinhaSeqncia = "No" ' Executa alguma ao. End If Exemplo da instruo SendKeys Este exemplo utiliza a funo Shell para executar o aplicativo Calculadora includo no Microsoft Windows. Utiliza a instruo SendKeys para enviar pressionamentos de teclas para adicionar alguns nmeros e, ento, sair da Calculadora. (Para ver o exemplo, cole-o em um procedimento e, em seguida, execute o procedimento. Como AppActivate altera o foco para o aplicativo Calculadora, no possvel simplesmente percorrer o cdigo.) Dim ValorDeRetorno, I ValorDeRetorno = Shell("CALC.EXE", 1) ' Executa a Calculadora. AppActivate ValorDeRetorno ' Ativa a Calculadora. For I = 1 To 100 ' Configura o loop de contagem. SendKeys I & "{+}", True ' Envia pressionamentos de teclas para Calculadora Next I' para adicionar cada valor de I. SendKeys "=", True ' Obtm o total geral. SendKeys "%{F4}", True ' Envia ALT+F4 para fechar a Calculadora.

Instruo AppActivate
Ativa uma janela do aplicativo. Sintaxe AppActivate title[, wait] A sintaxe da instruo AppActivate possui os argumentos nomeados a seguir: Parte Descrio title Obrigatrio. Expresso de seqncia de caracteres que especifica o ttulo na barra de ttulo da janela do aplicativo que voc deseja ativar. O cdigo de tarefa retornado pela funo Shell pode ser utilizado em vez de title para ativar um aplicativo. wait Opcional. Valor Boolean que especifica se o aplicativo de chamada possui o foco antes de ativar outro. Se for False (padro), o aplicativo especificado ativado imediatamente, mesmo se o aplicativo de chamada no possuir o foco. Se for True, o aplicativo de chamada aguarda at possuir o foco e depois ativa o aplicativo especificado. Comentrios A instruo AppActivate muda o foco para o aplicativo ou a janela especificados, mas sem afetar seu estado maximizado ou minimizado. O foco se move da janela de aplicativo ativada quando o usurio realiza alguma ao para mudar o foco ou fechar a janela. Utilize a funo Shell para iniciar um aplicativo e definir o estilo de janela. Na determinao de qual aplicativo deve ser ativado, title comparado seqncia de caracteres de ttulo de cada aplicativo que est em execuo. Se no houver correspondncia exata, todo aplicativo cuja seqncia de caracteres de ttulo comece com title ser ativado. Se houver mais de uma ocorrncia do aplicativo especificado por title, uma ocorrncia ser arbitrariamente ativada.

Instruo Beep
Emite um som pelo alto-falante do computador. Sintaxe Beep Comentrios A freqncia e a durao do som dependem do hardware e do software do sistema e variam de um computador para outro.

Funes Internas

162

Funo Command
Retorna a parte argumento da linha de comando utilizada para executar o Microsoft Visual Basic ou um programa executvel desenvolvido com o Visual Basic. Sintaxe Command Comentrios Quando o Visual Basic executado a partir da linha de comando, qualquer parte da linha de comando que esteja aps /cmd passada ao programa como o argumento de linha de comando. No exemplo a seguir, cmdlineargs representa as informaes de argumento retornadas pela funo Command. VB /Cmd cmdlineargs Para aplicativos desenvolvidos com o Visual Basic e compilados para um arquivo .exe, Command retorna qualquer argumento que aparea depois do nome do aplicativo na linha de comando. Por exemplo: MyApp cmdlineargs Para descobrir de que forma os argumentos de linha de comando podem ser alterados na interface do usurio do aplicativo que voc est utilizando, procure Argumentos de linha de comando na Ajuda.

Funes Internas

163

Funo InputBox
Exibe um aviso em uma caixa de dilogo, aguarda at que o usurio insira texto ou clique em um boto e retorna um String com o contedo da caixa de texto. Sintaxe InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) A sintaxe da funo InputBox possui os argumentos nomeados a seguir: Parte Descrio prompt Obrigatrio. Expresso de seqncia de caracteres exibida como mensagem na caixa de dilogo. O comprimento mximo de prompt de aproximadamente 1024 caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, voc poder separar as linhas utilizando um caractere de retorno de carro (Chr(13)), um caractere de alimentao de linha (Chr(10)) ou uma combinao de caracteres de retorno de carro e alimentao de linha (Chr(13) & Chr(10)) entre cada linha. title Opcional. Expresso de seqncia de caracteres exibida na barra de ttulo da caixa de dilogo. Se voc omitir title, o nome do aplicativo ser inserido na barra de ttulo. default Opcional. Expresso de seqncia de caracteres exibida na caixa de texto como resposta padro se nenhuma entrada for fornecida. Se voc omitir default, a caixa de texto ser exibida vazia. xpos Opcional. Expresso numrica que especifica, em twips, a distncia horizontal da extremidade esquerda da caixa de dilogo em relao extremidade esquerda da tela. Se xpos for omitido, a caixa de dilogo ser centralizada horizontalmente. ypos Opcional. Expresso numrica que especifica, em twips, a distncia vertical da extremidade superior da caixa de dilogo em relao ao topo da tela. Se ypos for omitido, a caixa de dilogo ser posicionada na vertical a aproximadamente um tero da extremidade inferior da tela. helpfile Opcional. Expresso de seqncia de caracteres que identifica o arquivo de Ajuda a ser utilizado para fornecer ajuda sensvel ao contexto relativa caixa de dilogo. Se helpfile for fornecido, context tambm dever ser fornecido. context Opcional. Expresso numrica que o nmero de contexto da Ajuda atribudo ao tpico da Ajuda apropriado pelo autor da Ajuda. Se context for fornecido, helpfile tambm dever ser fornecido. Comentrios Quando helpfile e context so fornecidos, o usurio pode pressionar F1 para exibir o tpico de Ajuda que corresponde ao context. Alguns aplicativos host, por exemplo, o Microsoft Excel, tambm adicionam automaticamente um boto Ajuda caixa de dilogo. Se o usurio clicar em OK ou pressionar ENTER, a funo InputBox retornar o que houver na caixa de texto. Se o usurio clicar em Cancelar, a funo retornar uma seqncia de caracteres de comprimento zero (""). Observao Para especificar mais que o primeiro argumento nomeado, voc deve utilizar InputBox em uma expresso. Para omitir alguns argumentos posicionais, voc deve incluir o delimitador de vrgula correspondente.

Funes Internas

164

Funo MsgBox
Exibe uma mensagem em uma caixa de dilogo, aguarda que o usurio clique em um boto e retorna um Integer que indica qual boto o usurio clicou. Sintaxe MsgBox(prompt[, buttons] [, title] [, helpfile, context]) A sintaxe da funo MsgBox possui os argumentos nomeados a seguir: Parte Descrio prompt Obrigatrio. Expresso de seqncia de caracteres exibida como mensagem na caixa de dilogo. O comprimento mximo de prompt de aproximadamente 1024 caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, voc poder separar as linhas utilizando um caractere de retorno de carro (Chr(13)), um caractere de alimentao de linha (Chr(10)) ou uma combinao de caracteres de retorno de carro e alimentao de linha (Chr(13) & Chr(10)) entre cada linha. buttons Opcional. Expresso numrica que a soma de valores que especifica o nmero e o tipo de botes a exibir, o estilo de cone a utilizar, a identidade do boto padro e a modalidade da caixa de mensagem. Se omitido, o valor padro para buttons 0. title Opcional. Expresso de seqncia de caracteres exibida na barra de ttulo da caixa de dilogo. Se voc omitir title, o nome do aplicativo ser inserido na barra de ttulo. helpfile Opcional. Expresso de seqncia de caracteres que identifica o arquivo de Ajuda a ser utilizado para fornecer a ajuda sensvel ao contexto relativa caixa de dilogo. Se helpfile for fornecido, context tambm dever ser fornecido. context Opcional. Expresso numrica que o nmero de contexto da Ajuda atribudo ao tpico de Ajuda apropriado pelo autor da Ajuda. Se context for fornecido, helpfile tambm dever ser fornecido. Definies As definies do argumento buttons so: Constante vbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal VbSystemModal

Valor 0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 4096

Descrio Exibe somente o boto OK. Exibe os botes OK e Cancelar. Exibe os botes Abortar, Repetir e Ignorar. Exibe os botes Sim, No e Cancelar. Exibe os botes Sim e No. Exibe os botes Repetir e Cancelar. Exibe o cone Mensagem crtica. Exibe o cone Consulta de aviso. Exibe o cone Mensagem de aviso. Exibe o cone Mensagem de informao. O primeiro boto o padro. O segundo boto o padro. O terceiro boto o padro. O quarto boto o padro. Janela restrita do aplicativo; o usurio deve responder caixa de mensagem antes de continuar o trabalho no aplicativo atual. Janela restrita do sistema; todos os aplicativos so suspensos at que o usurio responda caixa de mensagem.

O primeiro grupo de valores (05) descreve o nmero e o tipo de botes exibidos na caixa de dilogo; o segundo grupo (16, 32, 48, 64) descreve o estilo de cone; o terceiro grupo (0, 256, 512) determina qual boto o padro e o quarto grupo (0, 4096) determina a modalidade da caixa de mensagem. Quando estiver somando nmeros para criar um valor final para o argumento buttons, utilize somente um nmero de cada grupo. Observao Estas constantes so especificadas pelo Visual Basic para Aplicativos. Como resultado, os nomes podem ser utilizados em qualquer lugar do seu cdigo em vez dos valores reais. Valores de retorno Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valor 1 2 3 4 5 6 7 Descrio OK Cancelar Abortar Repetir Ignorar Sim No

Funes Internas

165

Comentrios Quando helpfile e context so fornecidos, o usurio pode pressionar F1 para exibir o tpico da Ajuda correspondente ao context. Alguns aplicativos host, por exemplo, o Microsoft Excel, tambm adicionam automaticamente um boto Ajuda caixa de dilogo. Se a caixa de dilogo exibir um boto Cancelar, pressionar a tecla ESC ter o mesmo efeito que clicar em Cancelar. Se a caixa de dilogo contiver um boto Ajuda, ser fornecida a ajuda sensvel ao contexto relativa caixa de dilogo. Entretanto, nenhum valor ser retornado at que um dos outros botes seja clicado. Observao Para especificar mais do que o primeiro argumento nomeado, voc deve utilizar MsgBox em uma expresso. Para omitir algum argumento posicional, voc deve incluir o delimitador de vrgula correspondente.

Instruo SendKeys
Envia um ou mais pressionamentos de teclas para a janela ativa como se tivessem sido digitados no teclado. Sintaxe SendKeys string[, wait] A sintaxe da instruo SendKeys possui os argumentos nomeados a seguir: Parte Descrio string Obrigatrio. Expresso de seqncia de caracteres que especifica os pressionamentos de teclas a enviar. wait Opcional. Valor Boolean que especifica o modo de espera. Se for False (padro), o controle ser retornado ao procedimento imediatamente aps as teclas serem enviadas. Se for True, os pressionamentos de teclas devem ser processados antes que o controle seja retornado ao procedimento. Comentrios Cada tecla representada por um ou mais caracteres. Para especificar um nico caractere de teclado, utilize o prprio caractere. Por exemplo, para representar a letra A, utilize "A" para string. Para representar mais de um caractere, anexe cada caractere adicional ao que o antecede. Para representar as letras A, B e C, utilize "ABC" para string. O sinal de adio (+), circunflexo (^), sinal de porcentagem (%), til (~) e parnteses ( ) possuem significados especiais para SendKeys. Para especificar um desses caracteres, coloque-os entre chaves ({}). Por exemplo, para especificar o sinal de adio, utilize {+}. Os colchetes ([ ]) no tm significado especial para SendKeys, mas voc deve coloc-los entre chaves. Em outros aplicativos, os colchetes tm um significado especial que pode ser importante quando ocorrer intercmbio dinmico de dados (DDE, Dynamic Data Exchange). Para especificar caracteres de chaves, utilize {{} e {}}. Para especificar caracteres que no so exibidos quando voc pressiona uma tecla, como ENTER ou TAB, e teclas que representam aes em vez de caracteres, utilize os cdigos a seguir. Tecla Cdigo BACKSPACE {BACKSPACE}, {BS} ou {BKSP} BREAK {BREAK} CAPS LOCK {CAPSLOCK} DEL ou DELETE {DELETE} ou {DEL} SETA ABAIXO {DOWN} END {END} ENTER {ENTER}ou ~ ESC {ESC} HELP {HELP} HOME {HOME} INS ou INSERT {INSERT} ou {INS} SETA ESQUERDA {LEFT} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} SETA DIREITA {RIGHT} SCROLL LOCK {SCROLLLOCK} TAB {TAB} SETA ACIMA {UP} F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12} F13 {F13} F14 {F14}

Funes Internas

166

F15 F16

{F15} {F16}
SHIFT, CTRL e ALT,

Para especificar teclas combinadas com qualquer combinao das teclas um ou mais dos cdigos a seguir: Tecla Cdigo SHIFT + CTRL ^ ALT %

preceda o cdigo de teclas de

Para especificar que qualquer combinao de SHIFT, CTRL e ALT deve ser mantida pressionada enquanto vrias outras teclas so pressionadas, coloque o cdigo dessas teclas entre parnteses. Por exemplo, para especificar manter pressionada SHIFT enquanto E e C so pressionadas, utilize "+(EC)". Para especificar manter pressionada SHIFT enquanto E pressionada, seguida de C sem SHIFT, utilize "+EC". Para especificar a repetio de teclas, utilize a forma{tecla nmero}. Voc deve colocar um espao entre tecla e nmero. Por exemplo, {ESQUERDA 42} significa pressionar a tecla SETA ESQUERDA 42 vezes; {h 10} significa pressionar H 10 vezes. Observao Voc no pode utilizar SendKeys para enviar pressionamentos de teclas para um aplicativo que no tenha sido projetado para ser executado no Microsoft Windows. Sendkeys tambm no pode enviar a tecla PRINT SCREEN {PRTSC} a nenhum aplicativo.

Funes Internas

167

Conjunto de caracteres (0127)


0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ** ** ** ** 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 [espao] ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

Esses caracteres no so suportados pelo Microsoft Windows. * * Os valores 8, 9, 10 e 13 so convertidos para os caracteres backspace, tab, alimentao de linha e retorno de carro, respectivamente. Eles no tm representao grfica mas, dependendo do aplicativo, podem afetar a exibio visual do texto.

Funes Internas

168

Funo IMEStatus
Retorna um Integer especificando o modo Editor de Mtodo de Entrada (IME, Input Method Editor) atual do Microsoft Windows; disponvel somente nas verses para o Extremo Oriente. Sintaxe IMEStatus Valores de retorno Os valores de retorno referentes localidade Japo so os seguintes: Constante Valor Descrio vbIMENoOP 0 Nenhum IME instalado vbIMEOn 1 IME ligado vbIMEOff 2 IME desligado vbIMEDisable 3 IME desativado vbIMEHiragana 4 Caracteres de byte duplo Hiragana (DBC) vbIMEKatakanaDbl 5 Katakana DBC vbIMEKatakanaSng 6 Caracteres de byte simples Katakana (SBC) vbIMEAlphaDbl 7 DBC Alfanumrico vbIMEAlphaSng 8 SBC Alfanumrico Os valores de retorno referentes localidade China (chins tradicional e simplificado) so os seguintes: Constante Valor Descrio vbIMENoOP 0 Nenhum IME instalado vbIMEOn 1 IME ligado vbIMEOff 2 IME desligado Para a localidade coreana, os primeiros cinco bits de retorno so definidos da seguinte forma: Bit Valor Descrio Valor Descrio 0 0 Nenhum IME instalado 1 IME instalado 1 0 IME desativado 1 IME ativado 2 0 Modo Ingls IME 1 Modo Hangeul 3 0 Modo Banja (SB) 1 Modo Junja (DB) 4 0 Modo Normal 1 Modo de Converso Hanja

Funes Internas

169

Collection (Pesquisador de objeto)


O mdulo Collection contm procedimentos utilizados para realizar operaes no objeto Collection. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

ColorConstants (Pesquisador de objeto)


O mdulo Color Constants contm constantes de cores predefinidas. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Constants (Pesquisador de objeto)


O mdulo Constants contm vrias constantes. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Conversion (Pesquisador de objeto)


O mdulo Conversion contm os procedimentos utilizados para executar vrias operaes de converso. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo. Observao Quando voc utiliza as variveis Variant, as converses de tipo de dados explcitas no desnecessrias.

DateTime (Pesquisador de objeto)


O mdulo DateTime contm os procedimentos e propriedades utilizados em operaes de data e hora. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

ErrObject (Pesquisador de objeto)


O mdulo ErrObject contm propriedades e procedimentos utilizados para identificar e manipular erros de tempo de execuo utilizando o objeto Err. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

FileSystem (Pesquisador de objeto)


O mdulo FileSystem contm os procedimentos utilizados para realizar operaes de arquivo, diretrio ou pasta e sistema. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Financial (Pesquisador de objeto)


O mdulo Financial contm procedimentos utilizados para realizar operaes financeiras. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Funes Internas

170

Global (Pesquisador de objeto)


O mdulo Global contm procedimentos e propriedades utilizadas para realizar operaes no objeto UserForm. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Information (Pesquisador de objeto)


O mdulo Information contm os procedimentos utilizados para retornar, testar ou verificar informaes. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Interaction (Pesquisador de objeto)


O mdulo Interaction contm procedimentos utilizados para interagir com objetos, aplicativos e sistemas. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

eycodeConstants (Pesquisador de objeto)


O mdulo KeyCodeConstants contm constantes de cdigo-chave predefinidas que podem ser utilizadas em qualquer parte do seu cdigo.

Math (Pesquisador de objeto)


O mdulo Math contm procedimentos utilizados para realizar operaes matemticas. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

String (Pesquisador de objeto)


O mdulo String contm procedimentos utilizados para realizar operaes de seqncias de caracteres. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

SystemColorConstants (Pesquisador de objeto)


O mdulo System ColorConstants contm constantes que identificam vrias partes da interface de usurio grfica. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbAppWinStyle (Pesquisador de objeto)


A enumerao VbAppWinStyle contm constantes utilizadas pela funo Shell para controlar o estilo de uma janela de aplicativo. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbCalendar (Pesquisador de objeto)


A enumerao VbCalendar contm constantes utilizadas para determinar o tipo de calendrio utilizado pelo Visual Basic. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbCompareMethod (Pesquisador de objeto)


A enumerao VbCompareMethod contm constantes utilizadas para determinar a forma como as seqncias de caracteres so comparadas ao utilizar as funes Instr e StrComp. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbDayOfWeek (Pesquisador de objeto)


A enumerao VbDayOfWeek contm constantes utilizadas para identificar dias da semana especficos ao utilizar as funes DateDiff, DatePart e Weekday. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

Funes Internas

171

VbFileAttribute (Pesquisador de objeto)


A enumerao VbFileAttribute contm constantes utilizadas para identificar atributos de arquivos utilizados nas funes Dir, GetAttr e SetAttr. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbFirstWeekOfYear (Pesquisador de objeto)


A enumerao VbFirstWeekOfYear contm constantes utilizadas para identificar como a primeira semana de um ano determinada quando estiver utilizando as funes DateDiff e DatePart. Estas constantes podem ser utilizados em qualquer outra parte do cdigo.

VbIMEStatus (Pesquisador de objeto)


Disponvel apenas nas verses do Oriente Mdio, a enumerao VbIMEStatus contm constantes utilizadas para identificar o Input Method Editor (IME) quando estiver utilizando a funo IMEStatus. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbMsgBoxResult (Pesquisador de objeto)


A enumerao VbMsgBoxResult contm constantes utilizadas para identificar que boto foi pressionado em uma caixa de mensagem exibida utilizando a funo MsgBox. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbMsgBoxStyle (Pesquisador de objeto)


A enumerao VbMsgBoxStyle contm constantes utilizadas para especificar o comportamento de uma caixa de mensagem, junto com smbolos e botes que aparecem nela, quando exibida utilizando a funo MsgBox. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbQueryClose (Pesquisador de objeto)


A enumerao VbQueryClose contm constantes utilizadas para identificar o que causou o evento QueryClose. Estas constantes podem ser utilizadas em qualquer parte do seu cdigo.

VbStrConv (Pesquisador de objeto)


A enumerao VbStrConv contm constantes utilizadas para identificar o tipo de converso de seqncia de caracteres a ser realizada pela funo StrConv. Estas constantes podem ser utilizadas em qualquer parte do se cdigo.

VbVarType (Pesquisador de objeto)


A enumerao VbVarType contm constantes utilizadas para identificar os vrios tipos de dados que podem estar contidos em uma Variante. Estas constantes correspondem aos valores de retorno da funo VarType e pode ser utilizado em qualquer parte do seu cdigo.

Funes Internas

172

Exemplo do objeto Collection Este exemplo cria um objeto Collection (MinhasClasses) e, em seguida, cria uma caixa de dilogo na qual os usurios podem adicionar objetos coleo. Para ver como isto funciona, escolha o comando Mdulo de classe no menu Inserir e declare uma varivel pblica denominada NomeDaInstncia em nvel de mdulo de Class 1 (digite Public NomeDaInstncia) para conter o nome de cada instncia. Deixe o nome padro como Class1. Copie e cole o cdigo a seguir na seo Geral de outro mdulo e, em seguida, inicie-o com a instruo ClassNamer em outro procedimento. (Este exemplo funciona somente com aplicativos host que suportam classes.) Sub ClassNamer() Dim MinhasClasses As New Collection ' Cria um objeto Collection. Dim Num ' Contador para chaves de individualizao. Dim Msg As String ' Varivel para conter seqncia de caracteres de aviso. Dim ONome, MeuObjeto, ListaDeNomes ' Variants para conter informaes. Do Dim Inst As New Class1 ' Cria uma nova instncia de Class1. Num = Num + 1 ' Incrementa Num e, em seguida, obtm um nome. Msg = "Insira um nome para este objeto." & Chr(13) _ & "Pressione Cancelar para ver os nomes na coleo. ONome = InputBox(Msg, "Nomeie a coleo de Items") Inst.NomeDaInstncia = ONome ' Coloca o nome na instncia do objeto. ' Se o usurio inseriu um nome, adiciona-o coleo. If Inst.NomeDaInstncia <> "" Then ' Adiciona o objeto nomeado coleo. MinhasClasses.Add item := Inst, key := CStr(Num) End If ' Limpa a referncia atual em preparao para a prxima. Set Inst = Nothing Loop Until ONome = "" For Each MeuObjeto In MinhasClasses ' Cria a lista de nomes. ListaDeNomes = ListaDeNomes & MeuObjeto.NomeDaInstncia & Chr(13) Next MeuObjeto ' Exibe a lista de nomes em uma caixa de mensagem. MsgBox ListaDeNomes, , "Nomes de instncia na coleo MinhasClasses" For Num = 1 To MinhasClasses.Count ' Remove o nome da coleo. MinhasClasses.Remove 1 ' Como as colees so reindexadas ' automaticamente, remove o primeiro Next ' membro de cada iterao. End Sub Exemplo do objeto Err Este exemplo utiliza as propriedades do objeto Err na construo de uma caixa de dilogo de mensagem de erro. Observe que se voc utilizar primeiro o mtodo Clear, ao gerar um erro do Visual Basic com o mtodo Raise, os valores padro do Visual Basic se tornaro as propriedades do objeto Err. Dim Msg ' Se ocorrer um erro, construa uma mensagem de erro On Error Resume Next ' Adia o tratamento do erro. Err.Clear Err.Raise 6 ' Gera um erro "Sobrecarga". ' Procura pelo erro e, em seguida, exibe a mensagem. If Err.Number <> 0 Then Msg = "Erro # " & Str(Err.Number) & " foi gerado por " _ & Err.Source & Chr(13) & Err.Description MsgBox Msg, , "Erro", Err.Helpfile, Err.HelpContext End If

Objeto Collection
Um objeto Collection um conjunto de itens ordenados que podem ser referidos como uma unidade. Comentrios O objeto Collection proporciona uma forma conveniente de se fazer referncia a um grupo relacionado de itens como um objeto nico. Os itens, ou membros, de uma coleo precisam ser relacionados somente pelo fato de existirem em uma coleo. Os membros de uma coleo no precisam compartilhar o mesmo tipo de dados. Uma coleo pode ser criada da mesma forma que os outros objetos so criados. Por exemplo: Dim X As Nova Collection Depois de uma coleo ser criada, os membros podem ser adicionados usando-se o mtodo Add e removidos usando-se o mtodo Remove. Os membros especficos podem ser retornados da coleo usando-se o mtodo Item, enquanto toda a coleo pode ser iterada utilizando-se a instruo For Each...Next.

Objeto Debug
O objeto Debug envia a sada para a janela Imediato durante o tempo de execuo. Funes Internas

173

Objeto Err
Contm informaes sobre erros em tempo de execuo. Comentrios As propriedades do objeto Err so definidas pelo gerador de um erro o Visual Basic, um objeto ou um programador de Visual Basic. A propriedade padro do objeto Err Number. Como a propriedade padro pode ser representada pelo nome do objeto Err, o cdigo escrito anteriormente utilizando a funo Err ou a instruo Err no precisa ser modificado. Quando ocorre um erro em tempo de execuo as propriedades do objeto Err so preenchidas com informaes que identificam o erro de forma exclusiva e informaes que podem ser utilizadas para manipular esse erro. Para gerar um erro em tempo de execuo em seu cdigo, use o mtodo Raise. As propriedades do objeto Err so redefinidas como zero ou seqncias de comprimento zero ("") aps qualquer forma da instruo Resume ou On Error e aps uma instruo Exit Sub, Exit Function ou Exit Property dentro de uma rotina de manipulao de erro. O mtodo Clear pode ser usado para redefinir Err de forma explcita. Use o mtodo Raise, em vez da instruo Error, para gerar erros de tempo de execuo para um mdulo de classe. Usar o mtodo Raise em outro cdigo depende da riqueza das informaes que voc quer retornar. Em cdigos que utilizam instrues Error em vez do mtodo Raise para gerar erros, as propriedades do objeto Err so atribudas aos seguintes valores padro quando Error executado: Propriedade Valor Number Valor especificado como argumento para a instruo Error. Pode ser qualquer nmero de erro vlido. Source Nome do projeto atual do Visual Basic. Description Uma seqncia de caracteres correspondente ao retorno da funo Error para o Number especificado, se essa seqncia existir. Se no existir, a Description conter "Erro de definio de aplicativo ou de definio de objeto". HelpFile Unidade de disco, caminho e nome de arquivo completos do arquivo de Ajuda do Visual Basic. HelpContext Identificao do contexto do arquivo de Ajuda do Visual Basic referente ao erro correspondente propriedade Number. LastDLLError Somente em sistemas operacionais Microsoft Windows de 32 bits, contm o cdigo de erro de sistema referente ltima chamada a uma biblioteca de vnculo dinmico (DLL). A propriedade LastDLLError somente leitura. Voc no precisa alterar o cdigo existente que utiliza o objeto Err e a instruo Error. Contudo, utilizar o objeto Err e a instruo Error pode resultar em conseqncias no desejadas. Por exemplo, mesmo que voc preencha as propriedades referentes ao objeto Err, elas sero redefinidas com os valores padro indicados na tabela anterior assim que a instruo Error for executada. Embora voc possa utilizar a instruo Error para gerar erros em tempo de execuo do Visual Basic, ela retida principalmente para haver compatibilidade com o cdigo existente. Utilize o objeto Err, o mtodo Raise e o mtodo Clear para os erros do sistema e em cdigo novo, especialmente para mdulos de classe. O objeto Err um objeto intrnseco com escopo global. No h necessidade de se criar uma instncia dele em seu cdigo. Exemplo do operador ^ Este exemplo utiliza o operador ^ para elevar um nmero potncia de um expoente. Dim MeuValor MeuValor = 2 ^ 2 ' Retorna 4. MeuValor = 3 ^ 3 ^ 3 ' Retorna 19683. MeuValor = (-5) ^ 3 ' Retorna -125. Exemplo do operador + Este exemplo utiliza o operador + para somar nmeros. O operador + tambm pode ser utilizado para concatenar seqncias de caracteres. Entretanto, para eliminar a ambigidade, voc deve utilizar o operador & em seu lugar. Se os componentes de uma expresso criada com o operador + inclurem tanto seqncias de caracteres como numricas, ser atribudo o resultado aritmtico. Se os componentes forem exclusivamente seqncias de caracteres, as seqncias de caracteres sero concatenadas. Dim MeuNmero, Var1, Var2 MeuNmero = 2 + 2 ' Retorna 4. MeuNmero = 4257.04 + 98112 ' Retorna 102369,04. Var1 = "34": Var2 = 6 ' Inicializa variveis mistas. MeuNmero = Var1 + Var2 ' Retorna 40. Var1 = "34": Var2 = "6" ' Inicializa variveis com seqncias de caracteres. MeuNmero = Var1 + Var2 ' Retorna "346" (concatenao de seqncias de caracteres).

Funes Internas

174

Exemplo do operador Este exemplo utiliza o operador - para calcular a diferena entre dois nmeros. Dim MeuResultado MeuResultado = 4 - 2 ' Retorna 2. MeuResultado = 459.35 - 334.90' Retorna 124,45. Exemplo do operador * Este exemplo utiliza o operador * para multiplicar dois nmeros. Dim MeuValor MeuValor = 2 * 2 ' Retorna 4. MeuValor = 459.35 * 334.90 ' Retorna 153836,315. Exemplo do operador / Este exemplo utiliza o operador / para executar diviso de vrgula flutuante. Dim MeuValor MeuValor = 10 / 4 ' Retorna 2,5. MeuValor = 10 / 3 ' Retorna 3,333333. Exemplo do operador \ Este exemplo utiliza o operador \ para executar a diviso de inteiros. Dim MeuValor MeuValor = 11 \ 4 ' Retorna 2. MeuValor = 9 \ 3 ' Retorna 3. MeuValor = 100 \ 3 ' Retorna 33. Exemplo do operador Mod Este exemplo utiliza o operador Mod para dividir dois nmeros e retornar somente o resto. Se algum dos nmeros for de vrgula flutuante, ele ser primeiro arredondado para inteiro. Dim MeuResultado MeuResultado = 10 Mod 5 ' Retorna 0. MeuResultado = 10 Mod 3 ' Retorna 1. MeuResultado = 12 Mod 4.3 ' Retorna 0. MeuResultado = 12.6 Mod 5 ' Retorna 3. Exemplo do operador & Este exemplo utiliza o operador & para forar a concatenao de seqncias de caracteres. Dim MinhaSeq MinhaSeq = "Al" & " Mundo" ' Retorna "Al Mundo". MinhaSeq = "Controle " & 123 & " Controle" ' Retorna "Controle 123 Controle".

Funes Internas

175

Exemplo de operadores de comparao Este exemplo mostra vrios usos dos operadores de comparao, que voc utiliza para comparar expresses. Dim MeuResultado, Var1, Var2 MeuResultado = (45 < 35) ' Retorna False. MeuResultado = (45 = 45) ' Retorna True. MeuResultado = (4 <> 3) ' Retorna True. MeuResultado = ("5" > "4") ' Retorna True. Var1 = "5": Var2 = 4 ' Inicializa as variveis. MeuResultado = (Var1 > Var2) ' Retorna True. Var1 = 5: Var2 = Empty MeuResultado = (Var1 > Var2) Var1 = 0: Var2 = Empty MeuResultado = (Var1 = Var2) Exemplo do operador And Este exemplo utiliza o operador And para executar uma conjuno lgica em duas expresses. Dim A, B, C, D, MeuControle A = 10: B = 8: C = 6: D = Null ' Inicializa as variveis. MeuControle = A > B And B > C ' Retorna True. MeuControle = B > A And B > C ' Retorna False. MeuControle = A > B And B > D ' Retorna Null. MeuControle = A And B ' Retorna 8 (comparao bit a bit). Exemplo do operador Eqv Este exemplo utiliza o operador Eqv para executar a equivalncia lgica em duas expresses. Dim A, B, C, D, MeuControle A = 10: B = 8: C = 6: D = Null ' Inicializa as variveis. MeuControle = A > B Eqv B > C ' Retorna True. MeuControle = B > A Eqv B > C ' Retorna False. MeuControle = A > B Eqv B > D ' Retorna Null. MeuControle = A Eqv B ' Retorna -3 (comparao bit a bit). Exemplo do operador Imp Este exemplo utiliza o operador Imp para executar a implicao lgica em duas expresses. Dim A, B, C, D, MeuControle A = 10: B = 8: C = 6: D = Null ' Inicializa as variveis. MeuControle = A > B Imp B > C ' Retorna True. MeuControle = A > B Imp C > B ' Retorna False. MeuControle = B > A Imp C > B ' Retorna True. MeuControle = B > A Imp C > D ' Retorna True. MeuControle = C > D Imp B > A ' Retorna Null. MeuControle = B Imp A ' Retorna -1 (comparao bit a bit). ' Retorna True. ' Retorna True.

Funes Internas

176

Exemplo do operador Not Este exemplo utiliza o operador Not para executar a negao lgica em uma expresso. Dim A, B, C, D, MeuControle A = 10: B = 8: C = 6: D = Null ' Inicializa as variveis. MeuControle = Not(A > B) ' Retorna False. MeuControle = Not(B > A) ' Retorna True. MeuControle = Not(C > D) ' Retorna Null. MeuControle = Not A ' Retorna -11 (comparao bit a bit). Exemplo do operador Or Este exemplo utiliza o operador Or para executar a disjuno lgica em duas expresses. Dim A, B, C, D, MeuControle A = 10: B = 8: C = 6: D = Null ' Inicializa as variveis MeuControle = A > B Or B > C ' Retorna True. MeuControle = B > A Or B > C ' Retorna True. MeuControle = A > B Or B > D ' Retorna True. MeuControle = B > D Or B > A ' Retorna Null. MeuControle = A Or B ' Retorna 10 (comparao bit a bit). Exemplo do operador Xor Este exemplo utiliza o operador Xor para executar a excluso lgica em duas expresses. Dim A, B, C, D, MeuControle A = 10: B = 8: C = 6: D = Null ' Inicializa as variveis. MeuControle = A > B Xor B > C ' Retorna False. MeuControle = B > A Xor B > C ' Retorna True. MeuControle = B > A Xor C > B ' Retorna False. MeuControle = B > D Xor A > B ' Retorna Null. MeuControle = A Xor B ' Retorna 2 (comparao bit a bit). Exemplo do operador Like Este exemplo utiliza o operador Like para comparar uma seqncia de caracteres com um padro. Dim MeuControle MeuControle = "aBBBa" Like "a*a" ' Retorna True. MeuControle = "F" Like "[A-Z]" ' Retorna True. MeuControle = "F" Like "[!A-Z]" ' Retorna False. MeuControle = "a2a" Like "a#a" ' Retorna True. MeuControle = "aM5b" Like "a[L-P]#[!c-e]"' Retorna True. MeuControle = "BAT123khg" Like "B?T*" ' Retorna True. MeuControle = "CAT123khg" Like "B?T*" ' Retorna False. Exemplo do operador Is Este exemplo utiliza o operador Is para comparar duas referncias a objeto. Os nomes de variveis de objeto so genricos e usados somente com finalidade ilustrativa. Dim MeuObjeto, SeuObjeto, EsteObjeto, OutroObjeto, AqueleObjeto, MeuControle Set SeuObjeto = MeuObjeto ' Atribui referncias a objeto. Set EsteObjeto = MeuObjeto Set AqueleObjeto = OutroObjeto MeuControle = SeuObjeto Is EsteObjeto ' Retorna True. MeuControle = AqueleObjeto Is EsteObjeto ' Retorna False. ' Pressupe que MeuObjeto <> OutroObjeto MeuControle = MeuObjeto Is AqueleObjeto ' Retorna False.

Resumo de operadores
Operadores Operadores aritmticos Operadores de comparao Operadores de concatenao Operadores lgicos Descrio Operadores utilizados para efetuar clculos matemticos. Operadores utilizados para efetuar comparaes. Operadores utilizados para combinar seqncias de caracteres. Operadores utilizados para efetuar operaes lgicas.

Precedncia de operadores
Quando diversas operaes ocorrem em uma expresso, cada parte avaliada e resolvida em uma ordem predeterminada chamada precedncia de operadores. Quando as expresses contm operadores de mais de uma categoria, os operadores aritmticos so avaliados em primeiro lugar, seguidos pelos operadores de comparao e, finalmente, pelos operadores lgicos. Os operadores de comparao apresentam todos a mesma precedncia, ou seja, so avaliados da esquerda para a direita na ordem em que aparecem. Os operadores lgicos e os aritmticos so avaliados na ordem de precedncia a seguir:

Funes Internas

177

Aritmticos

De comparao

Lgicos Not And Or Xor Eqv Imp

Exponenciao (^) Igualdade (=) Negao () Desigualdade (<>) Multiplicao e diviso (*, /) Menor que (<) Diviso de inteiros (\) Maior que (>) Mdulo aritmtico (Mod) Menor que ou igual a (<=) Adio e subtrao (+, ) Maior que ou igual a (>=) Concatenao de seqncias deLike caracteres (&) Is

Quando a multiplicao e a diviso ocorrem ao mesmo tempo em uma expresso, cada operao avaliada medida que ela ocorre da esquerda para a direita. Quando a adio e a subtrao ocorrem ao mesmo tempo em uma expresso, cada operao avaliada na ordem em que aparece da esquerda para a direita. Parnteses podem ser utilizados para ignorar a ordem de precedncia e fazer com que algumas partes da expresso sejam avaliadas antes de outras. As operaes entre parnteses so sempre executadas antes daquelas que se encontram fora deles. Dentro dos parnteses, contudo, a precedncia de operadores mantida. O operador de concatenao de seqncias de caracteres (&) no um operador aritmtico, mas segue todos os operadores aritmticos e precede todos os operadores de comparao. O operador Like apresenta a mesma precedncia de todos os operadores de comparao, mas , na verdade, um operador de correspondncia de padro. O operador Is um operador de comparao de referncia de objeto. Ele no compara objetos ou seus valores; somente verifica e determina se duas referncias de objeto referem-se a um mesmo objeto.

Funes Internas

178

Operador ^
Utilizado para elevar um nmero potncia de um expoente. Sintaxe resultado = nmero^expoente A sintaxe do operador ^ possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. nmero Obrigatrio; qualquer expresso numrica. expoente Obrigatrio; qualquer expresso numrica. Comentrios Um nmero pode ser negativo somente se expoente for um valor inteiro. Quando mais de uma exponenciao efetuada em uma nica expresso, o operador ^ avaliado medida que encontrado da esquerda para a direita. Em geral, o tipo de dados de resultado um Double ou um Variant contendo um Double. No entanto, se nmero ou expoente for uma expresso Null, resultado ser Null.

Operador +
Utilizado para somar dois nmeros. Sintaxe resultado = expresso1+expresso2 A sintaxe do operador + possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios Quando voc utiliza o operador +, pode no ser capaz de determinar se ocorrer a adio ou a concatenao de seqncias de caracteres. Utilize o operador & para a concatenao de forma a eliminar a ambigidade e fornecer cdigo autodocumentvel. Se pelo menos uma expresso no for Variant, as regras a seguir se aplicam: Se Ento Ambas as expresses so tipos de dados numricosAdiciona. (Byte, Boolean, Integer, Long, Single, Double, Date, Currency ou Decimal) Ambas as expresses so String Concatena. Uma expresso for um tipo de dados numrico e aAdiciona. outra for qualquer Variant exceto Null Uma expresso for um String e a outra for qualquer Concatena. Variant exceto Null Uma expresso for um Variant Empty Retorna a outra expresso inalterada como resultado. Uma expresso for um tipo de dados numrico e aUm erro Type mismatch ocorre. outra for um String Qualquer uma das expresses for Null resultado Null. Se ambas as expresses forem Variant, as regras a seguir se aplicam: Se Ento Ambas as expresses Variant forem numricas Adiciona. Ambas as expresses Variant forem seqncias deConcatena. caracteres Uma expresso Variant for numrica e a outra for uma Adiciona. seqncia de caracteres Para uma adio aritmtica simples envolvendo somente expresses de tipos de dados numricos, o tipo de dados de resultado geralmente o mesmo da expresso mais precisa. A ordem de preciso, da menos para a mais precisa, Byte, Integer, Long, Single, Double, Currency e Decimal. A seguir so apresentadas excees a essa ordem: Se Ento resultado ser Um Single e um Long so adicionados, um Double. O tipo de dados de resultado for umaconvertido a uma variante de Double. variante de Long, Single ou Date que ultrapasse o intervalo permitido, O tipo de dados de resultado for umaconvertido a uma variante de Integer. variante de Byte que ultrapasse o intervalo permitido, O tipo de dados de resultado for umaconvertido a uma variante de Long. variante de Integer que ultrapasse o intervalo permitido, Uma Date for adicionada a qualquer tipo deum Date. dados,

Funes Internas

179

Se uma ou ambas as expresses forem Null, resultado ser Null. Se ambas as expresses forem Empty, resultado ser um Integer. No entanto, se somente uma expresso for Empty, a outra ser retornada inalterada como resultado. Observao A ordem de preciso utilizada para adio e subtrao no a mesma utilizada pela multiplicao.

Operador
Utilizado para encontrar a diferena entre dois nmeros ou para indicar o valor negativo em uma expresso numrica. Sintaxe 1 resultado = nmero1nmero2 Sintaxe 2 nmero A sintaxe do operador possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. nmero Obrigatrio; qualquer expresso numrica. nmero1 Obrigatrio; qualquer expresso numrica. nmero2 Obrigatrio; qualquer expresso numrica. Comentrios Em Sintaxe 1, o operador o operador aritmtico de subtrao utilizado para encontrar a diferena entre dois nmeros. Em Sintaxe 2, o operador utilizado como operador de negao unrio para indicar o valor negativo de uma expresso. O tipo de dados de resultado geralmente o mesmo da expresso mais precisa. A ordem de preciso, da menos para a mais precisa, Byte, Integer, Long, Single, Double, Currency e Decimal. A seguir esto algumas excees a essa ordem: Se Ento resultado ser A subtrao envolve um Single e um Long, convertido para Double. O tipo de dados de resultado for um varianteconvertido para um Variant que contm um de Long, Single ou Date que ultrapasse oDouble. intervalo permitido, O tipo de dados de resultado for umaconvertido para uma variante de Integer. variante de Byte que ultrapasse o intervalo permitido, O tipo de dados de resultado for umaconvertido para uma variante de Long. variante de Integer que ultrapasse o intervalo permitido, A subtrao envolve um Date e qualquerum Date. outro tipo de dados, A subtrao envolve duas expresses Date, um Double. Se uma ou ambas as expresses forem Null, resultado ser Null. Se uma expresso for Empty, ela ser tratada como 0. Observao A ordem de preciso utilizada pela adio e subtrao no a mesma utilizada pela multiplicao.

Operador *
Utilizado para multiplicar dois nmeros. Sintaxe resultado = nmero1*nmero2 A sintaxe do operador * possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. nmero1 Obrigatrio; qualquer expresso numrica. nmero2 Obrigatrio; qualquer expresso numrica. Comentrios O tipo de dados de resultado geralmente o mesmo da expresso mais precisa. A ordem de preciso, da menos para a mais precisa, Byte, Integer, Long, Single, Currency, Double e Decimal. A seguir esto algumas excees a essa ordem: Se Ento resultado ser A multiplicao envolve um Single e um Long, convertido para um Double. O tipo de dados de resultado for uma variante deconvertido para um Variant contendo Long, Single ou Date que ultrapasse o intervalo Double. permitido, O tipo de dados de resultado for uma variante deconvertido para uma variante de Integer. Byte que ultrapasse o intervalo permitido, O tipo de dados de resultado for uma variante deconvertido para uma variante de Long. Integer que ultrapasse o intervalo permitido, um

Se uma ou ambas as expresses forem Null, resultado ser Null. Se uma expresso for Empty, ela ser tratada como 0. Observao A ordem de preciso utilizada pela multiplicao no a mesma utilizada pela adio e subtrao.

Funes Internas

180

Operador /
Utilizado para dividir dois nmeros e retornar um resultado de vrgula flutuante. Sintaxe resultado = nmero1/nmero2 A sintaxe do operador / possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. nmero1 Obrigatrio; qualquer expresso numrica. nmero2 Obrigatrio; qualquer expresso numrica. Comentrios O tipo de dados de resultado geralmente um Double ou uma variante de Double. A seguir so apresentadas excees a essa regra: Se Ento resultado ser Ambas as expresses forem expressesSingle, a menos que ele ultrapasse o Byte, Integer ou Single, intervalo permitido; nesse caso, um erro ser gerado. Ambas as expresses forem variantes deuma variante de Single, a menos que ela Byte, Integer ou Single, ultrapasse o intervalo permitido; nesse caso, resultado ser um Variant contendo um Double. A diviso envolver um Decimal e qualquerum tipo de dados Decimal. outro tipo de dados, Se uma ou ambas as expresses forem Null, resultado ser Null. Qualquer expresso que seja Empty ser tratada como 0.

Operador \
Utilizado para dividir dois nmeros e retornar um resultado inteiro. Sintaxe resultado = nmero1\nmero2 A sintaxe do operador \ possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. nmero1 Obrigatrio; qualquer expresso numrica. nmero2 Obrigatrio; qualquer expresso numrica. Comentrios Antes de a diviso ser realizada, as expresses numricas so arredondadas para expresses Byte, Integer ou Long. Em geral, o tipo de dados de resultado um Byte, uma variante de Byte, um Integer, uma variante de Integer, um Long ou uma variante de Long, independente de resultado ser um nmero inteiro. Qualquer parte fracionria truncada. No entanto, se qualquer expresso for Null, resultado ser Null. Qualquer expresso que seja Empty ser tratada como 0.

Operador Mod
Utilizado para dividir dois nmeros e retornar somente o resto. Sintaxe resultado = nmero1 Mod nmero2 A sintaxe do operador Mod possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. nmero1 Obrigatrio; qualquer expresso numrica. nmero2 Obrigatrio; qualquer expresso numrica. Comentrios O operador de mdulo, ou resto, divide nmero1 por nmero2 (arredondando nmeros de vrgula flutuante para inteiros) e retorna somente o resto como resultado. Por exemplo, na expresso a seguir, A (resultado) igual a 5. A = 19 Mod 6.7 Geralmente, o tipo de dados de resultado um Byte, uma variante de Byte, um Integer, uma variante de Integer, um Long ou uma Variant contendo um Long, independente de resultado ser um nmero inteiro ou no. Qualquer parte fracionria truncada. No entanto, se qualquer expresso for Null, resultado ser Null. Qualquer expresso que seja Empty ser tratada como 0.

Operador &
Utilizado para forar a concatenao de seqncias de caracteres de duas expresses.

Funes Internas

181

Sintaxe resultado = expresso1 & expresso2 A sintaxe do operador & possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel String ou Variant. expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios Se uma expresso no for uma seqncia de caracteres, ela ser convertida para uma variante de String. O tipo de dados de resultado String se ambas as expresses forem expresses de seqncia de caracteres; caso contrrio, resultado ser uma variante de String. Se ambas as expresses forem Null, resultado ser Null. No entanto, se somente uma expresso for Null, essa expresso ser tratada como uma seqncia de caracteres de comprimento zero ("") quando concatenada com outra expresso. Qualquer expresso que seja Empty tratada tambm como uma seqncia de caracteres de comprimento zero.

Funes Internas

182

Operadores de comparao
Utilizados para comparar expresses. Sintaxe resultado = expresso1 operadordecomparao expresso2 resultado = objeto1 Is objeto2 resultado = seqnciadecaracteres Like padro Os operadores de comparao possuem as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. expresso Obrigatrio; qualquer expresso. operadordecomparao Obrigatrio; qualquer operador de comparao. objeto Obrigatrio; qualquer nome de objeto. seqnciadecaracteres Obrigatrio; qualquer expresso de seqncia caracteres. padro Obrigatrio; qualquer expresso de seqncia caracteres ou intervalo de caracteres.

de de

Comentrios A tabela a seguir contm uma lista dos operadores de comparao e as condies que determinam se resultado True, False ou Null: Operador True se False se Null se < (Menor que) expresso1 <expresso1 >=expresso1 ou expresso2 expresso2 expresso2 = Null <= (Menor que ouexpresso1 <=expresso1 >expresso1 ou igual a) expresso2 expresso2 expresso2 = Null > (Maior que) expresso1 >expresso1 <=expresso1 ou expresso2 expresso2 expresso2 = Null >= (Maior que ouexpresso1 >=expresso1 <expresso1 ou igual a) expresso2 expresso2 expresso2 = Null = (Igual a) expresso1 =expresso1 <>expresso1 ou expresso2 expresso2 expresso2 = Null <> (Diferente de) expresso1 <>expresso1 =expresso1 ou expresso2 expresso2 expresso2 = Null Observao Os operadores Is e Like apresentam uma funcionalidade de comparao especfica que os diferencia dos operadores dessa tabela. Ao comparar duas expresses, voc pode no ser capaz de determinar com facilidade se as expresses esto sendo comparadas como nmeros ou como seqncias de caracteres. A tabela a seguir mostra como as expresses so comparadas ou o resultado quando uma das expresses no um Variant: Se Ento Ambas as expresses so tipos de dados Efetuam uma comparao numrica. numricos (Byte, Boolean, Integer, Long, Single, Double, Date, Currency ou Decimal) Ambas as expresses so String Efetuam uma comparao de seqncias de caracteres. Uma expresso um tipo de dados Efetuam uma comparao numrica. numrico e a outra um Variant que , ou pode ser, um nmero Uma expresso um tipo de dados Um erro Type Mismatch ocorre. numrico e a outra um Variant de seqncia de caracteres que no pode ser convertido para um nmero Uma expresso um String e a outra Efetuam uma comparao de qualquer Variant exceto Null seqncias de caracteres. Uma expresso Empty e a outra um Efetuam uma comparao numrica, tipo de dados numrico utilizando 0 como a expresso Empty. Uma expresso Empty e a outra um Efetuam uma comparao de String seqncias de caracteres, utilizando uma seqncia de caracteres de comprimento zero ("") como a expresso Empty. Se tanto expresso1 quanto expresso2 so expresses Variant, seus tipos bsicos determinam como elas sero comparadas. A tabela a seguir mostra como as expresses so comparadas ou o resultado da comparao, dependendo do tipo bsico da Variant: Se Ento Ambas as expresses Variant so Efetuam uma comparao numrica. numricas Ambas as expresses Variant so Efetuam uma comparao de

Funes Internas

183

seqncias de caracteres Uma expresso Variant numrica e a outra uma seqncia de caracteres Uma expresso Variant Empty e a outra numrica Uma expresso Variant Empty e a outra uma seqncia de caracteres

Ambas as expresses Variant so Empty

seqncias de caracteres. A expresso numrica menor que a expresso de seqncia de caracteres. Efetuam uma comparao numrica, utilizando 0 como a expresso Empty. Efetuam uma comparao de seqncia de caracteres, utilizando uma seqncia de caracteres de comprimento zero ("") como a expresso Empty. As expresses so iguais.

Quando um Single comparado a um Double, o Double arredondado preciso de Single. Se um Currency comparado com um Single ou Double, Single ou Double convertido para um Currency. Da mesma forma, quando um Decimal comparado com um Single ou Double, o Single ou Double convertido para um Decimal. Para Currency, qualquer valor fracionrio menor que 0,0001 pode ser perdido; para Decimal, qualquer valor fracionrio menor que 1E-28 pode ser perdido ou um erro de sobrecarga pode ocorrer. Essa perda de valores fracionais pode fazer com que dois valores sejam considerados iguais quando na verdade no o so.

Operador And
Utilizado para efetuar uma conjuno lgica em duas expresses. Sintaxe resultado = expresso1 And expresso2 A sintaxe do operador And possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios Se ambas as expresses forem avaliadas como True, resultado ser True. Se uma das expresses for avaliada como False, resultado ser False. A tabela a seguir mostra como resultado determinado: Se expresso1 for E expresso2 for O resultado ser True True True True False False True Null Null False True False False False False False Null False Null True Null Null False False Null Null Null O operador And tambm efetua uma comparao bit-a-bit dos bits posicionados da mesma forma em duas expresses numricas e define o bit correspondente em resultado de acordo com a tabela a seguir: Se o bit naE o bit na expresso2O resultado ser expresso1 for for 0 0 0 0 1 0 1 0 0 1 1 1

Operador Eqv
Utilizado para efetuar uma equivalncia lgica em duas expresses. Sintaxe resultado = expresso1 Eqv expresso2 A sintaxe do operador Eqv possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios Se uma das expresses for Null, resultado tambm ser Null. Se nenhuma das expresses for Null, resultado ser determinado de acordo com a tabela a seguir: Se expresso1 for E expresso2 for O resultado ser True True True True False False False True False

Funes Internas

184

False

False

True

O operador Eqv executa uma comparao bit-a-bit dos bits posicionados da mesma forma em duas expresses numricas e define o bit correspondente em resultado de acordo com a tabela a seguir: Se o bit naE o bit na expresso2O resultado ser expresso1 for for 0 0 1 0 1 0 1 0 0 1 1 1

Operador Imp
Utilizado para efetuar uma implicao lgica em duas expresses. Sintaxe resultado = expresso1 Imp expresso2 A sintaxe do operador Imp possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios A tabela a seguir mostra como resultado determinado: Se expresso1 for E expresso2 for True True True False True Null False True False False False Null Null True Null False Null Null

O resultado ser True False Null True True True True Null Null

O operador Imp efetua uma comparao bit-a-bit dos bits posicionados da mesma forma em duas expresses numricas e define o bit correspondente em resultado de acordo com a tabela a seguir: Se o bit na expresso1 for E o bit na expresso2 for O resultado ser 0 0 1 0 1 1 1 0 0 1 1 1

Funes Internas

185

Operador Not
Utilizado para efetuar uma negao lgica em uma expresso. Sintaxe resultado = Not expresso A sintaxe do operador Not possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. expresso1 Obrigatrio; qualquer expresso. Comentrios A tabela a seguir mostra como resultado determinado: Se expresso for Ento resultado ser True False False True Null Null Alm disso, o operador Not inverte os valores de bit de qualquer varivel e define o bit correspondente em resultado de acordo com a tabela a seguir: Se o bit naEnto o bit em resultado expresso for ser 0 1 1 0

Operador Or
Utilizado para efetuar uma disjuno lgica em duas expresses. Sintaxe resultado = expresso1 Or expresso2 A sintaxe do operador Or possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios Se uma ou ambas as expresses forem True, resultado ser True. A tabela a seguir mostra como resultado determinado: Se expresso1 for E expresso2 for Ento resultado ser True True True True False True True Null True False True True False False False False Null Null Null True True Null False Null Null Null Null O operador Or tambm efetua uma comparao bit-a-bit dos bits posicionados da mesma forma em duas expresses numricas e define o bit correspondente em resultado de acordo com a tabela a seguir: Se o bit naE o bit naEnto resultado ser expresso1 for expresso2 for 0 0 0 0 1 1 1 0 1 1 1 1

Operador Xor
Utilizado para efetuar uma excluso lgica em duas expresses. Sintaxe [resultado =] expresso1 Xor expresso2 A sintaxe do operador Xor possui as partes a seguir: Parte Descrio resultado Opcional; qualquer varivel numrica. expresso1 Obrigatrio; qualquer expresso. expresso2 Obrigatrio; qualquer expresso. Comentrios

Funes Internas

186

Se uma, e somente uma, das expresses resultar em True, resultado ser True. No entanto, se uma das expresses for Null, resultado tambm ser Null. Quando nenhuma das expresses for Null, resultado ser determinado de acordo com a tabela a seguir: Se expresso1 for E expresso2 for Ento resultado ser True True False True False True False True True False False False O operador Xor funciona tanto como um operador lgico quanto bit-a-bit. Uma comparao bit-a-bit de duas expresses utilizando Xor lgico para definir o resultado, como mostrado na tabela a seguir: Se o bit naE o bit naO resultado ser expresso1 for expresso2 for 0 0 1 1 0 1 0 1 0 1 1 0

Funes Internas

187

Operador Is
Utilizado para comparar duas variveis de referncia de objeto. Sintaxe resultado = objeto1 Is objeto2 A sintaxe do operador Is possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. objeto1 Obrigatrio; qualquer nome de objeto. objeto2 Obrigatrio; qualquer nome de objeto. Comentrios Se tanto objeto1 quanto objeto2 referem-se ao mesmo objeto, resultado ser True; caso contrrio, resultado ser False. Duas variveis podem se referir ao mesmo objeto de diversas formas. No exemplo a seguir, A foi definido de forma a se referir ao mesmo objeto que B: Set A = B O exemplo a seguir faz com que A e B se refiram ao mesmo objeto que C: Set A = C Set B = C

Operador Like
Utilizado para comparar duas seqncias de caracteres. Sintaxe resultado = seqnciadecaracteres Like padro A sintaxe do operador Like possui as partes a seguir: Parte Descrio resultado Obrigatrio; qualquer varivel numrica. seqnciadecaracteres Obrigatrio; qualquer expresso de seqncia de caracteres. padro Obrigatrio; qualquer expresso de seqncia de caracteres que esteja de acordo com as convenes de correspondncia de padro descritas em "Comentrios". Comentrios Se seqnciadecaracteres corresponder a padro, resultado ser True; caso contrrio, resultado ser False. Se seqnciadecaracteres ou padro for Null, resultado ser Null. O comportamento do operador Like depende da instruo Option Compare. O mtodo padro de comparao de seqncias de caracteres para cada mdulo Option Compare Binary. Option Compare Binary resulta em comparaes de seqncias de caracteres baseadas em uma ordem de classificao derivada das representaes binrias internas dos caracteres. No Microsoft Windows, a ordem de classificao determinada pela pgina de cdigo. No exemplo a seguir, uma ordem de classificao binria tpica apresentada: A<B<E<Z<a<b<e<z<<<<<< Option Compare Text resulta em comparaes de seqncias de caracteres baseadas em uma ordem de classificao textual, sem coincidir maisculas ou minsculas, determinada pela localidade de seu sistema. Quando voc classifica os mesmos caracteres utilizando Option Compare Text, o seguinte texto de ordem de classificao produzido: (A=a) < (=) < (B=b) < (E=e) < (=) < (Z=z) < (=) A correspondncia de padro interna representa uma ferramenta verstil para comparaes de seqncias de caracteres. Os recursos de correspondncia de padro permitem que voc utilize caracteres curinga, listas de caracteres ou intervalos de caracteres, em qualquer combinao, para fazer a correspondncia de seqncias de caracteres. A tabela a seguir mostra os caracteres permitidos em padro e a o que eles correspondem: Caracteres emCorrespondem na seqnciadecaracteres a padro ? Qualquer caractere nico. * Zero ou mais caracteres. # Qualquer dgito nico (09). [listadecarac] Qualquer caractere nico em listadecarac. [!listadecarac] Qualquer caractere nico que no esteja em listadecarac. Um grupo de um ou mais caracteres (listadecarac) entre colchetes ([ ]) pode ser utilizado para corresponder a qualquer caractere nico em seqnciadecaracteres e pode incluir quase qualquer cdigo de caractere, incluindo dgitos. Observao Para fazer a correspondncia dos caracteres especiais colchete esquerdo ([), ponto de interrogao (?),nmero (#) e asterisco (*), coloque-os entre colchetes. O colchete direito (]) no pode ser utilizado dentro de um grupo para corresponder a si prprio, mas pode ser utilizado fora de um grupo como um caractere individual. Ao utilizar um hfen () para separar os limites superior e inferior do intervalo, listadecarac pode especificar um intervalo de caracteres. Por exemplo, [A-Z] resulta em uma correspondncia se a posio do caractere correspondente em seqnciadecaracteres contiver qualquer letra em caixa alta no intervalo de AZ. Intervalos mltiplos so includos entre os colchetes sem delimitadores.

Funes Internas

188

O significado de um intervalo especificado depende da ordem dos caracteres vlida em tempo de execuo (como determinado por Option Compare e pela definio da localidade do sistema no qual o cdigo est sendo executado). Utilizando o exemplo de Option Compare Binary, o intervalo de [AE] corresponde a A, B e E. Com Option Compare Text, [AE] corresponde a A, a, , , B, b, E, e. O intervalo no corresponde a ou porque caracteres acentuados situam-se aps caracteres no acentuados na ordem de classificao. Outras regras importantes para a correspondncia de padro incluem: Um ponto de exclamao (!) no incio de listadecarac significa que uma correspondncia realizada se qualquer caractere, com exceo daqueles em listadecarac, for encontrado em seqnciadecaracteres. Quando utilizado fora de colchetes, o ponto de exclamao corresponde a si mesmo. Um hfen () pode aparecer tanto no incio (aps um ponto de exclamao, se um for utilizado) quanto no final de listadecarac para corresponder a si mesmo. Em qualquer outra localizao, o hfen utilizado para identificar um intervalo de caracteres. Quando um intervalo de caracteres especificado, estes devem aparecer em uma ordem de classificao crescente (do menor para o maior). [A-Z] um padro vlido, mas [Z-A] no o . A seqncia de caracteres [] considerada uma seqncia de caracteres de comprimento zero (""). Em alguns idiomas, existem caracteres especiais no alfabeto que representam dois caracteres diferentes. Por exemplo, diversos idiomas utilizam o caractere "" para representar os caracteres "a" e "e" quando eles aparecem juntos. O operador Like reconhece a equivalncia entre o caractere especial nico e os dois caracteres individuais. Quando um idioma que utiliza um caractere especial especificado nas definies de localidade do sistema, uma ocorrncia do caractere especial nico em padro ou seqnciadecaracteres corresponde seqncia de dois caracteres equivalente na outra seqncia de caracteres. Da mesma forma, um caractere especial nico em padro entre colchetes (sozinho, em uma lista ou em um intervalo) corresponde seqncia de dois caracteres equivalente em seqnciadecaracteres. Exemplo da propriedade Count Este exemplo utiliza a propriedade Count do objeto Collection para especificar quantas iteraes so requeridas para remover todos os elementos da coleo MinhasClasses. Quando as colees so indexadas numericamente, a base 1 como padro. Como as colees so reindexadas automaticamente quando feita uma remoo, o cdigo a seguir remove o primeiro membro em cada iterao. Dim Num, MinhasClasses For Num = 1 To MinhasClasses.Count ' Remove o nome da coleo. MinhasClasses.Remove 1 ' Os ndices numricos da coleo padro Next ' comeam em 1. Exemplo da propriedade Description Este exemplo atribui uma mensagem definida pelo usurio propriedade Description do objeto Err. Err.Description = "No foi possvel acessar um objeto necessrio " _ & "para esta operao". Exemplo da propriedade HelpContext Este exemplo utiliza a propriedade HelpContext do objeto Err para mostrar o tpico da Ajuda do Visual Basic relativo ao erro Sobrecarga. Dim Msg Err.Clear On Error Resume Next Err.Raise 6 ' Gera o erro "Sobrecarga". If Err.Number <> 0 Then Msg = "Pressione F1 ou Ajuda para ver " & Err.HelpFile & " o tpico relativo ao" & _ " seguinte ContextoDaAjuda: " & Err.HelpContext MsgBox Msg, , "Erro: " & Err.Description, Err.HelpFile, _ Err.HelpContext End If Exemplo da propriedade HelpFile Este exemplo utiliza a propriedade HelpFile do objeto Err para iniciar o sistema de Ajuda do Microsoft Windows. Como padro, a propriedade HelpFile contm o nome do arquivo de Ajuda do Visual Basic. Dim Msg Err.Clear On Error Resume Next ' Suprime os erros por finalidade demonstrativa. Err.Raise 6 ' Gera o erro "Sobrecarga". Msg = "Pressione F1 ou Ajuda para ver " & Err.HelpFile & _ " o tpico relativo a este erro" MsgBox Msg, , "Erro: " & Err.Description,Err.HelpFile, Err.HelpContext

Funes Internas

189

Exemplo da propriedade LastDLLError Quando colado em um mdulo UserForm, o cdigo a seguir ocasiona a tentativa de chamar uma funo DLL. A chamada falha porque o argumento que passado (um ponteiro nulo) gera um erro e, em qualquer evento, a SQL no pode ser cancelada se no estiver sendo executada. O cdigo seguinte chamada verifica o retorno da chamada e, em seguida, impresso na propriedade LastDLLError do objeto Err para revelar o cdigo do erro. Private Declare Function SQLCancel Lib "ODBC32.dll" _ (ByVal hstmt As Long) As Integer Private Sub UserForm_Click() Dim ValRet ' Chama com argumento invlido. ValRet = SQLCancel(myhandle&) ' Procura pelo cdigo de erro SQL. If ValRet = -2 Then 'Exibe o cdigo de informaes. MsgBox "O cdigo do erro :" & Err.LastDllError End If End Sub Exemplo da propriedade Number O primeiro exemplo ilustra um uso tpico da propriedade Number em uma rotina de tratamento de erros. O segundo exemplo examina a propriedade Number do objeto Err para determinar se um erro retornado por um objeto de Automao foi definido pelo objeto ou se foi mapeado para um erro definido pelo Visual Basic. Observe que a constante vbObjectError um nmero negativo muito grande que um objeto adiciona ao seu prprio cdigo de erro para indicar que o erro definido pelo servidor. Portanto, subtra-lo de Err.Number o exclui do resultado. Se o erro for definido pelo objeto, o nmero base ser deixado em MeuErro, que exibido em uma caixa de mensagem junto com a fonte original do erro. Se Err.Number representa um erro do Visual Basic, ento o nmero do erro do Visual Basic exibido na caixa de mensagem. ' Uso tpico da propriedade Number Sub test() On Error GoTo out Dim x, y x = 1 / y ' Cria o erro de diviso por zero Exit Sub out: MsgBox Err.Number MsgBox Err.Description ' Procura pelo erro de diviso por zero If Err.Number = 11 Then y=y+1 End If Resume End Sub

' Utilizando a propriedade Number com um erro de um ' objeto de Automao Dim MeuErro, Msg ' Primeiro exclua a constante adicionada pelo objeto para indicar um dos ' seus prprios erros. MeuErro = Err.Number - vbObjectError ' Se voc subtrair a constante vbObjectError e o nmero continuar ' no intervalo 0-65,535, trata-se de um cdigo de erro definido pelo objeto. If MeuErro > 0 And MeuErro < 65535 Then Msg = "O objeto que voc acessou atribuiu este nmero ao erro: " _ & MeuErro & ". Quem deu origem ao erro foi: " _ & Err.Source & ". Pressione F1 para ver o tpico da Ajuda que deu origem". ' Caso contrrio, o nmero de erro do Visual Basic. Else Msg = "Este erro (# " & Err.Number & ") um nmero de erro do Visual Basic" & _ " Pressione o boto Ajuda ou F1 para obter o" _ & " tpico da Ajuda do Visual Basic sobre este erro. End If MsgBox Msg, , "Erro de objeto", Err.HelpFile, Err.HelpContext Exemplo da propriedade Source

Funes Internas

190

Este exemplo atribui a identificao Programtica de um objeto de Automao criado no Visual Basic varivel MeuCdigoDeObjeto e, em seguida, o atribui propriedade Source do objeto Err quando gera um erro com o mtodo Raise. Quando estiver tratando de erros, voc no deve usar a propriedade Source (nem nenhuma propriedade Err diferente de Number) programaticamente. O nico uso vlido de propriedades diferentes de Number a exibio de informaes ricas para um usurio final nos casos em que voc no conseguir tratar um erro. O exemplo assume que Aplicativo e MinhaClasse so referncias vlidas. Dim MinhaClasse, MeuCdigoDeObjeto, MeuArquivoDeAjuda, MeuContextoDeAjuda ' Um objeto do tipo MinhaClasse gera um erro e preenche todas as propriedades do objeto Err, ' incluindo Source, que recebe MeuCdigoDeObjeto, que uma ' combinao da propriedade Title do objeto App e da ' propriedade do objeto MinhaClasse. MeuCdigoDeObjeto = App.Title & "." & MinhaClasse.Name Err.Raise Number := vbObjectError + 894, Source := MeuCdigoDeObjeto, _ Description := "No foi possvel completar a sua tarefa", _ HelpFile := MeuArquivoDeAjuda, HelpContext := MeuContextoDeAjuda

Propriedade Calendar
Retorna ou configura um valor especificando o tipo de calendrio a ser usado com seu projeto. Voc pode usar uma das duas configuraes abaixo para Calendar: Configurao Valor Descrio vbCalGreg 0 Use o calendrio Gregoriano (padro). vbCalHijri 1 Use o calendrio Hijri. Observaes Voc somente pode configurar a propriedade Calendar atravs de programa. Por exemplo, para usar o calendrio Hijri, use: Calendar = vbCalHijri

Funes Internas

191

Propriedade Count
Retorna um Long (nmero inteiro longo) que contm o nmero de objetos de uma coleo. Somente leitura.

Propriedade Description
Retorna ou define uma expresso de seqncia de caracteres que contm uma seqncia de caracteres descritiva associada a um objeto. Leitura/gravao. Para o objeto Err, retorna ou define uma seqncia de caracteres descritiva associada a um erro. Comentrios A definio da propriedade Description consiste em uma breve descrio do erro. Utilize essa propriedade para alertar o usurio sobre um erro que voc no pode ou no deseja manipular. Quando gerar um erro definido pelo usurio, atribua uma breve descrio do erro propriedade Description. Se Description no estiver preenchida e o valor de Number corresponder a um erro em tempo de execuo do Visual Basic, a seqncia de caracteres retornada pela funo Error ser localizada em Description quando o erro for gerado.

Propriedade HelpContext
Retorna ou define uma expresso de seqncia de caracteres que contm a identificao de contexto de um tpico em um arquivo de Ajuda do Microsoft Windows. Leitura/gravao. Comentrios A propriedade HelpContext utilizada para exibir automaticamente o tpico de Ajuda especificado na propriedade HelpFile. Se tanto HelpFile quanto HelpContext estiverem vazios, o valor de Number ser selecionado. Se Number corresponder a um valor de erro em tempo de execuo do Visual Basic, a identificao de contexto da Ajuda do Visual Basic para o erro ser utilizada. Se o valor de Number no corresponder a um erro do Visual Basic, a tela de contedo do arquivo de Ajuda do Visual Basic ser exibida. Observao Voc deve colocar rotinas de manipulao de erros tpicos no seu aplicativo. Ao programar com um objeto, voc pode utilizar o arquivo de Ajuda do objeto para melhorar a qualidade da manipulao de erros ou para exibir uma mensagem significativa para seu usurio se o erro no for recupervel.

Propriedade HelpFile
Retorna ou define em uma expresso de seqncia de caracteres o caminho completo para um arquivo de Ajuda do Microsoft Windows. Leitura/gravao. Comentrios Se um arquivo de Ajuda for especificado em HelpFile, ele ser automaticamente chamado quando o usurio pressionar o boto Help (ou a tecla F1) na caixa de dilogo de mensagem de erro. Se a propriedade HelpContext contiver uma identificao de contexto vlida para o arquivo especificado, aquele tpico ser automaticamente exibido. Se nenhum HelpFile for especificado, o arquivo de Ajuda do Visual Basic ser exibido. Observao Voc deve colocar rotinas de manipulao de erros tpicos no seu aplicativo. Ao programar com um objeto, voc pode utilizar o arquivo de Ajuda do objeto para melhorar a qualidade da manipulao de erros ou para exibir uma mensagem significativa para seu usurio se o erro no for recupervel.

Funes Internas

192

Propriedade LastDLLError
Retorna um cdigo de erro de sistema produzido por uma chamada a uma biblioteca de vnculo dinmico (DLL). Somenteleitura. Comentrios A propriedade LastDLLError aplica-se somente a chamadas a DLL feitas a partir de cdigo do Visual Basic. Quando tal chamada feita, a funo chamada retorna um cdigo indicando xito ou falha, e a propriedade LastDLLError preenchida. Verifique a documentao das funes da DLL para determinar os valores de retorno que indicam xito ou falha. Sempre que o cdigo de falha retornado, o aplicativo do Visual Basic deve verificar imediatamente a propriedade LastDLLError. Nenhuma exceo levantada quando a propriedade LastDLLError est definida.

Propriedade Number
Retorna ou define um valor numrico que especifica um erro. Number a propriedade padro do objeto Err. Leitura/gravao. Comentrios Quando retornar um erro definido pelo usurio de um objeto, defina Err.Number adicionando o nmero que voc selecionou como cdigo de erro constante. vbObjectError. Por exemplo, para retornar o nmero 1051 como um cdigo de erro voc usaria o cdigo a seguir: Err.Raise Number := vbObjectError + 1051, Source:= "AlgumaClasse"

Propriedade Source
Retorna ou define uma expresso de seqncia de caracteres que especifica o nome do objeto ou aplicativo que originalmente gerou o erro. Leitura/gravao. Comentrios A propriedade Source especifica uma expresso de seqncia de caracteres que representa o objeto que gerou o erro; a expresso normalmente o nome de classe do objeto ou uma identificao programtica. Utilize Source para fornecer informaes quando seu cdigo no for capaz de manipular um erro gerado em um objeto acessado. Por exemplo, se voc acessar o Microsoft Excel e ele gerar um erro Division by zero, o Microsoft Excel define Err.Number para seu cdigo de erro correspondente e define Source como Excel.Application. Quando gerar um erro a partir do cdigo, Source ser a identificao programtica do seu aplicativo. Para mdulos de classe, Source deve conter um nome com a forma projeto.classe. Quando um erro inesperado ocorre em seu cdigo, a propriedade Source automaticamente preenchida. Para erros em um mdulo padro, Source contm o nome do projeto. Para erros em um mdulo de classe, Source contm um nome com a forma projeto.classe.

Funes Internas

193

Exemplo da instruo DeleteSetting O exemplo a seguir primeiro utiliza a instruo SaveSetting para criar entradas no Registro do Windows (ou no arquivo .ini nas plataformas Windows de 16 bits) para o aplicativo MeuAplicativo e, em seguida, utiliza a instruo DeleteSetting para remov-las. Como no h argumento key especificado, toda a seo excluda, incluindo o nome da seo e todas as suas chaves. ' Insere algumas definies no Registro. SaveSetting appname := "MeuAplicativo", section := "Inicializao", _ key := "Superior", setting := 75 SaveSetting "MeuAplicativo","Inicializao", "Esquerda", 50 ' Remove a seo e todas as suas definies do Registro. DeleteSetting "MeuAplicativo", "Inicializao" Exemplo da funo GetAllSettings Este exemplo primeiro utiliza a instruo SaveSetting para criar entradas no Registro do Windows (ou no arquivo .ini nas plataformas Windows de 16 bits) para o aplicativo especificado como appname e, em seguida, utiliza a funo GetAllSettings para exibir as configuraes. Observe que os nomes de aplicativo e os nomes de section no podem ser recuperados com GetAllSettings. Por fim, a instruo DeleteSetting remove as entradas do aplicativo. ' Variant para conter uma matriz bidimensional retornada por GetAllSettings ' Integer para conter o contador. Dim MinhasDefinies As Variant, DefiniesInt As Integer ' Insere algumas definies no Registro. SaveSetting appname := "MeuAplicativo", section := "Inicializao", _ key := "Superior", setting := 75 SaveSetting "MeuAplicativo","Inicializao", "Esquerda", 50 ' Recupera as definies. MinhasDefinies = GetAllSettings(appname := "MeuAplicativo", section := "Inicializao") For DefiniesInt = LBound(MinhasDefinies, 1) To UBound(MinhasDefinies, 1) Debug.Print MinhasDefinies(DefiniesInt, 0), MinhasDefinies(DefiniesInt, 1) Next DefiniesInt DeleteSetting "MeuAplicativo", "Inicializao" Exemplo da funo GetSetting Este exemplo primeiro utiliza a instruo SaveSetting para criar entradas no Registro do Windows (ou no arquivo .ini nas plataformas Windows de 16 bits) para o aplicativo especificado como appname e, em seguida, utiliza a funo GetSetting para exibir uma das definies. Como o argumento default especificado, algum valor certamente ser retornado. Observe que os nomes de section no podem ser recuperados com GetSetting. Por fim, a instruo DeleteSetting remove todas as entradas do aplicativo. ' Variant para conter uma matriz bidimensional retornada por GetSetting. Dim MinhasDefinies As Variant ' Insira algumas definies no Registro. SaveSetting "MeuAplicativo","Inicializao", "Superior", 75 SaveSetting "MeuAplicativo","Inicializao", "Esquerda", 50 Debug.Print GetSetting(appname := "MeuAplicativo", section := "Inicializao", _ key := "Esquerda", default := "25") DeleteSetting "MeuAplicativo", "Inicializao" Exemplo da instruo SaveSetting O exemplo a seguir primeiro utiliza a instruo SaveSetting para criar entradas no Registro do Windows (ou no arquivo .ini nas plataformas Windows de 16 bits) para o aplicativo MeuAplicativo e, em seguida, utiliza a instruo DeleteSetting para remov-las. ' Insere algumas definies no Registro. SaveSetting appname := "MeuAplicativo", section := "Inicializao", _ key := "Superior", setting := 75 SaveSetting "MeuAplicativo","Inicializao", "Esquerda", 50 ' Remove a seo e todas as suas definies do Registro. DeleteSetting "MeuAplicativo", "Inicializao"

Instruo DeleteSetting
Exclui uma seo ou definio de chave existente na entrada de um aplicativo no Registro do Windows. Sintaxe DeleteSetting appname, section[,key] A sintaxe da instruo DeleteSetting possui estes argumentos nomeados: Parte Descrio appname Obrigatrio. Espresso de seqncia de caracteres que contm o nome do aplicativo ou projeto ao qual se aplica a seo ou a definio de chave.

Funes Internas

194

section

key

Obrigatrio. Espresso de seqncia de caracteres que contm o nome da seo da qual a definio da chave est sendo excluda. Se forem fornecidos somente appname e section, a seo especificada ser excluda juntamente com todas as definies de chave relacionadas. Opcional. Expresso de seqncia de caracteres que contm o nome da definio da chave sendo excluda.

Comentrios Se todos os argumentos forem fornecidos, a definio da chave especificada ser excluda. Entretanto, a instruo DeleteSetting no far nada se a seo ou a definio de chave no existir.

Funo GetAllSettings
Retorna uma lista de definies de chave e seus respectivos valores (originariamente criados com SaveSetting) a partir da entrada de um aplicativo no Registro do Windows. Sintaxe GetAllSettings(appname, section) A sintaxe da funo GetAllSettings possui estes argumentos nomeados: Parte Descrio appname Obrigatrio. Espresso de seqncia de caracteres que contm o nome do aplicativo ou projeto cujas definies de chave so solicitadas. section Obrigatrio. Espresso de seqncia de caracteres que contm o nome da seo cujas definies de chave so solicitadas. GetAllSettings retorna um Variant cujo contedo uma matriz bidimensional de seqncias de caracters contendo todas as definies de chave da seo especificada e seus valores correspondentes. Comentrios GetAllSettings retorna um Variant no inicializada se appname ou section no existir.

Funo GetSetting
Retorna um valor de definio da chave para uma entrada de aplicativo no Registro do Windows. Sintaxe GetSetting(appname, section, key[,default]) A sintaxe da funo GetSetting possui estes argumentos nomeados: Parte Descrio appname Obrigatrio. Espresso de seqncia de caracteres que contm o nome do aplicativo ou projeto cuja definio de chave solicitada. section Obrigatrio. Espresso de seqncia de caracteres que contm o nome da seo onde se encontra a definio de chave. key Obrigatrio. Espresso de seqncia de caracteres que contm o nome da definio de chave a ser retornada. default Opcional. Expresso que contm o valor a retornar se nenhum valor for definido na definio da chave. Se for omitido, default ser assumido como uma seqncia de caracters de tamanho nulo (""). Comentrios Se qualquer dos itens nomeados nos argumentos de GetSetting no existirem, GetSetting retornar o valor do default.

Instruo SaveSetting
Salva ou cria uma entrada de aplicativo no Registro do Windows. Sintaxe SaveSetting appname, section, key, setting A sintaxe da instruo SaveSetting possui estes argumentos nomeados: Parte Descrio appname Obrigatrio. Espresso de seqncia de caracteres que contm o nome do aplicativo ou projeto ao qual se aplica a definio. section Obrigatrio. Espresso de seqncia de caracteres que contm o nome da seo em que a definio da chave est sendo salva. key Obrigatrio. Espresso de seqncia de caracteres que contm o nome da definio de chave sendo salva. setting Obrigatrio. Expresso que contm o valor com que key est sendo definido. Comentrios Ocorrer um erro se, por qualquer motivo, a definio da chave no puder ser salva. Exemplo da funo Chr Este exemplo utiliza a funo Chr para retornar o caractere associado ao cdigo de caractere especificado. Dim MeuCar MeuCar = Chr(65) ' Retorna A.

Funes Internas

195

MeuCar = Chr(97) ' Retorna a. MeuCar = Chr(62) ' Retorna >. MeuCar = Chr(37) ' Retorna %. Exemplo da funo Format Este exemplo mostra vrios usos da funo Format para formatar valores utilizando tanto formatos nomeados quanto formatos definidos pelo usurio. Para o separador de data (/), separador de hora (:) e literal AM/PM, a sada formatada real exibida pelo seu sistema depende das definies da localidade em que o cdigo est sendo executado. Quando as horas e datas so exibidas no ambiente de desenvolvimento, so usados o formato de hora abreviada e o formato de data abreviada da localidade do cdigo. Quando exibidas pela execuo do cdigo, so usados o formato de hora abreviada e o formato de data abreviada da localidade do sistema, que podem diferir da localidade do cdigo. Para este exemplo, pressupe-se Ingls/E.U.A. MinhaHora e MinhaData so exibidas no ambiente de desenvolvimento usando-se a definio de hora abreviada e a definio de data abreviada. Dim MinhaHora, MinhaData, MinhaSeq MinhaHora = #17:04:23# MinhaData = #Janeiro 27, 1993# ' Retorna a hora atual do sistema no formato de hora completa definido pelo usurio. MinhaSeq = Format(Time, "Long Time") ' Retorna a data atual do sistema no formato de data completa definido pelo usurio. MinhaSeq = Format(Date, "Long Date") MinhaSeq = Format(MinhaHora, "h:m:s") ' Retorna "17:4:23". MinhaSeq = Format(MinhaHora, "hh:mm:ss AM/PM")' Retorna "05:04:23 PM". MinhaSeq = Format(MinhaData, "dddd, mmm d yyyy") ' Retorna "Quarta-feira, ' 27 jan 1993". ' Se o formato no for fornecido, retornada uma seqncia de caracteres. MinhaSeq = Format(23) ' Retorna "23". ' Formatos definidos pelo usurio. MinhaSeq = Format(5459.4, "##,##0.00") ' Retorna "5,459.40". MinhaSeq = Format(334.9, "###0.00") ' Retorna "334.90". MinhaSeq = Format(5, "0.00%") ' Retorna "500.00%". MinhaSeq = Format("AL", "<") ' Retorna "al". MinhaSeq = Format(" isto", ">") ' Retorna " ISTO".

Funes Internas

196

Exemplo da funo Hex Este exemplo utiliza a funo Hex para retornar o valor hexadecimal de um nmero. Dim MeuHex MeuHex = Hex(5) ' Retorna 5. MeuHex = Hex(10) ' Retorna A. MeuHex = Hex(459) ' Retorna 1CB. Exemplo da funo InStr Este exemplo utiliza a funo InStr para retornar a posio da primeira ocorrncia de uma seqncia de caracteres dentro de outra. Dim SeqnciaDePesquisa, CarDePesquisa, MinhaPos SeqnciaDePesquisa ="XXpXXpXXPXXP" ' Seqncia de caracteres a pesquisar. CarDePesquisa = "P" ' Procurar por "P". ' Uma comparao textual iniciando na posio 4. Retorna 6. MinhaPos = Instr(4, SeqnciaDePesquisa, CarDePesquisa, 1) ' Uma comparao de binrios iniciando na posio 1. Retorna 9. MinhaPos = Instr(1, SeqnciaDePesquisa, CarDePesquisa, 0) ' A comparao binria como padro (o ltimo argumento omitido). MinhaPos = Instr(SeqnciaDePesquisa, CarDePesquisa) ' Retorna 9. MinhaPos = Instr(1, SeqnciaDePesquisa, "W") Exemplo da funo LCase Este exemplo utiliza a funo LCase para retornar uma verso em mnusculas de uma seqncia de caracteres. Dim Maisculas, Minsculas Maisculas = "Al Mundo 1234" ' Seqncia de caracteres a converter. Minsculas = Lcase(Maisculas) ' Retorna "al mundo 1234". Exemplo da funo Left Este exemplo utiliza a funo Left para retornar um nmero especificado de caracteres do lado esquerdo de uma seqncia de caracteres. Dim QualquerSeqncia, MinhaSeq QualquerSeqncia = "Al Mundo" ' Define a seqncia de caracteres. MinhaSeq = Left(QualquerSeqncia, 1) ' Retorna "A". MinhaSeq = Left(QualquerSeqncia, 5) ' Retorna "Al M". MinhaSeq = Left(QualquerSeqncia, 20) ' Retorna "Al Mundo". Exemplo da funo Len Este exemplo utiliza a funo Len para retornar o nmero de caracteres de uma seqncia de caracteres ou o nmero de bytes necessrios para armazenar uma varivel. O bloco Type...End Type que define RegistroDoCliente deve ser precedido pela palavra-chave Private se aparecer em um mdulo de classe. Em um mdulo padro, uma instruo Type pode ser Public. Type RegistroDoCliente' Define o tipo definido pelo usurio. ID As Integer ' Coloca esta definio em um Name As String * 10 ' mdulo padro. Address As String * 30 End Type Dim Cliente As RegistroDoCliente ' Declara as variveis. Dim MeuInt As Integer, MeuCur As Currency Dim MinhaSeqncia, MeuComp MinhaSeqncia = "Al Mundo" ' Inicializa a varivel. MeuComp = Len(MeuInt) ' Retorna 2. MeuComp = Len(Cliente) ' Retorna 42. MeuComp = Len(MinhaSeqncia) ' Retorna 9. MeuComp = Len(MeuCur) ' Retorna 8. Exemplo da instruo LSet Este exemplo utiliza a instruo LSet para alinhar esquerda uma seqncia de caracteres dentro de uma varivel de seqncia de caracteres. Ainda que LSet possa ser utilizada para copiar uma varivel de um tipo definido pelo usurio em outra varivel de um tipo definido pelo usurio diferente mas compatvel, esta prtica no recomendada. Devido variedade de implementaes de estruturas de dados entre plataformas, no se pode garantir a portabilidade desse uso de LSet. Dim MinhaSeqncia MinhaSeqncia = "0123456789" ' Inicializa a seqncia de caracteres. Lset MinhaSeqncia = "<-Left" ' MinhaSeqncia contm "<-Left ". ' Retorna 0.

Funes Internas

197

Exemplo das funes LTrim, RTrim e Trim Este exemplo utiliza a funo LTrim para retirar os espaos esquerda e a funo RTrim para retirar os espaos direita de uma varivel de seqncia de caracteres. Ele utiliza a funo Trim para retirar ambos os tipos de espaos. Dim MinhaSeqncia, SuprimirSeqncia MinhaSeqncia = " <-Trim-> " ' Inicializa a seqncia de caracteres. SuprimirSeqncia = LTrim(MinhaSeqncia) ' SuprimirSeqncia = "<-Trim-> ". SuprimirSeqncia = RTrim(MinhaSeqncia) ' SuprimirSeqncia = " <-Trim->". SuprimirSeqncia = LTrim(RTrim(MinhaSeqncia)) ' SuprimirSeqncia = "<-Trim->". ' O uso da funo Trim sozinha implica o mesmo resultado. SuprimirSeqncia = Trim(MinhaSeqncia) ' SuprimirSeqncia = "<-Trim->". Exemplo da funo Mid Este exemplo utiliza a funo Mid para retornar um nmero especificado de caracteres de uma seqncia de caracteres. Dim MinhaSeqncia, PrimeiraPalavra, ltimaPalavra, PalavrasDoMeio MinhaSeqncia = "Demonstrao da funo Mid" ' Cria a seqncia de caracteres de texto. PrimeiraPalavra = Mid(MinhaSeqncia, 1, 12) ' Retorna "Demonstrao". ltimaPalavra = Mid(MinhaSeqncia, 24, 3) ' Retorna "Mid". PalavrasDoMeio = Mid(MinhaSeqncia, 14) ' Retorna "da funo Mid".

Funes Internas

198

Exemplo da instruo Mid Este exemplo utiliza a instruo Mid para substituir um nmero especificado de caracteres de uma varivel de seqncia de caracteres por caracteres de outra seqncia de caracteres. Dim MinhaSeqncia MinhaSeqncia = "O gato salta" ' Inicializa a seqncia de caracteres. Mid(MinhaSeqncia, 3, 4) = "sapo" ' MinhaSeqncia = "O sapo salta". Mid(MinhaSeqncia, 3) = "rato" ' MinhaSeqncia = "O rato salta". Mid(MinhaSeqncia, 3) = "rato saltou sobre" ' MinhaSeqncia = "O rato salto". Mid(MinhaSeqncia, 3, 4) = "ganso" ' MinhaSeqncia = "O gans salto". Exemplo da funo Oct Este exemplo utiliza a funo Oct para retornar o valor octal de um nmero. Dim MeuOctal MeuOctal = Oct(4) ' Retorna 4. MeuOctal = Oct(8) ' Retorna 10. MeuOctal = Oct(459) ' Retorna 713. Exemplo da funo Right Este exemplo utiliza a funo Right para retornar um nmero especificado de caracteres do lado direito de uma seqncia de caracteres. Dim QualquerSeqncia, MinhaSeq QualquerSeqncia = "Al Mundo" ' Define a seqncia de caracteres. MinhaSeq = Right(QualquerSeqncia, 1) ' Retorna "o". MinhaSeq = Right(QualquerSeqncia, 6) ' Retorna " Mundo". MinhaSeq = Right(QualquerSeqncia, 20) ' Retorna "Al Mundo". Exemplo da instruo RSet Este exemplo utiliza a instruo RSet para alinhar direita uma seqncia de caracteres dentro de uma varivel de seqncia de caracteres. Dim MinhaSeqncia MinhaSeqncia = "0123456789" ' Inicializa a seqncia de caracteres. Rset MinhaSeqncia = "Right->" ' MinhaSeqncia contm " Right->". Exemplo da funo Space Este exemplo utiliza a funo Space para retornar uma seqncia de caracteres que consiste em um nmero especificado de espaos. Dim MinhaSeqncia ' Retorna a seqncia de caracteres com 10 espaos. MinhaSeqncia = Space(10) ' Insere 10 espaos entre duas seqncias de caracteres. MinhaSeqncia = "Al" & Space(10) & "Mundo" Exemplo da funo Str Este exemplo utiliza a funo Str para retornar uma representao em seqncia de caracteres de um nmero. Quando um nmero convertido em uma seqncia de caracteres, um espao esquerda sempre reservado para o seu sinal. Dim MinhaSeqncia MinhaSeqncia = Str(459) ' Retorna " 459". MinhaSeqncia = Str(-459.65) ' Retorna "-459.65". MinhaSeqncia = Str(459.001) ' Retorna " 459.001". Exemplo da funo StrComp Este exemplo utiliza a funo StrComp para retornar os resultados de uma comparao de seqncias de caracteres. Se o terceiro argumento for 1, ser executada uma comparao textual; se for 0 ou omitido, ser executada uma comparao binria. Dim MinhaSeq1, MinhaSeq2, MinhaComp MinhaSeq1 = "ABCD": MinhaSeq2 = "abcd" ' Define as variveis. MinhaComp = StrComp(MinhaSeq1, MinhaSeq2, 1) ' Retorna 0. MinhaComp = StrComp(MinhaSeq1, MinhaSeq2, 0) ' Retorna -1. MinhaComp = StrComp(MinhaSeq2, MinhaSeq1) ' Retorna 1. Exemplo da funo String Este exemplo utiliza a funo String para retornar as seqncias de caracteres repetidos com o comprimento especificado. Dim MinhaSeqncia MinhaSeqncia = String(5, "*") ' Retorna "*****". MinhaSeqncia = String(5, 42) ' Retorna "*****". MinhaSeqncia = String(10, "ABC") ' Retorna "AAAAAAAAAA".

Funes Internas

199

Exemplo da funo UCase Este exemplo utiliza a funo UCase para retornar uma verso em maisculas de uma seqncia de caracteres. Dim Minsculas, Maisculas Minsculas = "Al Mundo 1234" ' Seqncia de caracteres a converter. Maisculas = UCase(Minsculas) ' Retorna "AL MUNDO 1234".

Funo Chr
Retorna um String que contm o caractere associado ao cdigo de caractere especificado. Sintaxe Chr(cdigodecarac) O argumento obrigatrio cdigodecarac um Long que identifica um caractere. Comentrios Os nmeros de 0 a 31 so os mesmos que os cdigos padro no-imprimveis ASCII. Por exemplo, Chr(10) retorna um caractere de alimentao de linha. O intervalo normal para cdigodecarac 0 255. No entanto, em sistemas DBCS, o intervalo real para cdigodecarac de -32768 a 65536. Observao A funo ChrB utilizada com dados de byte contidos em um String. Em vez de retornar um caractere, que pode ser de um ou dois bytes, ChrB sempre retorna um nico byte. A funo ChrW retorna um String contendo o caractere Unicode, com exceo de plataformas nas quais Unicode no suportado, caso em que o comportamento dessa funo idntico ao da funo Chr.

Funo Format
Retorna um Variant (String) que contm uma expresso formatada de acordo com as instrues contidas em uma expresso de formato. Sintaxe Format(expresso[, formato[, primeirodiadasemana[, primeirasemanadoano]]]) A sintaxe da funo Format possui as partes a seguir: Parte Descrio expresso Obrigatria. Qualquer expresso vlida. formato Opcional. Uma expresso vlida de formato nomeado ou definido pelo usurio. primeirodiadasemana Opcional. Uma constante que especifica o primeiro dia da semana. primeirasemanadoano Opcional. Uma constante que especifica a primeira semana do ano. Definies O argumento primeirodiadasemana possui as definies a seguir: Constante Valor Descrio vbUseSystem 0 Utilizar definio de API NLS. VbSunday 1 Domingo (padro) vbMonday 2 Segunda-feira vbTuesday 3 Tera-feira vbWednesday 4 Quarta-feira vbThursday 5 Quinta-feira vbFriday 6 Sexta-feira vbSaturday 7 Sbado O argumento primeirasemanadoano possui as definies a seguir: Constante Valor Descrio vbUseSystem 0 Utilizar definio de API NLS. VbFirstJan1 1 Iniciar com a semana de 1o de janeiro (padro). VbFirstFourDays 2 Iniciar com a primeira semana do ano de pelo menos quatro dias. vbFirstFullWeek 3 Iniciar com a primeira semana completa do ano. Comentrios Para formatar Nmeros Faa isto Utilize formatos numricos predefinidos nomeados ou crie formatos numricos definidos pelo usurio. Data e hora Utilize formatos de data/hora predefinidos nomeados ou crie formatos de data/hora definidos pelo usurio. Nmeros de srie deUtilize formatos numricos ou formatos de data e hora. data e hora Seqncias deCrie seus prprios formatos de seqncia de caracteres caracteres definidos pelo usurio. Se voc tentar formatar um nmero sem especificar formato, Format oferece uma funcionalidade semelhante da funo Str, embora reconhea os padres internacionais. No entanto, nmeros positivos formatados como seqncias de

Funes Internas

200

caracteres utilizando-se Format no incluem um espao esquerda reservado para o sinal do valor; aqueles convertidos utilizando-se Str mantm o espao esquerda.

Formatos numricos nomeados (funo Format)


A tabela a seguir identifica os nomes de formatos numricos predefinidos: Nome do formato Descrio General Number Exibe nmero sem separador de milhar. Currency Exibe nmero com separador de milhar, se for o caso; exibe dois dgitos direita do separador decimal. A sada baseada nas definies de localidade do sistema. Fixed Exibe pelo menos um dgito esquerda e dois direita do separador decimal. Standard Exibe o nmero com separador de milhar, pelo menos um dgito esquerda e dois direita do separador decimal. Percent Exibe o nmero multiplicado por 100 com um sinal de porcentagem (%) direita; exibe sempre dois dgitos direita do separador decimal. Scientific Utiliza notao cientfica padro. Yes/No Exibe No se o nmero for 0; caso contrrio, exibe Sim. True/False Exibe False se o nmero for 0; caso contrrio, exibe True. On/Off Exibe Desativado se o nmero for 0; caso contrrio, exibe Ativado.

Formatos numricos definidos pelo usurio (funo Format)


A tabela a seguir identifica caracteres que voc pode utilizar para criar formatos numricos definidos pelo usurio: Caractere Descrio Nenhum Exibe o nmero sem formatao. (0) Espao reservado para dgito. Exibe um dgito ou um zero. Se a expresso apresenta um dgito na posio onde o 0 aparece na seqncia de caracteres de formato, exibe-o; caso contrrio, exibe um zero nessa posio. Se o nmero apresenta menos dgitos do que os zeros existentes (de qualquer lado do decimal) na expresso de formato, exibe zeros esquerda ou direita. Se o nmero apresenta mais dgitos direita do separador decimal do que zeros direita do separador decimal na expresso de formato, arredonda o nmero em tantas casas decimais quanto for o nmero de zeros. Se o nmero apresenta mais dgitos esquerda do separador decimal do que zeros esquerda do separador decimal na expresso de formato, exibe os dgitos extras sem modificao. (#) Espao reservado para dgito. Exibe um dgito ou nada. Se a expresso apresenta um dgito onde o # aparece na seqncia de caracteres de formato, exibe-o; caso contrrio, no exibe nada nessa posio. Esse smbolo funciona como o espao reservado para o dgito 0, exceto que os zeros direita e esquerda no so exibidos se o nmero apresentar o mesmo nmero de dgitos ou menos do que o nmero de caracteres # de cada lado do separador decimal na expresso de formato. (.) Espao reservado decimal. Em algumas localidades, uma vrgula utilizada como separador decimal. O espao reservado decimal determina quantos dgitos so exibidos esquerda e direita do separador decimal. Se a expresso de formato contm somente sinais numricos esquerda desse smbolo, nmeros menores do que 1 comeam com um separador decimal. Para exibir um zero esquerda exibido com nmeros fracionrios, utilize 0 como o primeiro espao reservado de dgito esquerda do separador decimal. O caractere realmente utilizado como um espao reservado decimal na sada formatada depende do Formato numrico reconhecido pelo seu sistema. (%) Espao reservado de porcentagem. A expresso multiplicada por 100. O caractere de porcentagem (%) inserido na mesma posio em que aparece na seqncia de caracteres de formato. (,) Separador de milhar. Em algumas localidades, um ponto utilizado como separador de milhar. O separador de milhar separa as centenas dos milhares dentro de um nmero com quatro ou mais posies esquerda do separador decimal. A utilizao padro do separador de milhar especificada se o formato contiver um separador de milhar

Funes Internas

201

cercado por espaos reservados para dgitos (0 ou #). Dois separadores de milhar adjacentes ou um separador de milhar imediatamente esquerda do separador decimal (independente de o decimal ser ou no especificado) significa "escalonar o nmero dividindo-o por 1000 e arredondando se necessrio." Por exemplo, voc pode utilizar a seqncia de caracteres de formato "##0,," para representar 100 milhes como 100. Nmeros menores do que 1 milho so exibidos como 0. Dois separadores de milhar adjacentes em qualquer posio diferente de imediatamente esquerda do separador decimal so tratados simplesmente como especificao da utilizao de um separador de milhar. O caractere realmente utilizado como separador de milhar na sada formatada depende do Formato numrico reconhecido pelo seu sistema. (:) Separador de tempo. Em algumas localidades, outros caracteres podem ser utilizados para representar o separador de tempo. O separador de tempo separa horas, minutos e segundos quando os valores de tempo so formatados. O caractere realmente utilizado como separador de tempo na sada formatada depende das definies de seu sistema. (/) Separador de data. Em algumas localidades, outros caracteres podem ser utilizados para representar o separador de data. O separador de data separa o dia, o ms e o ano quando os valores de data so formatados. O caractere realmente utilizado como separador de data na sada formatada depende das definies de seu sistema. (E- E+ e- e+) Formato cientfico. Se a expresso de formato contm pelo menos um espao reservado para dgito (0 ou #) direita de E-, E+, e-, ou e+, o nmero exibido em formato cientfico e E ou e inserido entre o nmero e seu expoente. O nmero de espaos reservados para dgitos direita determina o nmero de dgitos no expoente. Utilize E- ou epara colocar um sinal de menos ao lado de expoentes negativos. Utilize E+ ou e+ para colocar um sinal de menos ao lado de expoentes negativos e um sinal de mais ao lado de expoentes positivos. -+$() Exibe um caractere literal. Para exibir um caractere diferente daqueles listados, anteceda-o com uma barra invertida (\) ou coloque-o entre aspas duplas (" "). (\) Exibe o prximo caractere na seqncia de caracteres de formato. Para exibir um caractere que apresenta um significado especial como um caractere literal, anteceda-o com uma barra invertida (\). A barra invertida, na verdade, no exibida. Utiliz-la a mesma coisa que colocar o prximo caractere entre aspas duplas. Para exibir uma barra invertida, utilize duas barras invertidas (\\). Exemplos de caracteres que no podem ser exibidos como 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 da seqncia de caracteres (@, &, <, > e !). ("ABC") Exibe a seqncia de caracteres dentro de aspas duplas (" "). Para incluir uma seqncia de caracteres em format a partir do cdigo, voc deve utilizar Chr(34) para envolver o texto (34 o cdigo de caractere para uma aspa (")).

Formatos diferentes para valores numricos diferentes (funo Format)


Uma expresso de formato para nmeros definida pelo usurio pode apresentar de uma a quatro sees separadas por ponto-e-vrgula. Se o argumento format contiver um dos quatro formatos numricos nomeados, somente uma seo ser permitida. Se voc utilizar O resultado ser Somente uma seo A expresso de formato aplica-se a todos os valores. Duas sees A primeira seo aplica-se a valores positivos e zeros e a segunda a valores negativos. Trs sees A primeira seo aplica-se a valores positivos, a segunda a valores negativos e a terceira a zeros. Quatro sees A primeira seo aplica-se a valores positivos, a segunda a valores negativos, a terceira a zeros e a quarta a valores Null. O exemplo a seguir apresenta duas sees: a primeira define o formato para valores positivos e zeros; a segunda define o formato para valores negativos. "$#,##0;($#,##0)"

Funes Internas

202

Se voc incluir pontos-e-vrgulas sem nada entre eles, a seo ausente ser impressa utilizando o formato do valor positivo. Por exemplo, o formato a seguir exibe valores positivos e negativos utilizando o formato da primeira seo e exibindo "Zero" se o valor for zero. "$#,##0;;\Z\e\r\o"

Funes Internas

203

Exemplo de expresses de formato numrico definidas pelo usurio


A tabela a seguir contm algumas expresses de exemplo de formato para nmeros. (Estes exemplos pressupem que a definio de localidade do seu sistema seja Portugus (Brasil) A primeira coluna contm as seqncias de caracteres de formato; as outras contm a sada resultante se os dados formatados apresentarem o valor fornecido nos cabealhos das colunas. Formato (format) Positivo 5 Negativo 5 Decimal .5 Null Seqncia de5 -5 0,5 caracteres de comprimento Zero ("") 0 5 -5 1 0,00 5,00 -5,00 0,50 #.##0 5 -5 1 #.##0,00;;;Nil 5,00 -5,00 0,50 Nil R$#.##0;(R$#.##0) R$5 (R$5) R$1 R$#.##0,00; R$5,00 (R$5,00) R$0,50 (R$#.##0,00) 0% 500% -500% 50% 0,00% 500,00% -500,00% 50,00% 0,00E+00 5,00E+00 -5,00E+00 5,00E-01 0,00E-00 5,00E00 -5,00E00 5,00E-01

Formatos nomeados de data/hora (funo Format)


A tabela a seguir identifica os nomes de formato de data e hora predefinidos: Nome do formato Descrio General Date Exibe uma data e/ou hora. Para nmeros reais, exibe uma data e hora, por exemplo, 3/4/93 17:34. Se no existir uma parte fracionria, exibe somente uma data, por exemplo, 3/4/93. Se no houver uma parte inteira, exibe somente a hora, por exemplo, 17:34. A exibio da data determinada pelas definies do seu sistema. Long Date Exibe uma data de acordo com o formato por extenso de data de seu sistema. Medium Date Exibe uma data utilizando o formato mdio de data apropriado verso do idioma do aplicativo host. Short Date Exibe uma data utilizando o formato abreviado de data de seu sistema. Long Time Exibe uma hora utilizando o formato de hora por extenso de seu sistema, incluindo horas, minutos e segundos. Medium Time Exibe hora em formato de 12 horas utilizando horas e minutos e a designao AM/PM. Short Time Exibe uma hora utilizando o formato de 24 horas, por exemplo, 17:45.

Formatos de data/hora definidos pelo usurio (funo Format)


A tabela a seguir identifica os caracteres que voc pode utilizar para criar formatos de data/hora definidos pelo usurio: Caractere Descrio (:) Separador de hora. Em algumas localidades, outros caracteres podem ser utilizados para representar o separador de hora. O separador de hora separa horas, minutos e segundos quando os valores de hora so formatados. O caractere real utilizado como separador de hora na sada formatada determinado pelas definies do seu sistema. (/) Separador de data. Em algumas localidades, outros caracteres podem ser utilizados para representar o separador de data. O separador de data separa o dia, o ms e o ano quando os valores de data so formatados. O caractere realmente utilizado como separador de data na sada formatada depende das definies do seu sistema. c Exibe a data como ddddd e exibe a hora como hhhhh, nessa ordem. Exibe somente informaes de data se no houver parte fracionria para o nmero de srie da data; exibe somente informaes de hora se no houver parte de nmero inteiro. d Exibe o dia como um nmero sem um zero esquerda (1 31). dd Exibe o dia como um nmero com um zero esquerda(01 31). ddd Exibe o dia de forma abreviada (Dom Sb). dddd Exibe o nome completo do dia (Domingo Sbado). ddddd Exibe a data completa (incluindo dia, ms e ano), formatada de acordo

Funes Internas

204

dddddd

w ww m mm mmm mmmm t a aa aaaa h hh n nn s ss hhhhh

AM/PM am/pm A/P a/p AMPM

com a definio de formato de data abreviada do seu sistema. Para o Microsoft Windows, o formato padro de data abreviada d/m/aa. Exibe um nmero de srie de data como uma data completa (incluindo dia, ms e ano) formatada de acordo com a definio de data por extenso reconhecida pelo seu sistema. Para o Microsoft Windows, o formato padro de data por extenso dddd mm, aaaa. Exibe o dia da semana como um nmero (1 para Domingo at 7 at para Sbado). Exibe a semana do ano como um nmero (1 54). Exibe o ms como um nmero sem um zero esquerda (1 12). Se m seguir imediatamente h ou hh, o minuto exibido ao invs do ms. Exibe o ms como um nmero com um zero esquerda (01 12). Se m seguir imediatamente h ou hh, o minuto exibido ao invs do ms. Exibe o ms de forma abreviada (Jan Dez). Exibe o nome completo do ms (Janeiro Dezembro). Exibe o trimestre do ano como um nmero (1 4). Exibe o dia do ano como um nmero (1 366). Exibe o ano como um nmero de dois dgitos (00 99). Exibe o ano como um nmero de quatro dgitos (100 9999). Exibe a hora como um nmero sem zeros esquerda (0 23). Exibe a hora como um nmero com zeros esquerda (00 23). Exibe o minuto como um nmero sem zeros esquerda (0 59). Exibe o minuto como um nmero com zeros esquerda(00 59). Exibe o segundo como um nmero sem zeros esquerda (0 59). Exibe o segundo como um nmero com zeros esquerda (00 59). Exibe a hora completa (incluindo hora, minuto e segundo), formatada utilizando o separador de hora definido pelo formato de hora reconhecido pelo seu sistema. Um zero esquerda exibido se a opo zero esquerda estiver selecionada e se a hora for anterior a 10:00 ou 22:00. Para o Microsoft Windows, o formato padro de hora h:mm:ss. Utiliza o relgio de 12 horas e exibe AM em letras maisculas sem qualquer hora antes do meio-dia; exibe PM em letras maisculas com qualquer hora entre meio-dia e 23:59. Utiliza o relgio de 12 horas e exibe AM em letras minsculas sem qualquer hora antes do meio-dia; exibe PM em letras minsculas com qualquer hora entre meio-dia e 23:59. Utiliza o relgio de 12 horas e exibe um A maisculo sem qualquer hora antes do meio-dia; exibe um P maisculo com qualquer hora entre meio-dia e 23:59. Utiliza o relgio de 12 horas e exibe um A minsculo sem qualquer hora antes do meio-dia; exibe um P minsculo com qualquer hora entre meio-dia e 23:59. Utiliza o relgio de 12 horas e exibe uma literal de seqncia de caracteres AM como definido pelo seu sistema com qualquer hora antes de meio-dia; exibe a literal de seqncia de caracteres PM como definido pelo seu sistema com qualquer hora entre meio-dia e 23:59. AMPM podem estar em letras maisculas ou minsculas, mas o tamanho da letra da seqncia de caracteres exibida deve corresponder quele definido na definio do seu sistema. Para o Microsoft Windows, o formato padro AM/PM.

Exemplo de formatos de data/hora definidos pelo usurio


A seguir so apresentados exemplos de formatos de data e hora definidos pelo usurio para 7 de Dezembro de 1958: Formato Exibe d/m/aa 7/12/58 d-mmm 7-Dez d-mmmm-aa 7-Dezembro-58 d mmmm 7 Dezembro mmmm aa Dezembro 58 hh:mm AM/PM 08:50 PM h:mm:ss a/p 8:50:35 p h:mm 20:50 h:mm:ss 20:50:35 d/m/aa h:mm 7/12/58 20:50

Formatos de seqncia de caracteres definidos pelo usurio (funo Format)


Voc pode utilizar qualquer um dos caracteres a seguir para criar uma expresso de formato para seqncias de caracteres: Funes Internas

205

Caractere @

&

< > !

Descrio Espao reservado para caractere. Exibe um caractere ou um espao. Se a seqncia de caracteres apresenta um caractere onde o smbolo (@) aparece na seqncia de caracteres de formato, exibe-o; caso contrrio, exibe um espao nessa posio. Espaos reservados so preenchidos da direita para a esquerda a menos que exista um ponto de exclamao (!) na seqncia de caracteres de formato. Espao reservado para caractere. Exibe um caractere ou nada. Se a seqncia de caracteres apresenta um caractere na posio onde o E comercial (&) aparece, exibe-o; caso contrrio, no exibe nada. Espaos reservados so preenchidos da direita para a esquerda a menos que exista um ponto de exclamao (!) na seqncia de caracteres de formato. Fora letras minsculas. Exibe todos os caracteres em formato de minsculas. Fora letras maisculas. Exibe todos os caracteres em formato de maisculas. Fora preenchimento de espaos reservados da esquerda para a direita. O padro o preenchimento da direita para a esquerda.

Formatos diferentes para valores de seqncia de caracteres diferentes (funo Format)


Uma expresso de formato para seqncias de caracteres pode apresentar uma seo ou duas sees separadas por um ponto-e-vrgula (;). Se voc utilizar O resultado ser Somente uma seo O formato se aplicar a todos os dados da seqncia de caracteres. Duas sees A primeira seo se aplicar aos dados da seqncia de caracteres e a segunda a valores Null e seqncias de caracteres de comprimento zero ("").

Funes Internas

206

Funo Hex
Retorna um String que representa o valor hexadecimal de um nmero. Sintaxe Hex(nmero) O argumento obrigatrio nmero qualquer expresso numrica vlida ou expresso de seqncia de caracteres. Comentrios Se nmero no for um nmero inteiro, deve ser arredondado para o nmero mais prximo antes de ser avaliado. Se nmero for Hex retornar Null Nulo Empty Zero (0) Qualquer outroAt oito caracteres hexadecimais nmero Voc pode representar nmeros hexadecimais diretamente ao anteceder nmeros no intervalo apropriado por &H. Por exemplo, &H10 representa 16 decimal em notao hexadecimal.

Funo InStr
Retorna um Variant (Long) especificando a posio da primeira ocorrncia de uma seqncia de caracteres dentro de outra. Sintaxe InStr([start, ]string1, string2[, compare]) A sintaxe da funo InStr apresenta os argumentos a seguir: Parte Descrio start Opcional. Expresso numrica que define a posio inicial para cada pesquisa. Se omitida, a pesquisa tem incio na primeira posio de caractere. Se start contiver Null, um erro ser gerado. O argumento start obrigatrio se compare for especificado. string1 Obrigatrio. Expresso de seqncia de caracteres sendo pesquisada. string2 Obrigatrio. Expresso de seqncia de caracteres sendo pesquisada. compare Opcional. Especifica o tipo de comparao de seqncia de caracteres. O argumento compare pode ser omitido, ou pode ser 0, 1 ou 2. Especifique 0 (padro) para executar uma comparao binria. Especifique 1 para executar uma comparao textual, que no coincida maisculas e minsculas. Para o Microsoft Access somente, especifique 2 para executar uma comparao baseada nas informaes contidas em seu banco de dados. Se compare for Nulo, um erro ocorrer. Se compare for omitido, a configurao Option Compare determinar o tipo de comparao. Valores de retorno Se InStr retorna string1 tiver0 comprimento zero string1 for Null Nulo string2 tiverstart comprimento zero string2 for Null Nulo string2 no for0 encontrado string2 forPosio na qual a correspondncia encontrada encontrado dentro de string1 start > string2 0 Comentrios A funo InStrB utilizada com os dados de byte contidos em uma seqncia de caracteres. Em vez de retornar a posio do caractere da primeira ocorrncia de uma seqncia de caracteres dentro de outra, InStrB retorna a posio do byte.

Funo LCase
Retorna um String que foi convertido para letra minscula. Sintaxe LCase(seqnciadecaracteres) O argumento obrigatrio seqnciadecaracteres qualquer expresso de seqncia de caracteres.vlida. Se seqnciadecaracteres contiver Null, ser retornado Nulo. Comentrios Somente as letras maisculas so convertidas para minsculas; todas as letras minsculas e caracteres que no sejam letras permanecem inalterados.

Funes Internas

207

Funo Left
Retorna um Variant (String) contendo um nmero especificado de caracteres do lado esquerdo de uma seqncia de caracteres. Sintaxe Left(string, length) A sintaxe da funo Left apresenta os argumentos nomeados a seguir: Parte Descrio string Obrigatrio. Expresso de seqncia de caracteres a partir da qual os caracteres mais esquerda so retornados. Se string contiver Null, Nulo ser retornado. length Obrigatrio. Variant (Long). Expresso numrica que indica quantos caracteres devem ser retornados. Se 0, uma seqncia de caracteres de comprimento zero ("") retornada. Se maior ou igual ao nmero de caracteres de string, toda a seqncia de caracteres retornada. Comentrios Para determinar o nmero de caracteres em string, utilize a funo Len. Observao Utilize a funo LeftB com dados de byte contidos em uma seqncia de caracteres. Ao invs de especificar o nmero de caracteres a serem retornados, length especifica o nmero de bytes.

Funo Len
Retorna um Long que contm o nmero de caracteres em uma seqncia de caracteres ou o nmero de bytes necessrios para armazenar uma varivel. Sintaxe Len(seqnciadecaracteres | nomedavar) A sintaxe da funo Len apresenta as partes a seguir: Parte Descrio string Qualquer expresso de seqncia de caracteres vlida. Se seqnciadecaracteres contiver Null, Nulo retornado. varname Qualquer nome de varivel vlido. Se nomedavar contiver Nulo, Nulo ser retornado. Se nomedavar for Variant, Len o tratar como se fosse um String e sempre retornar o nmero de caracteres que ele contiver. Comentrios Um (e somente um) dos dois argumentos possveis deve ser especificado. Com tipos definidos pelo usurio, Len retorna o tamanho como ele ser gravado no arquivo. Observao Utilize a funo LenB com dados de byte contidos em uma seqncia de caracteres. Em vez de retornar o nmero de caracteres em uma seqncia de caracteres, LenB retorna o nmero de bytes utilizados para representar aquela seqncia de caracteres. Com tipos definidos pelo usurio, LenB retorna o tamanho memorizado, incluindo qualquer item entre os elementos. Observao Len pode no ser capaz de determinar o nmero real de bytes de armazenamento necessrios quando utilizado com seqncias de caracteres de comprimento varivel em tipos de dados definidos pelo usurio.

Instruo LSet
Alinha uma seqncia de caracteres esquerda dentro de uma varivel de seqncia de caracteres, ou copia uma varivel de um tipo definido pelo usurio para outra varivel de um tipo diferente definido pelo usurio. Sintaxe LSet varseq = seqnciadecaracteres LSet nomedavar1 = nomedavar2 A sintaxe da instruo LSet apresenta as partes a seguir: Parte Descrio stringvar Obrigatrio. Nome da varivel de seqncia de caracteres. string Obrigatrio. Expresso de seqncia de caracteres a ser alinhada esquerda dentro de varseq. varname1 Obrigatrio. Nome de varivel do tipo definido pelo usurio para a qual feita a cpia. varname2 Obrigatrio. Nome de varivel do tipo definido pelo usurio da qual feita a cpia. Comentrios LSet substitui qualquer caractere deixado em varseq por espaos. Se seqnciadecaracteres for maior do que varseq, LSet coloca somente os caracteres mais esquerda, at o comprimento de varseq, em varseq.

Funes Internas

208

Aviso No recomendvel utilizar LSet para copiar uma varivel de um tipo definido pelo usurio para um tipo diferente. A cpia de dados de um tipo de dados para espao reservado a um tipo de dados diferente pode acarretar resultados imprevisveis. Quando voc copia uma varivel de um tipo definido pelo usurio para outro, os dados binrios de uma varivel so copiados para o espao de memria do outro, sem levar em considerao os tipos de dados especificados para os elementos.

Funes LTrim, Rtrim e Trim


Retorna um Variant (String) que contm uma cpia de uma seqncia de caracteres especificada sem espaos esquerda (LTrim), espaos direita (RTrim) ou espaos direita e esquerda (Trim). Sintaxe LTrim(seqnciadecaracteres) RTrim(seqnciadecaracteres) Trim(seqnciadecaracteres) O argumento seqnciadecaracteres exigido qualquer expresso de seqncia de caracteres.vlida. Se seqnciadecaracteres contiver Null, Null ser retornado.

Funo Mid
Retorna um Variant (String) que contm um nmero especificado de caracteres de uma seqncia de caracteres. Sintaxe Mid(string, start[, length]) A sintaxe da funo Mid apresenta os argumentos nomeados a seguir: Parte Descrio string Obrigatrio. Expresso de seqncia de caracteres da qual so retornados caracteres. Se string contiver Null, Null ser retornado. start Obrigatrio; Long. A posio do caractere em string na qual a parte a ser removida tem incio. Se start for maior do que o nmero de caracteres em string, Mid retorna uma seqncia de caracteres de comprimento zero (""). length Opcional; Variant (Long). Nmero de caracteres a ser retornado. Se omitido ou se houver menos caracteres no texto do que em length (incluindo o caractere em start), todos os caracteres da posio start at o final da seqncia de caracteres sero retornados. Comentrios Para determinar o nmero de caracteres em string, utilize a funo Len. Observao Utilize a funo MidB com dados de byte contidos em uma seqncia de caracteres. Em vez de especificar o nmero de caracteres, os argumentos especificam o nmero de bytes.

Funes Internas

209

Instruo Mid
Substitui um nmero especificado de caracteres em uma varivel Variant (String) com caracteres de outra seqncia de caracteres. Sintaxe Mid(varseq, incio[, comprimento]) = seqnciadecaracteres A sintaxe da instruo Mid apresenta as partes a seguir: Parte Descrio varseq Obrigatrio. Nome da varivel da seqncia de caracteres a ser modificada. incio Obrigatrio; Variant (Long). Posio de caractere em varseq onde a substituio de texto tem incio. comprimento Opcional; Variant (Long). Nmero de caracteres a serem substitudos. Se omitida, toda a seqnciadecaracteres utilizada. seqnciadecaracteres Obrigatrio. Expresso de seqncia de caracteres que substitui parte de varseq. Comentrios O nmero de caracteres substitudo sempre menor ou igual ao nmero de caracteres em varseq. Observao Utilize a instruo MidB com dados de byte contidos em uma seqncia de caracteres. Na instruo MidB, incio especifica a posio do byte dentro de varseq onde a substituio tem incio e comprimento especifica o nmero de bytes a ser substitudo.

Funo Oct
Retorna um Variant (String) que representa o valor octal de um nmero. Sintaxe Oct(nmero) O argumento obrigatrio nmero qualquer expresso numrica vlida ou expresso de seqncia de caracteres. Comentrios Se nmero no for um nmero inteiro, deve ser arredondado para o nmero inteiro mais prximo antes de ser avaliado. Se nmero for Oct retornar Null Null Empty Zero (0) Qualquer outroAt 11 caracteres octais nmero Voc pode representar nmeros octais diretamente ao anteceder nmeros no intervalo apropriado com &O. Por exemplo, &O10 a notao octal para o decimal 8.

Funes Internas

210

Funo Right
Retorna um Variant (String) que contm um nmero especfico de caracteres do lado direito de uma seqncia de caracteres. Sintaxe Right(string, length) A sintaxe da funo Right apresenta os argumentos nomeados a seguir: Parte Descrio string Obrigatrio. Expresso de seqncia de caracteres da qual os caracteres mais direita so retornados. Se string contiver Null, Null ser retornado. length Obrigatrio; Variant (Long). Expresso numrica indicando quantos caracteres devem ser retornados. Se 0, uma seqncia de caracteres de comprimento zero ("") retornada. Se maior ou igual ao nmero de caracteres em string, toda a seqncia de caracteres retornada. Comentrios Para determinar o nmero de caracteres em string, utilize a funo Len. Observao Utilize a funo RightB com dados de byte contidos em uma seqncia de caracteres. Em vez de especificar o nmero de caracteres a ser retornado, length especifica o nmero de bytes.

Instruo RSet
Alinha uma seqncia de caracteres direita dentro de uma varivel de seqncia de caracteres. Sintaxe RSet varseq = seqnciadecaracteres A sintaxe da instruo RSet apresenta as partes a seguir: Parte Descrio varseq Obrigatrio. Nome de varivel da seqncia de caracteres. seqnciadecaracteres Obrigatrio. Expresso de seqncia de caracteres a ser alinhada direita dentro de varseq. Comentrios Se varseq for maior do que seqnciadecaracteres, RSet substitui qualquer caractere deixado em varseq por espaos, de volta a seu incio. Observao RSet no pode ser utilizado com tipos definidos pelo usurio.

Funo Space
Retorna um Variant (String) que consiste em um nmero especificado de espaos. Sintaxe Space(nmero) O argumento obrigatrio nmero o nmero de espaos que voc deseja na seqncia de caracteres. Comentrios A funo Space til para formatar sadas e limpar dados em seqncias de caracteres de comprimento fixo.

Funo Str
Retorna uma representao de um nmero Variant (String). Sintaxe Str(nmero) O argumento obrigatrio nmero um Long contendo qualquer expresso numrica.vlida. Comentrios Quando nmeros so convertidos em seqncias de caracteres, um espao esquerda sempre reservado para o sinal de nmero. Se nmero for positivo, a seqncia de caracteres retornada ter um espao esquerda e o sinal de mais estar implcito. Utilize a funo Format para converter valores numricos que voc deseja formatar como datas, horas, moeda ou outros formatos definidos pelo usurio. Ao contrrio de Str, a funo Format no inclui um espao esquerda para o sinal de nmero. Observao A funo Str reconhece somente o ponto (.) como um separador decimal vlido. Quando separadores decimais diferentes puderem ser utilizados (por exemplo, em aplicativos internacionais), utilize CStr para converter um nmero em uma seqncia de caracteres.

Funo StrComp
Retorna Variant (Integer) que indica o resultado de uma comparao de seqncia de caracteres. Sintaxe StrComp(string1, string2[, compare]) A sintaxe da funo StrComp apresenta os argumentos nomeados a seguir: Parte Descrio string1 Obrigatrio. Qualquer expresso de seqncia de caracteres.vlida. string2 Obrigatrio. Qualquer expresso de seqncia de caracteres vlida.

Funes Internas

211

compare

Opcional. Especifica o tipo de comparao de seqncia de caracteres. O argumento compare pode ser omitido ou pode ser 0, 1 ou 2. Especifique 0 (padro) para realizar uma comparao binria. Especifique 1 para realizar uma comparao textual. Para o Microsoft Access somente, especifique 2 para realizar uma comparao baseada nas informaes contidas em seu banco de dados. Se compare for Null, um erro ser gerado. Se compare for omitido, a definio Option Compare determinar o tipo de comparao. StrComp retornar

Valores de retorno Se

string1 for menor do que-1 string2 string1 for igual a 0 string2 string1 for maior do que 1 string2 string1 ou string2 forNull Null

Funo StrConv
Retorna um Variant (String) convertido como especificado. Sintaxe StrConv(string, conversion) A sintaxe da funo StrConv apresenta os argumentos nomeados a seguir: Parte Descrio string Obrigatrio. Expresso de seqncia de caracteres a ser convertida. conversion Obrigatrio; Integer. A soma dos valores especifica o tipo de converso a ser realizada. Definies As definies do argumento conversion so: Constante Valor vbUpperCase 1 VbLowerCase VbProperCase vbWide* VbNarrow* vbKatakana** vbHiragana** vbUnicode vbFromUnicode
* Aplica-se a localidades do Extremo Oriente. ** Aplica-se somente ao Japo.

2 3 4* 8* 16** 32** 64 128

Descrio Converte a seqncia de caracteres para caracteres em maisculas. Converte a seqncia de caracteres para caracteres em minsculas. Converte a primeira letra de cada palavra da seqncia de caracteres para maiscula. Converte os caracteres estreitos (byte simples) da seqncia de caracteres em caracteres largos (byte duplo). Converte os caracteres largos (byte duplo). da seqncia de caracteres em caracteres estreitos (byte simples). Converte os caracteres Hiragana da seqncia de caracteres em caracteres Katakana. Converte os caracteres Katakana da seqncia de caracteres em caracteres Hiragana. Converte a seqncia de caracteres para Unicode utilizando a pgina de cdigo padro do sistema. Converte a seqncia de caracteres de Unicode para a pgina de cdigo padro do sistema.

Observao Essas constantes so especificadas pelo Visual Basic para Aplicativos. Dessa forma, elas podem ser utilizadas em qualquer lugar de seu cdigo no lugar dos valores reais. A maioria delas pode ser combinada, por exemplo vbUpperCase + vbWide, exceto quando forem mutuamente exclusivas, como vbUnicode + vbFromUnicode. As constantes vbWide, vbNarrow, vbKatakana e vbHiragana causam erros em tempo de execuo quando utilizadas em localidades onde no so aplicadas. A seguir so apresentados separadores de palavras vlidos para a utilizao apropriada de letras maisculas e minsculas: Null (Chr$(0)), tab horizontal (Chr$(9)), alimentao de linha (Chr$(10)), tab vertical (Chr$(11)), alimentao de formulrio (Chr$(12)), retorno de carro (Chr$(13)), espao (SBCS) (Chr$(32)). O valor real de um espao varia de acordo com o pas para DBCS.

Funo String
Retorna um Variant (String) que contm uma seqncia de caracteres repetidos do comprimento especificado. Sintaxe

Funes Internas

212

String(number, character) A sintaxe da funo String apresenta os argumentos nomeados a seguir: Parte Descrio number Obrigatrio; Long. Comprimento da seqncia de caracteres retornada. Se number contiver Null, Null ser retornado. character Obrigatrio; Variant. Cdigo de caractere que especifica o caractere ou a expresso de seqncia de caracteres cujo primeiro caractere utilizado para construir a seqncia de caracteres de retorno. Se character contiver Null, Null ser retornado. Comentrios Se voc especificar um nmero maior do que 255 para character, String converter o nmero em um cdigo de caracteres vlido utilizando a seguinte frmula: character Mod 256

Funo UCase
Retorna um Variant (String) que contm a seqncia de caracteres especificada, convertida para letra maiscula. Sintaxe UCase(seqnciadecaracteres) O argumento seqnciadecaracteres exigido qualquer expresso de seqncia de caracteres.vlida. Se seqnciadecaracteres contiver Null, Null ser retornado. Comentrios Somente as letras minsculas so convertidas para maisculas; todas as letras maisculas e caracteres diferentes de letras permanecem inalterados.

Funes Internas

213

Erros interceptveis
Os erros interceptveis podem ocorrer quando um aplicativo est sendo executado. Alguns erros interceptveis podem ocorrer tambm durante o desenvolvimento ou a compilao. Voc pode testar e responder a erros interceptveis utilizando a instruo On Error e o objeto Err. Os nmeros de erros no utilizados no intervalo de 1 a 1000 so reservados para uso futuro pelo Visual Basic. Cdigo Mensagem 3 Return sem GoSub 5 Chamada de procedimento invlida 6 Sobrecarga 7 Memria insuficiente 9 Subscrito fora do intervalo 10 Esta matriz fixa ou est temporariamente bloqueada 11 Diviso por zero 13 Tipo incompatvel 14 Espao insuficiente para seqncia de caracteres 16 Expresso muito complexa 17 No possvel executar a operao solicitada 18 Ocorreu uma interrupo do usurio 20 Recomear sem erro 28 Espao insuficiente para pilha 35 Sub, Function ou Property no definida 47 Nmero excessivo de clientes do aplicativo DLL 48 Erro ao carregar DLL 49 Conveno de chamada DLL invlida 51 Erro interno 52 Nome ou nmero de arquivo invlido 53 O arquivo no foi encontrado 54 Modo de arquivo invlido 55 O arquivo j est aberto 57 Erro de dispositivo de E/S 58 O arquivo j existe 59 Comprimento de registro invlido 61 Disco cheio 62 Entrada depois do fim do arquivo 63 Nmero de registro invlido 67 Nmero excessivo de arquivos 68 Dispositivo no disponvel 70 Permisso negada 71 O disco no est pronto 74 No possvel renomear com unidade de disco diferente 75 Erro de acesso a caminho/arquivo 76 Caminho no encontrado 91 A varivel de objeto ou a varivel de bloco With no foi definida 92 Loop For no inicializado 93 Seqncia de caracteres padro invlida 94 Uso de Null invlido 97 No possvel chamar procedimento Friend para um objeto que no uma instncia da classe de definio 298 DLL do sistema no pode ser carregada 320 No possvel utilizar nomes de dispositivos em nomes de arquivos especficos 321 Formato de arquivo invlido 322 No possvel criar arquivo temporrio necessrio 325 Formato invlido no arquivo de recursos 327 Nome do valor de dados no encontrado 328 Parmetro ilegal; no possvel gravar matrizes 335 No foi possvel acessar registro do sistema 336 Componente ActiveX no foi registrado corretamente 337 Componente ActiveX no foi encontrado 338 Componente ActiveX no executou corretamente 360 Objeto j carregado 361 No possvel carregar ou descarregar este objeto 363 Controle ActiveX especificado no foi encontrado 364 Objeto foi descarregado 365 No possvel carregar dentro desse contexto 368 O arquivo especificado est desatualizado. Este programa exige uma verso posterior 371 O objeto especificado no pode ser utilizado como um formulrio proprietrio de Show 380 Valor de propriedade invlido Funes Internas

214

381 382 383 385 387 393 394 400 402 419 422 423 424 425 429 430 432 438 440 442 443 445 446 447 448 449 450 451 452 453 454 455 457 458 459 460 461 480 481 482 483 484 485 486 520 521 735 744 746 31001 31004 31018 31027 31032 31036 31037

ndice de matriz de propriedades invlido Propriedade Set no pode ser executada em tempo de execuo Propriedade Set no pode ser utilizada com uma propriedade somente leitura necessrio o ndice de matriz de propriedade Propriedade Set no permitida Propriedade Get no pode ser executada em tempo de execuo Propriedade Get no pode ser executada em propriedade somente gravao Formulrio j exibido; impossvel exibir de forma modal Cdigo deve fechar o formulrio modal superior Permisso para utilizar objeto negada Propriedade no encontrada Propriedade ou mtodo no foi encontrado Objeto obrigatrio Uso invlido de objeto O componente ActiveX no pode criar um objeto ou retornar referncia a esse objeto A classe no aceita Automao O nome do arquivo ou o nome da classe no foi encontrado durante a operao de Automao O objeto no aceita esta propriedade ou mtodo Erro de automao A conexo biblioteca de objetos ou de tipos para processo remoto foi perdida O objeto de Automao no possui um valor padro O objeto no suporta esta ao O objeto no suporta argumentos nomeados O objeto no aceita a definio atual de localidade O argumento nomeado no foi encontrado Argumento no opcional ou atribuio de propriedade invlida Nmero de argumentos incorreto ou atribuio de propriedade invlida Object no uma coleo Ordinal invlido A funo DLL especificada no foi encontrada O recurso de cdigo no foi encontrado Erro de proteo de recurso de cdigo Esta tecla j est associada a um elemento desta coleo A varivel utiliza um tipo de automao no suportada no Visual Basic Este componente no suporta eventos Formato da rea de transferncia invlido Formato especificado no corresponde ao formato dos dados No possvel criar imagem AutoRedraw Figura invlida Erro na impressora Driver da impressora no aceita a propriedade especificada Problemas ao obter informaes da impressora a partir do sistema. Certifique-se de que a impressora esteja instalada corretamente Tipo de figura invlido No possvel imprimir imagem de formulrio neste tipo de impressora No possvel esvaziar a rea de transferncia No possvel abrir a rea de transferncia No possvel salvar arquivo no diretrio TEMP Texto procurado no encontrado Substituies muito longas Memria insuficiente Nenhum objeto Classe no est definida No possvel ativar objeto No foi possvel criar objeto incorporado Erro ao salvar o arquivo Erro ao carregar do arquivo

Funes Internas

215

Conjunto de caracteres (128 a 255)


128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 [espao] 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

Estes caracteres no so aceitos pelo Microsoft Windows.

Funes Internas

216

Operador AddressOf
Um operador que faz com que o endereo do procedimento que ele precede seja passado a um procedimento API que espere um ponteiro de funo naquela posio na lista de argumentos. Sintaxe AddressOf procedurename O procedurename obrigatrio especifica o procedimento cujo endereo deve ser passado. Ele deve representar um procedimento em um mdulo padro no projeto em que feita a chamada. Comentrios Quando um nome de procedimento aparece em uma lista de argumentos, normalmente o procedimento avaliado e o endereo do valor de retorno do procedimento passado. AddressOf permite que o endereo do procedimento seja passado a uma funo API Windows em uma biblioteca de vnculos dinmicos (DLL), ao invs de passar o valor de retorno do procedimento. A funo API pode ento usar o endereo para chamar o procedimento em Basic, um processo conhecido como chamada de retorno. O operador AddressOf aparece somente na chamada ao procedimento API. Entretanto, na instruo Declare que descreve a funo API qual passado o ponteiro, o argumento de endereo do procedimento deve ser declarado As Any. Embora voc possa usar AddressOf para passar ponteiros de procedimento entre procedimentos Basic, voc no pode chamar uma funo do tipo ponteiro a partir de Basic. Isto significa, por exemplo, que uma classe escrita em Basic no pode efetuar uma chamada de retorno a seu controlador usando este tipo de ponteiro. Ao usar AddressOf para passar um ponteiro de procedimento entre procedimentos dentro do Basic, o parmetro do procedimento chamado deve ser digitado As Long. Ateno Usar AddressOf pode provocar resultados imprevisveis se voc no compreender totalmente o conceito de chamadas de retorno de funo. Voc deve compreender como a parte Basic da chamada de retorno funciona e tambm o cdigo da DLL qual voc esta passando seu endereo de funo. Depurar este tipo de interaes difcil, pois o programa executado no mesmo processo que o ambiente de desenvolvimento. Em alguns casos, a depurao sistemtica pode no ser possvel.

Funes Internas

217

Mtodo Assert
Suspende condicionalmente a execuo na linha em que aparece o mtodo. Sintaxe object.Assert booleanexpression A sintaxe do mtodo Assert tem o seguinte qualificador de objeto e argumento: Parte Descrio object Obrigatrio. Sempre o objeto Debug. Booleanexpression Obrigatrio. Uma expresso que avalia ouTrue ou False. Comentrios Acionamentos de Assert somente funcionam dentro do ambiente de desenvolvimento. Quando o mdulo compilado em um executvel, as chamadas do mtodo sobre o objeto Debug so omitidas. Todas as booleanexpression so sempre avaliadas. Por exemplo, mesmo se a primeira parte de uma expresso And for avaliada como False, a expresso inteira ser avaliada.

Friend
Modifica a definio de um procedimento em um mdulo de classe para tornar o procedimento passvel de chamada a partir de mdulos que estejam fora da classe, mas que faam parte do projeto dentro do qual a classe definida. Sintaxe [Private | Friend | Public] [Static] [Sub | Function | Property] procedurename O procedurename obrigatrio o nome do procedimento a ser tornado visvel em todo o projeto, mas no visvel a controladores da classe. Comentrios Procedimentos Public em uma classe podem ser chamados a partir de qualquer lugar, mesmo por controladores de ocorrncias da classe. Declarar um procedimento como Private impede que controladores do objeto chamem o procedimento, mas tambm impede que o procedimento seja chamado a partir do projeto em que a prpria classe est definida. Friend torna o procedimento visvel atravs do projeto, mas no a um controlador de uma ocorrncia do objeto. Friend somente pode aparecer em mdulos de classe, e somente pode modificar nomes de procedimento, no variveis ou tipos. Os procedimentos em uma classe podem acessar os procedimentos Friend de todas as outras classes em um projeto. Procedimentos Friend no aparecem na biblioteca de tipos de suas classes. Um procedimento Friend no pode ser posteriormente acoplado.

Instruo RaiseEvent
Dispara um evento declarado a nvel de mdulo dentro de uma classe, formulrio ou documento. Sintaxe RaiseEvent eventname [(argumentlist)] O eventname obrigatrio o nome de um evento declarado dentro do mdulo e segue a conveno de nomeao de varivel do Basic. A sintaxe da instruo RaiseEvent tem estas partes: Parte Descrio eventname Obrigatrio. Nome do evento a ser disparado. argumentlist Opcional. Lista de variveis, matrizes ou expresses delimitadas por vrgulas. A argumentlist deve ser colocada entre parnteses. Se no existir nenhum argumento, os parnteses devem ser omitidos. Comentrios Se o evento no foi declarado em um mdulo em que ele foi provocado, ocorre um erro. O fragmento abaixo ilustra uma declarao de evento e um procedimento em que o evento provocado. ' Declarar um evento a nvel de mdulo de um mdulo de classe Event LogonCompleted (UserName as String) Sub ' Produzir o evento. RaiseEvent LogonCompleted ("AntoineJan") End Sub Se o evento no tem nenhum argumento, incluindo parnteses vazios, no RaiseEvent, seu acionamento produz um erro. Voc no pode usar RaiseEvent para disparar eventos que no sejam explicitamente declarados no mdulo. Por exemplo, se um formulrio tiver um evento Click, voc no poder dispar-lo usando RaiseEvent. Se voc declarar um evento Click no mdulo de formulrio, ele encobrir o prprio evento Click do formulrio. Voc ainda pode acionar o evento Click do formulrio usando a sintaxe normal para chamar o evento, mas no usando a instruo RaiseEvent. O disparo do evento feito na ordem em que as conexes so estabelecidas. Como os eventos podem ter parmetros ByRef, o processo que conecta posteriormente pode receber parmetros que foram alterados por um manipulador de eventos anterior. Exemplo do operador AddressOf

Funes Internas

218

O exemplo abaixo cria um formulrio com uma caixa de listagem contendo uma lista em ordem alfabtica das fontes de seu sistema. Para executar este exemplo, crie um formulrio contendo uma caixa de listagem. O cdigo para o formulrio o seguinte: Option Explicit Private Sub Form_Load() Module1.FillListWithFonts List1 End Sub Coloque o cdigo abaixo em um mdulo. O terceiro argumento na definio da funo EnumFontFamilies um Long que representa um procedimento. O argumento deve conter o endereo do procedimento, ao invs do valor retornado pelo procedimento. Na chamada a EnumFontFamilies, o terceiro argumento exige o operador AddressOf para retornar o endereo do procedimento EnumFontFamProc que o nome do procedimento de retorno de chamado que voc fornece ao chamar a funo API Windows EnumFontFamilies. O Windows chama EnumFontFamProc uma vez para cada uma das famlias de fonte no sistema quando voc passa AddressOf EnumFontFamProc a EnumFontFamilies. O ltimo argumento passado a EnumFontFamilies especifica a caixa de listagem onde as informaes so exibidas. 'Tipos de enumerao de fonte Public Const LF_FACESIZE = 32 Public Const LF_FULLFACESIZE = 64 Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName(LF_FACESIZE) As Byte End Type Type NEWTEXTMETRIC tmHeight As Long tmAscent As Long tmDescent As Long tmInternalLeading As Long tmExternalLeading As Long tmAveCharWidth As Long tmMaxCharWidth As Long tmWeight As Long tmOverhang As Long tmDigitizedAspectX As Long tmDigitizedAspectY As Long tmFirstChar As Byte tmLastChar As Byte tmDefaultChar As Byte tmBreakChar As Byte tmItalic As Byte tmUnderlined As Byte tmStruckOut As Byte tmPitchAndFamily As Byte tmCharSet As Byte ntmFlags As Long ntmSizeEM As Long ntmCellHeight As Long ntmAveWidth As Long End Type ' Sinalizadores de campo ntmFlags Public Const NTM_REGULAR = &H40& Public Const NTM_BOLD = &H20& Public Const NTM_ITALIC = &H1& ' Sinalizadores tmPitchAndFamily Public Const TMPF_FIXED_PITCH = &H1 Funes Internas

219

Public Const TMPF_VECTOR = &H2 Public Const TMPF_DEVICE = &H8 Public Const TMPF_TRUETYPE = &H4 Public Const ELF_VERSION = 0 Public Const ELF_CULTURE_LATIN = 0 ' Mscaras EnumFonts Public Const RASTER_FONTTYPE = &H1 Public Const DEVICE_FONTTYPE = &H2 Public Const TRUETYPE_FONTTYPE = &H4 Declare EnumFontFamilies Lib "gdi32" "EnumFontFamiliesA" (ByVal hDC As Long, ByVal lpszFamily As ByVal lpEnumFontFamProc As Long, LParam As Any) As Long Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long Declare Function ReleaseDC Lib "user32" (ByVal hWnd ByVal hDC As Long) As Long Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, _ As ListBox) As Long Dim FaceName As String Dim FullName As String FaceName = StrConv(lpNLF.lfFaceName, vbUnicode) LParam.AddItem Left$(FaceName, InStr(FaceName, vbNullChar) - 1) EnumFontFamProc = 1 End Function Sub FillListWithFonts(LB As ListBox) Dim hDC As Long LB.Clear hDC = GetDC(LB.hWnd) EnumFontFamilies hDC, vbNullString, AddressOf EnumFontFamProc, LB ReleaseDC LB.hWnd, hDC End Sub Exemplo do mtodo Assert O exemplo abaixo mostra como usar o mtodo Assert. O exemplo exige um formulrio com dois controles de boto nele. Os nomes de boto padro so Command1 e Command2. Quando o exemplo executado, clicar no boto Command1 liga e desliga o texto no boto entre 0 e 1. Clicar Command2 nada provoca ou provoca uma declarao, dependendo do valor exibido em Command1. A declarao encerra a execuo com a ltima instruo executada, a linha Debug.Assert, realada. Option Explicit Private blnAssert As Boolean Private intNumber As Integer Private Sub Command1_Click() blnAssert = Not blnAssert intNumber = IIf(intNumber <> 0, 0, 1) Command1.Caption = intNumber End Sub Private Sub Command2_Click() Debug.Assert blnAssert End Sub Private Sub Form_Load() Command1.Caption = intNumber Command2.Caption = "Assert Tester" End Sub Function Alias String, As _ Long, _ _ _

ByVal FontType As Long, LParam

Funes Internas

220

Exemplo Friend Quando colocado em um mdulo de classe, o cdigo abaixo torna a varivel membro dblBalance acessvel a todos os usurios da classe dentro do projeto. Qualquer usurio da classe pode obter o valor; somente o cdigo dentro do projeto pode designar um valor quela varivel. Private dblBalance As Double Public Property Get Balance() As Double Balance = dblBalance End Property Friend Property Let Balance(dblNewBalance As Double) dblBalance = dblNewBalance End Property Exemplo da instruo RaiseEvent O exemplo abaixo usa eventos para uma contagem regressiva dos segundos durante uma demonstrao da mais rpida corrida de 100 metros rasos. O cdigo ilustra todos os mtodos, propriedades e instrues relacionados com evento, incluindo a instruo RaiseEvent. A classe que provoca um evento na origem do evento e as classes que implementam o evento so os coletores. Uma origem de evento pode ter mltiplos coletores para os eventos que ela gera. Quando a classe provoca o evento, o evento disparado em todas as classes que escolheram coletar eventos para aquela ocorrncia do objeto. O exemplo tambm usa um formulrio (Form1) com um boto (Command1), um rtulo (Label1), e duas caixas de texto (Text1 e Text2). Quando voc clica no boto, a primeira caixa de textos exibe "A partir de agora" e a segunda inicia a contagem dos segundos. Quando o tempo total (9,84 segundos) tiver decorrido, a primeira caixa de texto exibe "At agora" e a segunda exibe "9.84" O cdigo para Form1 especifica os estados inicial e final do formulrio. Ele tambm contm o cdigo executado quando eventos so provocados. Option Explicit Private WithEvents mText As TimerState Private Sub Command1_Click() Text1.Text = "A partir de agora" Text1.Refresh Text2.Text = "0" Text2.Refresh Call mText.TimerTask(9.84) End Sub Private Sub Form_Load() Command1.Caption = "Clique para iniciar o cronmetro " Text1.Text = "" Text2.Text = "" Label1.Caption = "Os 100 metros mais rpidos jamais corridos levaram este tempo:" Set mText = New TimerState End Sub Private Sub mText_ChangeText() Text1.Text = "At agora" Text2.Text = "9,84" End Sub Private Sub mText_UpdateTime(ByVal dblJump As Double) Text2.Text = Str(Format(dblJump, "0")) DoEvents End Sub O cdigo restante est no mdulo de classe chamado TimerState. Includo entre os comandos neste mdulo esto as instrues RaiseEvent. Option Explicit Public Event UpdateTime(ByVal dblJump As Double) Public Event ChangeText() Public Sub TimerTask(ByVal Duration As Double) Dim dblStart As Double Dim dblSecond As Double Dim dblSoFar As Double dblStart = Timer dblSoFar = dblStart

Funes Internas

221

Do While Timer < dblStart + Duration If Timer - dblSoFar >= 1 Then dblSoFar = dblSoFar + 1 RaiseEvent UpdateTime(Timer - dblStart) End If Loop RaiseEvent ChangeText End Sub

Propriedade OLERequestPendingMsgText Retorna ou define o texto da mensagem alternativa "ocupado" exibido quando a entrada de mouse ou teclado recebida enquanto um pedido de automao est pendente. No est disponvel durante o tempo de criao.

Sintaxe
object.OLERequestPendingMsgText [ = string] A sintaxe da propriedade OLERequestPendingMsgText tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. string Uma expresso de seqncia de caracteres que avalia para o texto da mensagem que ser exibida na caixa de mensagem alternativa para a condio pendente do pedido ActiveX. Comentrios O Visual Basic exibe uma caixa de dilogo padro Component Request Pending quando uma entrada de mouse ou teclado recebida enquanto um pedido de automao est pendente. A caixa de dilogo inclui texto e um boto Switch To que se destinam a serem usados com componentes ActiveX visveis como o Microsoft Excel. Existem situaes em que a caixa de dilogo padro pode no atender s suas necessidades: Seu programa pode chamar um mtodo de um objeto fornecido por um componente ActiveX que no tenha interface de usurio. Os componentes ActiveX criados usando a Professional Edition do Visual Basic, por exemplo, podem ser executados em segundo plano sem quaisquer formulrios visveis. O componente ActiveX chamado pode ter sido criado usando os recursos Remote Automation do Visual Basic, Enterprise Edition, e pode estar sendo executado em outro computador localizado a alguma distncia do usurio. Se o seu programa carregou uma pasta de trabalho do Microsoft Excel usando a funo GetObject, a pasta de trabalho no estar visvel quando o usurio alternar para o Microsoft Excel. Na realidade, o prprio Microsoft Excel pode no estar visvel, caso em que o boto Switch To nada faz. Nestas situaes, o texto padro e o boto Switch To so inadequados e podem confundir o usurio de seu programa. A propriedade OLERequestPendingMsgText permite substituir a caixa de dilogo Component Request Pending padro por uma caixa de mensagem alternativa. Definir OLERequestPendingMsgText para sua prpria seqncia de caracteres de mensagem faz com que a caixa de dilogo padro Component Request Pending seja substituda por uma caixa de mensagem simples contendo seu texto de mensagem e um boto O. Applies To Uma vez que um pedido de automao tenha sido aceito por um componente ActiveX, no h maneira de cancel-lo. Se OLERequestPendingMsgText for igual a uma seqncia de caracteres vazia (""), a caixa de dilogo Component Request Pending padro exibida. Importante Quando voc sabe que um pedido de automao pode levar mais que alguns segundos, e estiver usando um componente ActiveX remoto ou oculto, deve-se definir uma mensagem alternativa. Para componentes ActiveX remotos, a mensagem alternativa recomendvel para todos os pedidos. Trfego de rede pode fazer ocasionalmente com que mesmo um pedido ActiveX muito curto leve diversos segundos.

Propriedade OLERequestPendingMsgTitle
Retorna ou define a legenda da mensagem alternativa "ocupado" exibida quando a entrada de mouse ou teclado recebida enquanto um pedido de automao est pendente. No est disponvel durante o tempo de criao. Sintaxe object.OLERequestPendingMsgTitle [= string] A sintaxe da propriedade OLERequestPendingMsgTitle tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. string Uma expresso de seqncia de caracteres que avalia para a legenda da caixa de mensagem alternativa para a condio pendente do pedido ActiveX. Comentrios Funes Internas

222

Caso a propriedade OLERequestPendingMsgText tenha sido definida, o valor da propriedade OLERequestPendingMsgTitle usado como legenda da caixa de mensagem "ocupado" alternativa que substitui a caixa de dilogo Component Request Pending padro. O valor padro da propriedade OLERequestPendingMsgTitle o valor atual da propriedade Title do objeto App. Esta uma configurao recomendada. Se a propriedade OLERequestPendingMsgText for definida como uma seqncia de caracteres vazia (""), a propriedade OLERequestPendingMsgTitle ignorada.

Propriedade OLERequestPendingTimeout
Retorna ou define o nmero de milisegundos que devem decorrer antes que a caixa de dilogo Component Request Pending (ou mensagem alternativa) possa ser disparada pela entrada de mouse ou teclado recebida, enquanto o pedido de automao est pendente. No est disponvel durante o tempo de criao. Sintaxe object.OLERequestPendingTimeout [= milliseconds] A sintaxe da propriedade OLERequestPendingTimeout tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. milliseconds Um inteiro Long representando o nmero de milisegundos que deve decorrer antes que uma mensagem de ocupado seja disparada. Comentrios O valor padro para esta propriedade 5000 milisegundos (cinco segundos). Importante Este valor de tempo limite tambm afeta documentos que so vinculados ou incorporados usando o controle OLE Container ou a Toolbox. Caso esteja usando documentos vinculados ou incorporados e altera esta propriedade antes de um pedido de automao, pode ser interessante reconfigurar o valor posteriormente.

Propriedade OLEServerBusyMsgText
Retorna ou define o texto da mensagem alternativa "ocupado" que exibida no lugar da caixa de dilogo Component Busy padro se um componente ActiveX rejeitar um pedido de automao. No est disponvel durante o tempo de criao. Sintaxe object.OLEServerBusyMsgText [= String] A sintaxe da propriedade OLEServerBusyMsgText tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. String Uma expresso de seqncia de caracteres que avalia para a mensagem de texto que ser exibida na caixa de mensagem alternativa para a condio ocupada do componente ActiveX. Comentrios O Visual Basic continua a repetir um pedido de automao para o nmero de milisegundos especificados pela propriedade OLEServerBusyTimeout. Caso o componente ActiveX no tenha aceito o pedido dentro daquele intervalo, o Visual Basic exibe uma caixa de dilogo Component Busy padro. Esta caixa de dilogo inclui texto e um boto Switch To que se destinam a serem usados com componentes ActiveX visveis como o Microsoft Excel. Existem situaes em que a caixa de dilogo padro pode no atender s suas necessidades: O programa pode chamar um mtodo de um objeto fornecido por um componente ActiveX que no tenha uma interface de usurio. Os componentes ActiveX criados usando a Professional Edition do Visual Basic, por exemplo, podem ser executados em segundo plano sem quaisquer formulrios visveis. O componente ActiveX chamado pode ter sido criado usando os recursos de Remote Automation do Visual Basic, Enterprise Edition, e pode estar sendo executado em outro computador a alguma distncia do usurio. Caso seu programa tenha carregado uma pasta de trabalho do Microsoft Excel usando a funo GetObject, a pasta de trabalho no estar visvel quando o usurio alterna para o Microsoft Excel. Na realidade, o prprio Microsoft Excel pode no estar visvel, caso em que o boto Switch To no faz nada. Nestas situaes, o texto padro e o boto Switch To so inadequados, e podem confundir o usurio de seu programa. A propriedade OLEServerBusyMsgText permite substituir a caixa de dilogo Component Busy padro por uma caixa de mensagem alternativa. Configurando OLEServerBusyMsgText para sua prpria seqncia de caracteres de mensagem faz com que a caixa de dilogo Component Busy seja substituda por uma caixa de mensagem simples contendo seu texto de mensagem, um boto O e um boto Cancel. Se OLERequestPendingMsgText for igual a uma seqncia de caracteres vazia (""), a caixa de dilogo Component Busy padro exibida. Caso o usurio pressione o boto Cancel na caixa de dilogo Component Busy padro, ou na caixa de mensagem alternativa, o erro -2147418111 (&H80010001) do ActiveX produzido no procedimento que efetuou o pedido de automao. Importante Quando se sabe que um pedido de automao pode levar mais que alguns segundos, e est-se usando um componente ActiveX oculto ou remoto deve-se definir uma mensagem alternativa. Para componentes ActiveX remotos, a mensagem alternativa recomendada para todos os pedidos. Trfego de rede ocasionalmente pode fazer com que at mesmo um pedido ActiveX muito curto leve vrios segundos.

Funes Internas

223

Propriedade OLEServerBusyMsgTitle
Retorna ou define a legenda da mensagem alternativa "ocupado" que exibida quando um componente ActiveX rejeita um pedido de automao. No disponvel durante o tempo de criao. Sintaxe object.OLEServerBusyMsgTitle [= String] A sintaxe da propriedade OLEServerBusyMsgTitle tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. String Uma expresso de seqncia de caracteres que avalia para a legenda da caixa de mensagem alternativa para a condio ocupada do componente ActiveX. Comentrios Caso a propriedade OLEServerBusyMsgText tenha sido definida, o valor da propriedade OLEServerBusyMsgTitle usado como a legenda da mensagem alternativa ocupado que substitui a caixa de dilogo Component Busy padro. O valor padro da propriedade OLEServerBusyMsgTitle o valor atual da propriedade Title do objeto App. Esta a configurao recomendada. Caso a propriedade OLEServerBusyMsgText esteja definida como uma seqncia de caracteres vazia (""), a propriedade OLEServerBusyMsgTitle ignorada.

Propriedade OLEServerBusyRaiseError
Determina se um pedido de automao rejeitado produz um erro, ao invs de exibir a caixa de dilogo Component Busy padro ou uma mensagem alternativa. No est disponvel durante o tempo de criao. Sintaxe object.OLEServerBusyRaiseError [ = boolean] A sintaxe da propriedade OLEServerBusyRaiseError tem estas trs partes: Parte Descrio object Uma expresso de objeto avalia para um objeto na lista Applies To. boolean Uma expresso booleana que especifica se um erro deve ser produzido, conforme descrito em Configuraes. Configuraes As configuraes de boolean so: Configurao Descrio True (Padro) Um erro produzido quando o nmero de milisegundos especificado pela propriedade OLEServerBusyTimeout foi usado. False Dependendo da configurao da propriedade OLEServerBusyMsgText, ou a caixa de dilogo Server Busy padro ou uma mensagem alternativa de ocupado ser exibida. Comentrios Produzir um erro quando um componente ActiveX rejeita um pedido de automao provoca o retorno do controle a seu programa, o que lhe permite oferecer sua prpria caixa de dilogo personalizada no lugar da caixa de dilogo Component Busy padro ou da mensagem alternativa de ocupado. O erro de automao que ser produzido -2147418111 (&H80010001).

Propriedade OLEServerBusyTimeout
Retorna ou define o nmero de milisegundos durante os quais um pedido de automao continuar a ser repetido, antes que a caixa de dilogo Component Busy padro (ou uma mensagem alternativa) seja exibida. No disponvel durante o tempo de criao. Sintaxe object.OLEServerBusyTimeout [= milliseconds] A sintaxe da propriedade OLEServerBusyTimeout tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. milliseconds Um inteiro Long representando o nmero de milisegundos durante os quais ser repetido um pedido de automao. Comentrios O valor padro desta propriedade 10.000 milisegundos (dez segundos).

Funes Internas

224

Importante Este valor de tempo limite tambm afeta os documentos vinculados ou incorporados usando o controle OLE Container ou a Toolbox. Caso esteja usando documentos vinculados ou incorporados e alterar esta propriedade antes de um pedido de automao, pode ser interessante redefinir os valores posteriormente.

Propriedade EXEName
Retorna a parte principal do nome do arquivo executvel (sem a extenso) que est sendo executado no momento. Se estiver sendo executada em um ambiente de desenvolvimento, retorna o nome do projeto. Sintaxe object.EXEName O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade TasVisible
Retorna ou define um valor que determina se o aplicativo aparece na lista de tarefas do Windows. Sintaxe object.TasVisible [= boolean] A sintaxe da propriedade TasVisible tem estas trs partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. boolean Uma expresso booleana que determina se o aplicativo aparece na lista de tarefas, conforme descrito em Configuraes. Configuraes As configuraes para boolean so: Configurao Descrio True (Padro) O aplicativo aparece na lista de tarefas do Windows. False O aplicativo no aparece na lista de tarefas do Windows. Comentrios A propriedade TasVisible somente pode ser configurada como False em aplicativos que no exibem uma interface como, por exemplo componentes ActiveX que no contenham ou exibam objetos Form. Enquanto o aplicativo exibe uma interface, a propriedade TasVisible automaticamente definida como True.

Propriedade hInstance
Retorna um identificador ocorrncia do aplicativo. Sintaxe object.hInstance O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios A propriedade hInstance retorna um tipo de dados Long. Ao trabalhar com um projeto no ambiente de desenvolvimento Visual Basic, a propriedade hInstance retorna o identificador de ocorrncia da ocorrncia de Visual Basic.

Propriedade Comments
Retorna ou define uma seqncia de caracteres contendo comentrios sobre o aplicativo em execuo. Somente leitura durante o tempo de execuo. Sintaxe object.Comments O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Pode-se definir esta propriedade durante o projeto na caixa Type na guia Mae da caixa de dilogo Project Properties.

Propriedade CompanyName
Retorna ou define o valor de uma seqncia de caracteres contendo o nome da empresa ou do criador de um aplicativo em execuo. Somente leitura durante o tempo de execuo. Sintaxe object.CompanyName O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Pode-se definir esta propriedade durante o projeto na caixa Type na guia Mae da caixa de dilogo Project Properties.

Propriedade FileDescription
Retorna ou define o valor de uma seqncia de caracteres contendo informaes sobre descrio de arquivo relativas ao aplicativo em execuo. Somente leitura durante o tempo de execuo. Sintaxe object.FileDescription

Funes Internas

225

O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Durante o projeto, pode-se definir esta propriedade na caixa Type na guia Mae da caixa de dilogo Project Properties.

Propriedade LegalCopyright
Retorna ou define o valor da seqncia de caracteres contendo informaes legais de copyright sobre o aplicativo em execuo. Somente leitura durante o tempo de execuo. Sintaxe object.LegalCopyright O espao reservado object representa uma expresso de objeto que avalia para um objeto na ista Applies To. Comentrios Durante o projeto, pode-se definir esta propriedade na caixa Type da guia Mae na caixa de dilogo Project Properties.

Propriedade LegalTrademars
Retorna ou define o valor da seqncia de caracteres contendo informaes legais de marca registrada relativas ao aplicativo em execuo. Somente leitura durante o tempo de execuo. Sintaxe object.LegalTrademars O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Durante o projeto, pode-se definir esta propriedade na caixa Type da guia Mae na caixa de dilogo Project Properties.

Propriedade Major
Retorna ou define o nmero de verso mais importante do projeto. Somente leitura durante o tempo de execuo. Sintaxe object.Major O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O valor da propriedade Major situa-se no intervalo de 0 a 9.999. Esta propriedade oferece informaes de verso sobre o aplicativo em execuo. Durante o projeto, pode-se definir esta propriedade na caixa Major da guia Mae da caixa de dilogo Project Properties.

Propriedade Minor
Retorna ou define o nmero de verso secundrio do projeto. Somente leitura durante o tempo de execuo. Sintaxe object.Minor O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O valor da propriedade Minor situa-se no intervalo 0 a 9.999. Esta propriedade oferece informaes de verso sobre o aplicativo em execuo. Durante o projeto, pode-se definir esta propriedade na caixa Minor da guia Mae na caixa de dilogo Project Properties.

Propriedade ProductName
Retorna ou define o valor de uma seqncia de caracteres contendo o nome do produto do aplicativo em execuo. Somente leitura durante o tempo de execuo. Sintaxe object.ProductName O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Durante o projeto, pode-se definir esta propriedade na caixa Type da guia Mae na caixa de dilogo Project Properties.

Propriedade Revision
Retorna ou define o nmero de verso da reviso do projeto. Somente leitura durante o tempo de execuo. Sintaxe object.Revision O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O valor da propriedade Revision situa-se no intervalo 0 a 9.999. Esta propriedade fornece informaes de verso sobre o aplicativo em execuo. Durante o projeto, pode-se definir esta propriedade na caixa Revision da guia Mae na caixa de dilogo Project Properties.

Evento AccesseyPress
Ocorre quando o usurio do controle pressiona uma das teclas de acesso do controle, ou quando a tecla ENTER pressionada tendo o desenvolvedor definido a propriedade Default como True, ou quando a tecla ESCAPE pressionada tendo o desenvolvedor definido a propriedade Cancel como True. A propriedade Default e a propriedade Cancel so ativadas pelo autor do controle definindo a propriedade DefaultCancel como True. Sintaxe Funes Internas

226

Sub object_AccesseyPress(eyAscii As Integer) A sintaxe do evento AccesseyPress tem trs partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. eyAscii Um inteiro que contm o valor Ascii da tecla (sem o ALT) que causou o disparo do evento AccesseyPress, da mesma maneira que o evento padro eyPress.

Propriedade Accesseys
Retorna ou define uma seqncia de caracteres contendo as teclas que funcionaro como teclas de acesso para o controle. Sintaxe object.Accesseys [= AccesseyString] A sintaxe da propriedade Accesseys tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. AccesseyString Uma seqncia de caracteres contendo as teclas que funcionaro como teclas de acesso. Comentrios A propriedade Accesseys uma seqncia de caracteres que contm todas as teclas de acesso do controle. Como exemplo, para configurar as letras S e Y como teclas de acesso, a propriedade Accesseys seria definida como "sy". Quando um usurio pressiona uma das teclas de acesso juntamente com a tecla ALT, o controle recebe o foco (dependendo da configurao da propriedade ForwardFocus). As teclas de acesso a controles constituintes so implicitamente includas como Accesseys, embora no apaream na propriedade Accesseys.

Propriedade Alignable
Retorna ou define um valor que determina se um controle alinhvel, ou pode utilizar a propriedade extensora Align. A propriedade Alignable de leitura/gravao no momento da criao do controle, e no est disponvel durante o tempo de execuo do controle. Configuraes As configuraes de Alignable so: Configurao Descrio True O controle alinhvel; o recipiente adicionar a propriedade Align ao objeto extensor. False O controle no alinhvel. Este o valor padro. Comentrios O alinhamento do prprio controle ser manipulado pelo recipiente; o autor do controle pode usar a propriedade extensora Align para decidir como redesenhar o controle e dispor os controles constituintes em resposta a um alinhamento. Observao: Nem todos os recipientes suportam controles alinhveis. A interceptao de erros deve ser usada se voc acessa a propriedade Align extensora para determinar como seu controle foi alinhado.

Objeto AmbientProperties
Um objeto AmbientProperties contm informaes do ambiente de um recipiente para sugerir o comportamento a controles contidos no recipiente. Comentrios Os recipientes oferecem propriedades de ambiente para sugerir comportamentos aos controles. Como exemplo, BacColor uma das propriedades de ambiente padro; o recipiente est sugerindo que o controle bem comportado deva definir suas propriedades de cor de fundo. As propriedades do objeto AmbientProperties so as propriedades de ambiente do recipiente. Estas propriedades so somente leitura. Algumas propriedades de ambiente so padro, enquanto que outras so especficas de determinados recipientes. Um controle pode acessar propriedades de ambiente no-padro, mas isto torna o controle especfico de recipiente. O controle deve tratar o caso onde uma propriedade de ambiente no esteja presente no recipiente atual. Quando o controle compilado, o Visual Basic no tem como saber quais propriedades de ambiente especficas de recipiente podem estar disponveis quando o controle executado; portanto, as referncias a propriedades de ambiente especficas de recipiente sero sempre acopladas posteriormente. O objeto AmbientProperties no est disponvel quando o evento Initialize produzido; mas est disponvel quando o evento InitProperties ou ReadProperties produzido. O objeto AmbientProperties tem diversas propriedades padro: A propriedade BacColor, uma propriedade Color que contm a cor sugerida para o interior do controle contido. O padro fornecido pelo Visual Basic caso o recipiente no suporte esta propriedade 0x80000005: a cor do sistema para o segundo plano de uma janela.

Funes Internas

227

A propriedade DisplayAsDefault, uma propriedade Boolean que especifica se o controle o controle padro. O padro do

Visual Basic fornecido se o recipiente no suporta esta propriedade False.


A propriedade DisplayName, uma propriedade String contendo o nome de controle que deve ser automaticamente exibido.

O padro fornecido pelo Visual Basic se o recipiente no suporta esta propriedade uma seqncia vazia: "".
A propriedade Font, um objeto Font que contm as informaes de fonte sugeridas do controle contido. O padro fornecido

pelo Visual Basic caso o recipiente no suporte esta propriedade MS Sans Serif 8.
A propriedade ForeColor, uma propriedade Color que contm a cor sugerida para o primeiro plano do controle contido. O

padro fornecido pelo Visual Basic caso o recipiente no suporte esta propriedade 0x80000008: a cor do sistema para texto de janela. A propriedade LocaleID, uma propriedade Long que especifica o idioma e pas do usurio. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade, a ID do local atual do sistema. A propriedade MessageReflect, uma propriedade Boolean que especifica se o recipiente suporta reflexo de mensagem. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade, False. A propriedade Palette, um objeto Picture cuja paleta especifica a paleta sugerida para o controle contido. A propriedade RightToLeft, uma propriedade Boolean que indica a direo de exibio do texto, e a aparncia visual do controle em um sistema bidirecional. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade, False. A propriedade ScaleUnits, uma propriedade String contendo o nome da unidade de coordenadas usada pelo recipiente. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade, uma seqncia vazia: "". A propriedade ShowGrabHandles, uma propriedade Boolean que especifica se o recipiente trata a exibio de alas de manipulao. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade True. A propriedade ShowHatching, uma propriedade Boolean que especifica se o recipiente trata da exibio de hachurado. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade True. A propriedade SupportsMnemonics, uma propriedade Boolean que especifica se o recipiente trata de teclas de acesso para o controle. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade False. A propriedade TextAlign, uma enumerao que especifica como o texto deve ser alinhado. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade, 0 - General Align. A propriedade UserMode, uma propriedade Boolean que especifica se o ambiente est em modo de criao ou modo de usurio final. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade. True. A propriedade UIDead, uma propriedade Boolean que especifica se a interface de usurio no est respondendo. O padro fornecido pelo Visual Basic, caso o recipiente no suporte esta propriedade, False.

Propriedade Ambient
Retorna um objeto AmbientProperties contendo as propriedades de ambiente do recipiente. A propriedade Ambient no est disponvel no momento da criao do controle e ser somente leitura durante o tempo de execuo do controle. Sintaxe object.Ambient A sintaxe da propriedade Ambient tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To.

Evento AmbientChanged
Ocorre quando se altera o valor de um propriedade de ambiente. Sintaxe Sub object_AmbientChanged(PropertyName As String) A sintaxe do evento AmbientChanged tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. PropertyName Uma seqncia que identifica a propriedade de ambiente que foi modificada. Comentrios Usando PropertyName, o controle pode acessar o objeto AmbientProperties na propriedade Ambient para verificar o novo valor da propriedade de ambiente alterado. Se for colocada uma ocorrncia do controle em um formulrio do Visual Basic, e a propriedade FontTransparent do formulrio for alterada, o evento AmbientChanged no se produzir.

Evento ApplyChanges
Ocorre quando o usurio pressiona o boto O ou o boto Apply na pgina de propriedades, ou quando as pginas de propriedade so alternadas selecionando-se guias. Sintaxe Sub object_ApplyChanges() A sintaxe do evento ApplyChanges tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To.

Funes Internas

228

Comentrios Quando o evento ApplyChanges produzido, o autor da pgina de propriedades precisa tratar da configurao de todo os novos valores de propriedade dos controles; espera-se que o autor tenha mantido o controle de quais propriedades foram alteradas, caso contrrio todas as propriedades precisaro ser definidas. Para saber quais controles devem ser alterados, utilize a propriedade SelectedControls. O evento ApplyChanges somente ser produzido se a propriedade Changed for definida como True.

Mtodo AsyncRead
Inicia a leitura dos dados para o recipiente, a partir de um arquivo ou URL de maneira assncrona. Sintaxe object.AsyncRead Target, AsyncType [, PropertyName] A sintaxe do mtodo AsyncRead tem estas trs partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Target Uma expresso de seqncia de caracteres especificando a localizao dos dados. Este pode ser uma caminho ou um URL. AsyncType Uma expresso de inteiro especificando como os dados sero apresentados, conforme descrito em Configuraes. PropertyName Uma expresso de seqncia de caracteres opcional especificando o nome da propriedade a ser carregada. Configuraes As configuraes para AsyncType so: Configurao Descrio vbAsyncTypeFile Os dados so fornecidos em um arquivo que criado pelo Visual Basic. VbAsyncTypeByteArray Os dados so fornecidos como uma matriz de bytes que contm os dados recuperados. Pressupe-se que o autor do controle saiba como manipular os dados. VbAsyncTypePicture Os dados so fornecidos em um objeto Picture. Comentrios Uma vez que os dados pedidos pelo mtodo AsyncRead estejam disponveis, o evento AsyncReadComplete ser criado no objeto. A leitura assncrona pode ser cancelada antes de seu trmino chamando o mtodo CancelAsyncRead. O parmetro PropertyName pode ser qualquer nome arbitrrio, uma vez que sua nica funo atuar como um identificador para este pedido de dados em particular. O valor em PropertyName usado para identificar a leitura assncrona em particular para cancelar o mtodo CancelAsyncRead, e o valor em PropertyName tambm usado para identificar a leitura assncrona em particular que foi completada no evento AsyncReadComplete.

Evento AsyncReadComplete
Ocorre quando o recipiente completou um pedido de leitura assncrona. Sintaxe Sub object_AsyncReadComplete(PropertyValue As AsyncProperty) A sintaxe de evento AsyncReadComplete tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. PropertyValue Um objeto AsyncProperty que contm as propriedades abaixo: Value Uma Variant contendo os resultados da leitura assncrona. Esta a propriedade padro. PropertyName Uma seqncia de caracteres contendo o nome da propriedade que foi passado no mtodo AsyncRead. AsyncType Um nmero inteiro especificando o tipo de dados contido na propriedade Value, conforme descrito em Configuraes. Configuraes As configuraes para AsyncType so: Configurao Descrio vbAsyncTypeFile A propriedade Value contm uma seqncia de caracteres que um caminho at um arquivo temporrio que contm os dados. vbAsyncTypeByteArray A propriedade Value contm uma matriz de bytes que contm os dados. vbAsyncTypePicture A propriedade Value contm um objeto de figura do formato correto. Comentrios

Funes Internas

229

O valor contido em PropertyName especifica o pedido de leitura de dados assncronos em particular que foi completado, e corresponde ao valor dado em um acionamento anterior do mtodo AsyncRead. O cdigo de tratamento de erro devia ter sido colocado no procedimento de evento AsyncReadComplete porque uma condio de erro pode ter interrompido a descarga. Se foi este o caso, este erro ocorre quando a propriedade Value do objeto AsyncProperty acessada.

Propriedade BacStyle (Objeto UserControl)


Retorna ou define um valor indicando o tipo de segundo plano do controle. A propriedade BacStyle para leitura/gravao durante o tempo de criao, e somente leitura durante o tempo de execuo do controle. Sintaxe object.BacStyle [= enum] A sintaxe da propriedade BacStyle tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. enum Um valor enumerado que determina como o segundo plano do controle ser exibido, conforme descrito em Configuraes. Configuraes As configuraes parar enum so: Configurao Descrio 0-Transparent Segundo plano transparente. Os controles atrs deste controle e o segundo plano do formulrio que o contm sero visveis nas reas vazias deste controle. A rea da exibio do controle pode, ento, ser dividida em duas reas, a poro que parte de um controle constituinte, e o restante. Esta ltima rea da exibio do controle no pode receber desenhos, e a parte dos controles que esto colocados no controle pelo desenvolvedor ou usurio final que carem nesta ltima rea tambm sero invisveis. Os eventos de mouse que carem nesta ltima rea no pertencero ao controle, mas ao recipiente subjacente. 1-Opaque Segundo plano opaco. Este o padro. 2-TransparentPaint Segundo plano transparente. A diferena entre esta opo e 0Transparent que os controles atrs deste controle e o segundo plano do formulrio estaro visveis atravs das reas vazias do controle, mas a rea inteira do controle pode receber desenhos, os controles colocados sobre este controle no estaro invisveis e todos os eventos de mouse que carem dentro deste controle pertencero a ele.

Propriedade BorderStyle
Retorna ou define um valor indicando qual o estilo de borda do controle. A propriedade BorderStyle de leitura/gravao durante o tempo de criao do controle, e somente leitura durante o tempo de execuo do controle. Sintaxe object.BorderStyle [= enum] A sintaxe da propriedade BorderStyle tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. enum Um valor enumerado que determina qual estilo de borda do controle, conforme descrito em Configuraes. Configuraes As configuraes para enum so: Configurao Descrio 0-None Nenhuma borda. Este o valor padro. 1-Fixed Single Uma nica linha desenhada ao redor do controle.

Mtodo CancelAsyncRead
Cancela um pedido de dados assncronos. Sintaxe object.CancelAsyncRead [PropertyName] A sintaxe do mtodo CancelAsyncRead tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To.

Funes Internas

230

PropertyName

Uma expresso de seqncia de caracteres opcional especificando o nome do pedido de dados assncronos a serem cancelado.

Comentrios Somente a leitura de dados assncronos especificada por PropertyName cancelada; todas as outras continuam normalmente. O valor contido em PropertyName especifica um determinado pedido de leitura de dados assncronos, e deve corresponder ao valor dado em um acionamento anterior do mtodo AsyncRead. Caso PropertyName no seja fornecido, o ltimo acionamento do mtodo AsyncRead que no forneceu um PropertyName ser cancelado.

Propriedade CanGetFocus
Retorna ou define um valor que determina se um controle pode receber o foco. A propriedade CanGetFocus de leitura/gravao durante o tempo de criao do controle, e no est disponvel durante o tempo de execuo. Configuraes As configuraes para CanGetFocus so: Configurao Descrio True O controle pode receber foco. Caso o controle contenha controles constituintes, o prprio controle poder receber o foco, a menos que nenhum de seus controles constituintes possa receber o foco. Cabe ao autor do controle escrever o cdigo que desenha o retngulo do foco no controle quando ele recebe o foco. Este o valor padro. False O controle no pode receber foco. Comentrios Desde que o controle contenha pelo menos um controle constituinte, que tenha sido configurado para receber o foco, CanGetFocus no pode ser definido como False. Caso CanGetFocus seja False, nenhum controle constituinte pode ser configurado para receber o foco.

Mtodo CanPropertyChange
Pergunta ao recipiente se uma propriedade acoplada a uma origem de dados pode ter seu valor alterado. O mtodo CanPropertyChange mais til se a propriedade especificada em PropertyName estiver acoplada a uma origem de dados. Sintaxe object.CanPropertyChange PropertyName A sintaxe do mtodo CanPropertyChange tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. PropertyName Uma expresso de seqncia de caracteres que representa um nome da propriedade que o controle est pedindo para alterar. Valores de retorno Os valores de retorno possveis para CanPropertyChange so: Configurao Descrio True A propriedade especificada em PropertyName pode ser alterada neste momento. False A propriedade especifica em PropertyName no pode ser alterada desta vez; o recipiente tem a tabela acoplada a dados aberta somente leitura. No configure o valor da propriedade; fazer isto pode causar erros em alguns recipientes do controle. Comentrios O controle deve sempre chamar CanPropertyChange antes de alterar o valor de uma propriedade que pode estar acoplada a dados. Observao: Atualmente, CanPropertyChange sempre retorna True em Visual Basic, mesmo que o campo acoplado seja somente leitura na origem dos dados. O Visual Basic no produz um erro quando o controle tenta alterar um campo somente leitura; ele apenas no atualiza a origem dos dados. Como exemplo, o cdigo abaixo mostra como o mtodo CanPropertyChange utilizado: Public Property Let Address(ByVal cValue As String) If CanPropertyChange("Address") Then m_Address = cValue PropertyChanged "Address" End If End Property

Propriedade Changed
Retorna ou define um valor indicando que um valor de uma propriedade ou uma pgina de propriedades foi alterado. A propriedade Changed no est disponvel durante o tempo de autoria da pgina de propriedades, e para leitura/gravao durante o tempo de execuo da pgina de propriedades. Sintaxe object.Changed [= boolean]

Funes Internas

231

A sintaxe da propriedade Changed tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. boolean Um valor booleano que determina se uma propriedade na pgina de propriedades foi alterada, tornando suja a pgina de propriedades. Configuraes As configuraes de boolean so: Configurao Descrio True A pgina de propriedades est suja agora, uma vez que o valor de uma propriedade na pgina foi alterado. False A pgina de propriedades no est suja, e nenhuma propriedade da pgina teve seu valor alterado. Comentrios Quando o usurio altera o valor de propriedades em uma pgina de propriedades, estas alteraes no devem ser efetivas imediatamente; ao invs, as alteraes somente sero aplicadas caso o usurio pressione o boto Aplicar, o boto O ou alterar pginas de propriedade selecionando guias. Isto permite ao usurio anular com facilidade qualquer alterao que tenha sido feita em uma pgina de propriedades. A propriedade Changed deveria ser configurada como True, por exemplo, quando um usurio altera um valor de propriedade em uma pgina de propriedades. A configurao da propriedade Changed como True modificaria a pgina de propriedades para tornar disponvel o boto Aplicar.

Propriedade ContainedControls
Retorna uma coleo dos controles que foram adicionados ao controle pelo desenvolvedor ou usurio final durante o tempo de criao do controle. A propriedade ContainedControls no est disponvel durante o tempo da autoria do controle, e somente leitura durante o tempo de execuo. Sintaxe object.ContainedControls A sintaxe da propriedade ContainedControls tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios A coleo ContainedControls preenchida com todos os controles que foram adicionados ao controle pelo desenvolvedor ou pelo usurio final. O controle pode usar a coleo ContainedControls para executar operaes sobre qualquer um destes controles contidos. Esta coleo funciona de maneira parecida com a coleo Controles em um formulrio. Para permitir que controles contidos sejam colocados no controle, a propriedade ControlContainer deve ser True. Controles contidos no podem ser adicionados ou removidos atravs desta coleo ContainedControls; os controles contidos devem ser alterados de toda maneira permitida pelo recipiente. A propriedade ContainedControls pode no ser suportada por todos os recipientes, embora o recipiente possa suportar o controle que tem controles contidos; os formulrios Visual Basic suportam esta propriedade. Se esta propriedade no for suportada, as chamadas coleo ContainedControls provocaro erros; utilize tratamento de erros ao acessar a coleo. Observe, contudo, que se o tratamento de erros for executado durante um procedimento de evento como o procedimento de evento InitProperties ou o procedimento de evento ReadProperties, o tratamento de erros no provocar um evento de erro; fazer isto pode ser fatal para o recipiente. A coleo ContainedControls no est disponvel quando o evento Initialize produzido, mas estar disponvel quando o evento InitProperties ou o evento ReadProperties for criado. Uma vez que a coleo ContainedControls esteja presente, ela pode no conter imediatamente referncias a controles que um desenvolvedor tenha colocado no controle. Por exemplo, caso o controle seja um formulrio do Visual Basic, a propriedade Count da coleo ContainedControls ser zero at depois que o evento ReadProperties tenha sido executado.

Propriedade ControlContainer
Retorna ou define um valor que determina se um controle pode conter controles colocados nele pelo desenvolvedor ou pelo usurio final durante o tempo de execuo do controle; da mesma forma que o controle PictureBox pode conter outros controles. A propriedade ControlContainer para leitura/gravao durante o tempo de autoria, e no est disponvel durante o tempo de execuo do controle. Configuraes As configuraes der ControlContainer so: Configurao Descrio True O controle pode conter controles nele colocados. Se uma ocorrncia deste controle for colocada em um recipiente que no tenha conhecimento de ISimpleFrame, o suporte de controles contidos ser desativado. O controle continuar a funcionar corretamente quanto a todo o resto, mas os desenvolvedores ou usurios finais no podero colocar controles em uma ocorrncia deste controle. False O controle no pode conter qualquer controle nele colocado. Este o valor padro.

Funes Internas

232

Comentrios O suporte a controle contido no funciona em um formulrio do Visual Basic. Controles contidos colocados em um controle com um segundo plano transparente somente so visveis onde sua localizao se sobrepe a qualquer controle constituinte. Eventos de mouse sero passados ao controle contido somente se eles ocorrerem onde o controle contido estiver visvel.

Coleo DataBindings
A coleo DataBindings uma propriedade extensora que coleciona as propriedades acoplveis disponveis para o desenvolvedor e o usurio final. Comentrios Todas as propriedades acoplveis aparecem na coleo DataBindings durante o tempo de execuo de usurio final. Durante o tempo de criao do desenvolvedor (tempo de execuo do controle), somente as propriedades marcadas "Exibir na coleo DataBindings durante o tempo de criao" aparecero quando a propriedade DataBindings for acessada na janela Properties.

Propriedade DefaultCancel
Retorna ou define um valor que determina se um controle pode funcionar como um boto de comando padro. A propriedade DefaultCancel de leitura/gravao durante o tempo de autoria do controle, e no est disponvel durante o tempo de execuo do controle. Configuraes As configuraes para DefaultCancel so: Configurao Descrio True O controle pode atuar como um boto de comando de cancelamento ou padro. O recipiente adicionar as propriedades Default e Cancel ao objeto extensor. A presena das propriedades Default e Cancel permitem ao controle funcionar como um boto de comando padro. O controle pode, ento definir estas propriedades do extensor adicionadas. False O controle no pode agir como um boto de comando padro ou cancelar. Nenhum controle constituinte tem sua propriedade Default ou Cancel configurada como True. Este o valor padro. Comentrios Configura a propriedade Default como True e tambm ter um controle constituinte com sua propriedade Default configurada como True far com que o controle constituinte seja pressionado quando a tecla ENTER for pressionada, caso contrrio, o evento AccesseyPress do controle ser produzido quando a tecla ENTER for pressionada. Configurar a propriedade Cancel como True e tambm ter um controle constituinte com sua propriedade Cancel definida como True far com que o controle constituinte seja pressionado quando a tecla ESCAPE for pressionada, caso contrrio, o evento AccesseyPress ser produzido quando a tecla ESCAPE for pressionada. Importante O status de um boto padro ou cancelar pode mudar a qualquer momento. O cdigo deve ser colocado no procedimento de evento AmbientChanged do controle, para detectar alteraes na propriedade DisplayAsDefault e a aparncia do controle deve ser ajustada de acordo.

Propriedade DisplayAsDefault
Retorna um valor booleano para determinar se o controle o boto padro para o recipiente e, portanto, deve ser exibido como controle padro. Sintaxe object.DisplayAsDefault A sintaxe da propriedade DisplayAsDefault tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores booleanos Configurao True False de retorno possveis da propriedade DisplayAsDefault so: Descrio O controle o boto padro. O controle no o boto padro. Se o recipiente no implementa esta propriedade de ambiente, este ser o valor padro.

Comentrios Apenas um controle em um recipiente pode ser o padro; o recipiente do controle determinar qual deles atualmente o controle padro e o notificar atravs da propriedade de ambiente DisplayAsDefault. O controle notificado deve desenhar a si mesmo para mostrar que ele o padro. Todos os outros controles tero seu valor de propriedade ambiente DisplayAsDefault definidos como False. Somente controles do tipo boto podem ser padro.

Propriedade DisplayName
Retorna um valor de seqncia de caracteres contendo o nome que o controle deve exibir para identificar-se em mensagens de erro. Sintaxe object.DisplayName

Funes Internas

233

A sintaxe da propriedade DisplayName tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Esta propriedade de ambiente a maneira encontrada pelo controle para descobrir qual recipiente (por exemplo, o Visual Basic) est chamando esta ocorrncia do controle. Esta seqncia de caracteres deve ser usada em mensagens de erro como o nome da ocorrncia do controle. Caso o recipiente no implemente esta propriedade de ambiente, o valor padro ser uma seqncia de caracteres vazia.

Propriedade EditAtDesignTime
Retorna ou define um valor que determina se um controle pode tornar-se ativo durante o tempo de criao do desenvolvedor. A propriedade EditAtDesignTime de leitura/gravao durante o tempo de autoria de controle, e no est disponvel durante o tempo de execuo do controle. Configuraes As configuraes para EditAtDesignTime so: Configurao Descrio True Permite que o controle torne-se ativo durante o tempo de criao. Um Edit aparecer no menu de contexto do controle. Quando o desenvolvedor que utiliza o controle escolhe Edit, o controle se torna ativo e comporta-se como faria durante o tempo de execuo pelo usurio final. False O controle no pode tornar-se ativo durante o tempo de criao. Este o valor padro. Comentrios O controle permanecer ativo enquanto estiver selecionado. Quando o desenvolvedor selecionar outro controle, este controle no estar mais ativo, mesmo que o desenvolvedor clique de volta nele. O desenvolvedor dever selecionar novamente Edit no menu de contexto para tornar ativo o controle. Observao: Quando o controle ativado desta maneira, os eventos do objeto UserControl ocorrero de tal forma que o controle pode operar normalmente, mas no pode produzir qualquer evento. O mtodo RaiseEvent ser simplesmente ignorado; no provocar um erro.

Evento EditProperty
Ocorre quando uma pgina de propriedades est aberta porque o desenvolvedor pressionou o boto de reticncias para exibir uma determinada propriedade para edio. Sintaxe Sub object_EditProperty(PropertyName As String) A sintaxe do evento EditProperty tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. PropertyName Uma seqncia de caracteres que identifica a propriedade que deve ser exibida e editada pela pgina de propriedades. Comentrios Este evento ocorre quando uma propriedade designada a uma pgina de propriedades atravs da caixa de dilogo Attributes. Designar uma pgina de propriedades atravs da caixa de dilogo Attributes significa que a propriedade exibida na janela de propriedade com reticncias () a seu lado, e o desenvolvedor pode pressionar o boto de reticncias e a pgina de propriedades ser automaticamente aberta; o evento EditProperty , ento, produzido, de modo que o autor da pgina de propriedades possa colocar o cursor no campo correto.

Evento EnterFocus
Ocorre quanto o foco entra no objeto. O prprio objeto poderia estar recebendo o foco, ou um controle constituinte poderia estar recebendo o foco. Sintaxe Sub object_EnterFocus() A sintaxe do evento EnterFocus tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Este evento til se object precisa saber que o foco agora est dentro dele. O evento EnterFocus produzido antes de qualquer evento GotFocus; o evento GotFocus somente ser produzido em object ou em controle constituinte de object que efetivamente tenha recebido o foco.

Propriedade EventsFrozen
Retorna um valor indicando se o recipiente est atualmente ignorando eventos produzidos pelo controle. A propriedade EventsFrozen no est disponvel durante o tempo de criao, e somente leitura durante o tempo de execuo do controle.

Funes Internas

234

Sintaxe object.EventsFrozen A sintaxe da propriedade EventsFrozen tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Quando a propriedade EventsFrozen True, o recipiente est ignorando quaisquer eventos que esteja sendo produzido pelo controle. Caso o controle queira produzir um evento que no possa ser perdido, voc deve coloc-los em fila at que EventsFrozen seja False.

Evento ExitFocus
Ocorre quando o foco deixa o objeto. O prprio objeto pode estar perdendo o foco, ou um controle constituinte pode estar perdendo o foco. Sintaxe Sub object_ExitFocus() A sintaxe do evento ExitFocus tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Este evento til caso object precise saber que o foco o est deixando agora. O evento ExitFocus produzido aps qualquer evento LostFocus; o evento LostFocus somente ser produzido em object ou controle constituinte de object que efetivamente perca o foco.

Objeto Extender
Um objeto Extender contm propriedades do controle que so realmente controladas pelo recipiente do controle, ao invs do prprio controle. Comentrios Algumas propriedades de um controle so oferecidas pelo recipiente ao invs do controle; estas so propriedades extensoras. Exemplos de propriedades extensoras so: Name, Tag e Left. O controle ainda precisa saber qual o valor destas propriedades extensoras, e algumas vezes precisa poder alterar uma propriedade extensora; o objeto Extender entrega o acesso do controle a estas propriedades. Algumas propriedades extensoras so padronizadas, enquanto que outras so especficas de determinados recipientes. Um controle pode acessar propriedades extensoras no-padro, mas isto torna o controle especfico do recipiente. Caso o controle faa uso de uma propriedade extensora, ele deve tratar o caso onde a propriedade extensora no suportada pelo recipiente atual. Quando o controle compilado, o Visual Basic no tem como saber quais propriedades extensoras estaro disponveis durante o tempo de execuo do controle; portanto as referncias a propriedades extensoras sero sempre de acoplamento posterior. Um objeto Extender no est disponvel quando o evento Initialize produzido; mas estar disponvel quando o evento InitProperties ou evento ReadProperties for produzido. O objeto Extender tem diversas propriedades padro: A propriedade Name, uma propriedade String somente leitura que contm o nome definido pelo usurio para o controle. A propriedade Visible, uma propriedade Boolean de leitura/gravao que especifica se o controle ou no visvel. A propriedade Parent, um objeto somente leitura que representa o recipiente do controle, por exemplo, um formulrio no Visual Basic. A propriedade Cancel, uma propriedade Boolean somente leitura que indica ser o controle o boto Cancel padro do recipiente. A propriedade Default, uma propriedade Boolean somente leitura que indica ser o controle o boto padro para o recipiente. O Visual Basic oferece mais mtodos, propriedades e eventos extensores; outros recipientes no garantem oferecer estes mtodos, propriedades e eventos extenses. Estes mtodos, propriedades e eventos extensores especficos do Visual Basic so: A propriedade Container, um objeto somente leitura que representa o recipiente visual do controle. A propriedade DragIcon, uma propriedade Pictures para leitura/gravao que especifica o cone a ser usado quando o controle arrastado. A propriedade DragMode, uma propriedade Integer de leitura/gravao que especifica se o controle ser automaticamente arrastado, ou se o usurio do controle deve chamar o mtodo Drag. A propriedade Enabled, uma propriedade Boolean somente leitura que especifica se o controle est ativado. Esta propriedade extensora no est presente, a menos que o controle tambm tenha uma propriedade Enabled com a ID de procedimento correta. Para maiores informaes, consulte o tpico "Permitindo que seus controles sejam ativados e desativados" no captulo 9: Criando controles ActiveX. A propriedade Height, uma propriedade Integer de leitura/gravao que especifica a altura do controle em unidades de escala do recipiente. A propriedade HelpContextID, uma propriedade Integer de leitura/gravao que especifica a identificao de contexto a ser usada quando a tecla F1 for pressionada quando o controle tem o foco.

Funes Internas

235

A propriedade Index, uma propriedade somente leitura que especifica a posio ocupada por esta ocorrncia do controle

em uma matriz de controle.


A propriedade Left, uma propriedade Integer de leitura/gravao que especifica a posio desde a borda esquerda do

controle at a borda esquerda do recipiente, especificada em unidades de escala do recipiente.


A propriedade TabIndex, uma propriedade Integer que especifica a posio do controle na ordem de tabulao dos

controles no recipiente.
A propriedade TabStop, uma propriedade Boolean de leitura/gravao que especifica se Tab parar no controle. A propriedade Tag, uma propriedade String de leitura/gravao que contm um valor definido pelo usurio. A propriedade ToolTipText, uma propriedade String de leitura/gravao que contm o texto a ser exibido quando o cursor

permanece sobre o controle por mais de um segundo.


A propriedade Top uma propriedade Integer de leitura/gravao que especifica a posio desde a borda superior do

controle at a borda superior do recipiente, especificada em unidades de escala do recipiente.


A propriedade WhatThisHelpID, uma propriedade Integer de leitura/gravao que especifica a identificao de contexto a

ser usada quando a pop-up O que isto? usada no controle.


A propriedade Width, uma propriedade de leitura/gravao que especifica a largura do controle em unidades de escala do

recipiente. O mtodo Drag, um mtodo que inicia, termina ou cancela uma operao de arrasto do controle. O mtodo Move, um mtodo para mover a posio do controle. O mtodo SetFocus, um mtodo para definir o foco para o controle. O mtodo ShowWhatsThis, um mtodo para exibir um tpico selecionado em um arquivo de Ajuda usando a pop-pop O que isto? oferecida pela Ajuda. O mtodo ZOrder, um mtodo para colocar o controle na frente ou atrs da ordem-z, dentro de seu nvel grfico. O evento DragDrop, um evento que produzido quando outro controle no formulrio solto sobre este controle. O evento DragOver, um evento que produzido quando outro controle do formulrio arrastado sobre este controle. O evento GotFocus, um evento que produzido quando este controle recebe o foco. O evento LostFocus, um evento que produzido quando este controle perde o foco.

Propriedade Extender
Retorna o objeto Extender para este controle que contm as propriedades do controle que so rastreadas pelo recipiente. A propriedade Extender no est disponvel durante o tempo de autoria do controle, e somente leitura durante o tempo de execuo do controle. Sintaxe object.Extender A sintaxe da propriedade Extender tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade ForwardFocus
Retorna ou define um valor que determina qual controle recebe o foco quando uma das teclas de acesso do controle pressionada. A propriedade ForwardFocus para leitura/gravao durante o tempo de autoria do controle, e no est disponvel durante o tempo de execuo do controle. Configuraes As configuraes para ForwardFocus so: Configurao Descrio True O prximo controle na ordem de tabulao receber o foco quando uma das teclas de acesso do controle for pressionada. False Caso a propriedade CanGetFocus seja True, o prprio controle receber o foco quando uma das teclas de acesso do controle for pressionada. Este o valor padro. Comentrios A propriedade ForwardFocus permite ao controle implementar o comportamento de um controle Label que tenha uma tecla de acesso. Teclas de acesso so configuradas por meio da propriedade Accesseys. Quando pressionada uma tecla de acesso, em conjunto com a tecla ALT, o evento AccesseyPress do controle produzido.

Mtodo GoBac
Executa um salto de hyperlin de volta na lista de histricos. Sintaxe object.GoBac A sintaxe do mtodo GoBac tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Caso o objeto esteja em um recipiente que suporte hyperlin OLE, o recipiente saltar at o local que est no passado na lista de histricos. Caso o objeto esteja em um recipiente que no suporte hyperlins OLE, ento este mtodo provocar um erro.

Funes Internas

236

Mtodo GoForward
Executa um salto de hyperlin para frente na lista de histricos. Sintaxe object.GoForward A sintaxe do mtodo GoForward tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Caso o objeto esteja em um recipiente que suporte hyperlins OLE, o recipiente saltar at o local que est no futuro na lista de histricos. Caso o objeto esteja em um recipiente que no suporta hyperlins OLE, este mtodo provocar um erro.

Evento GotFocus (Objeto UserControl e Objeto UserDocument)


Ocorre no objeto ou controle constituinte quando o foco entra nele. Sintaxe Sub object_GotFocus() A sintaxe do evento GotFocus tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Este evento GotFocus no o mesmo evento extensor GotFocus manipulado pelo desenvolvedor que utiliza object. Este evento GotFocus para o autor de object, e interno a object. Este evento til se object precisa saber que o foco est agora nele. O prprio object pode receber foco somente quando a propriedade CanGetFocus for True, e no existir controles constituintes que possam receber o foco. O evento EnterFocus produzido antes do evento GotFocus. No produz o evento extensor GotFocus a partir deste evento.

Evento Hide (Objeto UserControl)


Ocorre quando a propriedade Visible do objeto se altera para False. Sintaxe Sub object_Hide() A sintaxe do evento Hide tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Para desenhar na tela no Windows, qualquer objeto deve ter uma janela, temporria ou permanente; os controles ActiveX do Visual Basic tm janelas permanentes. Antes que um controle tenha se situado em um formulrio, sua janela no est no recipiente. O controle recebe eventos Hide quando a janela removida. Enquanto a janela do controle est no formulrio, o objeto recebe um evento Hide quando a propriedade Visible do controle se altera para False. O controle no recebe eventos Hide se o formulrio estiver oculto e, em seguida exibido, ou se o formulrio for minimizado e, em seguida, restaurado. A janela do controle permanece no formulrio durante estas operaes, e sua propriedade Visible no se altera. Caso o controle esteja sendo exibido em um navegador da Internet, o evento Hide ocorre quando a pgina movida para a lista de histrico. Observao: Caso o controle seja utilizado com uma verso anterior do Visual Basic, que no a 5.0, o controle no receber eventos Hide durante o tempo da criao. Isto ocorre porque verses antigas do Visual Basic no colocam nenhuma janela visvel em um formulrio durante o tempo de criao.

Evento Hide (Objeto UserDocument)


Ocorre quando a propriedade Visible do objeto se altera para False. Sintaxe Sub object_Hide() A sintaxe do evento Hide tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Para desenhar na tela no Windows, um objeto precisa de uma janela, temporria ou permanente. Os documentos ActiveX do Visual Basic tm janelas permanentes. O objeto UserDocument recebe eventos Hide quando a janela removida. Enquanto a janela do object Windows est no recipiente, object recebe um evento Hide quando a propriedade Visible do object se altera para False.

Funes Internas

237

Object no recebe eventos Hide se o recipiente for ocultado e novamente exibido, ou se o recipiente for minimizado e, em seguida, restaurado. A janela do objeto permanece no recipiente durante estas operaes, e sua propriedade Visible no se altera. Caso object esteja sendo exibido em um navegador da Internet, ocorre um evento Hide quando a pgina movida para a lista de histricos, navegando para fora de object para outro documento, ou quando o Internet Explorer 3.0 fechado enquanto o object est sendo visualizado ou est dentro do cache de documentos ativos. Use este evento para destruir qualquer referncia global de objeto, antes de navegar at outro documento. Observao: Se object estiver sendo usado com verses mais antigas do Visual Basic, que no o 5.0, o object no receber eventos Hide durante o tempo de criao. Isto ocorre porque verses antigas do Visual Basic no colocavam nenhuma janela visvel em um formulrio durante o tempo de criao.

Evento InitProperties
Ocorre quando uma nova ocorrncia de um objeto criada. Sintaxe Sub object_InitProperties() A sintaxe do evento InitProperties tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Este evento permite ao autor do objeto inicializar uma nova ocorrncia do objeto. Este evento somente ocorre quando uma nova ocorrncia de um objeto est sendo criada; isto para permitir ao autor do objeto distinguir entre criar uma nova ocorrncia do objeto e carregar uma ocorrncia antiga do objeto. Colocando cdigo para inicializar novas ocorrncias no evento InitProperties, ao invs do evento Initialize, o autor pode evitar casos em que carregar dados atravs de um evento ReadProperties em uma ocorrncia antiga do objeto anula a inicializao do objeto.

Propriedade InvisibleAtRuntime
Retorna ou define um valor que determina se um controle no deve tem uma janela visvel durante o tempo de execuo. A propriedade InvisibleAtRuntime para leitura/gravao durante o tempo de criao, e no est disponvel durante o tempo de execuo do controle. Configuraes As configuraes para InvisibleAtRuntime so: Configurao Descrio True Permite que o controle no tenha uma janela visvel durante o tempo de execuo. O recipiente do controle pode manter o controle invisvel durante o tempo de execuo, como, por exemplo, o controle Timer. O controle ainda est ativo e, portanto, o desenvolvedor que utiliza o controle ainda pode escrever programas que podem interagir com o controle. No existir propriedade Visible no objeto extensor. False O controle age como um controle normal durante o tempo de execuo, onde o estado da propriedade extensora Visible determina a visibilidade do controle. Este o valor padro. Comentrios Importante No utilize a propriedade extensora Visible para tornar o controle visvel durante o tempo de execuo. Se isto for feito, o controle ainda ter todo o nus de um controle visvel durante o tempo de execuo. Alm disso, as propriedades extensoras esto disponveis para o desenvolvedor e usurio final, que podem tornar o controle visvel. Alguns recipientes podem no suportar a propriedade InvisibleAtRuntime; neste caso, o controle estar visvel durante o tempo de execuo. Antes de criar um controle que seja visvel durante o tempo de execuo, considere a possibilidade de criar um objeto comum oferecido por um componente de cdigo em processo (DLL ActiveX). Os objetos oferecidos por componentes de cdigo em processo exigem menos recursos que controles, mesmo controles invisveis. O nico motivo para implementar um controle invisvel aproveitar um recurso que somente est disponvel para os controles ActiveX.

Propriedade LocaleID
Retorna um valor long que contm a identificao do local (idioma e pas) do usurio. Sintaxe object.LocaleID A sintaxe da propriedade LocaleID tem esta parte: Parte Descrio Object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios A propriedade de ambiente LocaleID contm a identificao do idioma e pas do usurio atual. Usando esta identificao, o controle pode modificar seu comportamento e aparncia para ajustar-se ao idioma e pas. Isto pode ir desde simples notificaes de erro no idioma do usurio, at modificaes mais complexas de propriedade, mtodo e nomes de evento no idioma do usurio. Caso o recipiente no implemente esta propriedade de ambiente, o valor padro ser a System LocaleID atual. Funes Internas

238

Evento LostFocus (Objeto UserControl e Objeto UserDocument)


Ocorre no objeto ou controle constituinte quando o foco o deixa. Sintaxe Sub object_LostFocus() A sintaxe do evento LostFocus tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Este evento LostFocus no o mesmo evento extensor LostFocus manipulado pelo desenvolvedor que utiliza object. Este evento LostFocus para o autor de object, e interno em relao a object. Este evento til se object precisa saber que o foco est nele neste momento. O prprio Object pode receber o foco somente quando a propriedade CanGetFocus True, e no houver controles constituintes que possam receber foco. O evento LostFocus produzido antes do evento ExitFocus.

Propriedade MessageReflect
Retorna um valor booleano informando se o recipiente do controle trata automaticamente o reflexo de mensagem. Sintaxe object.MessageReflect A sintaxe da propriedade MessageReflect tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To.

Configuraes O valores de retorno booleanos possveis da propriedade MessageReflect so: Configurao Descrio True O recipiente do controle refletir mensagens. False O recipiente do controle no pode refletir mensagens. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. Comentrios Quando o controle est em uma subclasse, existem determinadas mensagens que so normalmente enviadas ao controle pai. Sob condies normais, estas mensagens so, na realidade, refletidas de volta ao controle que as enviou, de modo que o controle possa tratar sua prpria mensagem. Este espelhamento de mensagem pode ser tratada pelo recipiente, que refletir as mensagens de volta como eventos. A propriedade MessageReflect informa se o recipiente do controle dispe de espelhamento de mensagem. Caso o controle seja colocado em um recipiente que no espelhe mensagens, a operao do controle ser seriamente comprometida; grande parte da operao de controle depende de mensagens refletidas.

Mtodo NavigateTo
Executa um salto de hyperlin at o alvo especificado. Sintaxe object.NavigateTo Target [, Location [, FrameName]] A sintaxe do mtodo NavigateTo tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Target Uma expresso de seqncia de caracteres especificando a localizao para onde deve ser dado o salto. Este pode ser um documento ou um URL. Location Uma expresso de seqncia de caracteres especificando a localizao dentro do URL especificado em Target para onde devese saltar. Caso Location no seja especificado, o salto ser dado at o documento padro. FrameName Uma expresso de seqncia de caracteres especificando a moldura dentro do URL especificado em Target para onde deve-se saltar. Caso FrameName no seja especificado, o salto ser dado at a moldura padro. Comentrios Se o objeto est em um recipiente que suporte hyperlin OLE, o recipiente saltar at o local especificado. Caso o objeto esteja em um recipiente que no suporte hyperlin OLE, um aplicativo que seja registrado como suportando hyperlin iniciado para tratar o pedido. Caso Target no especifique uma localizao vlida, um erro produzido.

Funes Internas

239

Propriedade ParentControls
Retorna uma coleo dos outros controles no recipiente do controle. A propriedade ParentControls no est disponvel durante o tempo de criao do controle, e somente leitura durante o tempo de execuo do controle. Sintaxe object.ParentControls A sintaxe da propriedade ParentControls tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Na maior parte dos casos, o recipiente do controle ser um formulrio; esta coleo funciona de maneira parecida como a coleo Controls no formulrio, mas conter tambm o prprio formulrio. Esta coleo til se o controle deseja executar alguma ao sobre os controles no formulrio; ele pode iterar pela coleo. Os controles no podem ser adicionados ou removidos pelo desenvolvedor que utiliza o controle nesta coleo; eles devem ser alterados de todas as maneiras permitidas pelo recipiente. O contedo desta coleo inteiramente determinado pelo recipiente.

Objeto PropertyBag
Um objeto PropertyBag contm informaes que devem ser salvas e restauradas durante acionamentos de um objeto. Comentrios Um objeto PropertyBag passado a um objeto por meio do evento ReadProperties e do evento WriteProperties para salvar e restaurar o estado do objeto. Usando os mtodos do objeto PropertyBag, o objeto pode ler ou gravar suas prprias propriedades. O mtodo ReadProperty do objeto PropertyBag usado para ler um valor de uma propriedade, enquanto o mtodo WriteProperty do objeto PropertyBag usado para gravar o valor de uma propriedade. O valor de uma propriedade pode ser ele mesmo um objeto; neste caso o objeto PropertyBag tentar salv-lo.

Mtodo PropertyChanged
Notifica o recipiente que o valor de uma propriedade foi alterado. Sintaxe object.PropertyChanged PropertyName A sintaxe do mtodo PropertyChanged tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. PropertyName Uma expresso de seqncia de caracteres que representa um nome da propriedade cujo valor foi alterado pelo controle. Comentrios Notificando o recipiente de que o valor de uma propriedade foi alterado, o recipiente pode sincronizar sua janela de propriedade com os novos valores das propriedades do objeto. Alm disso, o recipiente no saberia se uma ocorrncia do objeto precisava ser salvo (atravs da produo de um evento WriteProperties) a menos que o recipiente fosse notificado de que o valor de uma propriedade fora alterado. Este mtodo precisa ser chamado, por exemplo, quando um usurio altera o valor de uma propriedade em uma pgina de propriedades, ou o prprio objeto altera o valor de uma propriedade. Este mtodo tambm deve ser chamado quando uma propriedade acoplada a dados modificada; caso contrrio, a origem dos dados no ser atualizada. As propriedades que esto disponveis somente durante o tempo de execuo, no precisam chamar o mtodo PropertyChanged, a menos que elas sejam acopladas a dados. Como exemplo, o cdigo abaixo mostra como usado o mtodo PropertyChanged: Public Property Let Address(ByVal cValue As String) m_Address = cValue PropertyChanged "Address" End Property

Propriedade PropertyPages
Retorna ou define uma seqncia de caracteres que o nome de uma pgina de propriedades que est associada a um controle. Sintaxe object.PropertyPages(index) [= PropPageName] A sintaxe da propriedade PropertyPages tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index ndice de uma matriz de seqncias de caracteres. PropPageName Uma seqncia de caracteres contendo o nome de uma pgina de propriedades do projeto. Comentrios Funes Internas

240

A propriedade PropertyPages uma matriz de seqncias de caracteres contendo os nomes das pginas de propriedade no projeto que esto associadas a este controle. Uma pgina de propriedades pode ser adicionada matriz definindo-se o ltimo item na matriz (que est sempre vazia) Uma pgina de propriedades pode ser excluda da matriz definindo-se o elemento na matriz como uma seqncia de caracteres vazia. O ordem dos nomes de pginas de propriedade na matriz determina a ordem em que as pginas aparecem na caixa de dilogo da pgina de propriedades do controle.

Propriedade Public
Retorna ou define um valor que determina se um controle pode ser compartilhado com outros aplicativos. A propriedade Public para leitura/gravao durante o tempo de criao do controle e no est disponvel durante o tempo de execuo. Configuraes As configuraes para Public so: Configurao Descrio True O controle pode ser compartilhado com outros aplicativos. Este o padro para tipos de projeto ActiveX Control. False O controle no pode ser compartilhado com outros aplicativos. Quando o controle est contido em um projeto ActiveX Control, o controle no pode ser visualizado fora do projeto ActiveX Control. Isto significa que outros controles ou outros formulrios no projeto podem usar o controle, mas aplicativos externos no podem. Este o nico valor vlido para tipos de projeto que no o ActiveX control.

Evento ReadProperties
Ocorre quando se carrega uma ocorrncia antiga de um objeto que tem um estado salvo. Sintaxe Sub object_ReadProperties(pb As PropertyBag) A sintaxe do evento ReadProperties tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. pb Um objeto do tipo classe PropertyBag que contm os dados salvos a serem carregados. Comentrios Quando ocorre este evento, o autor do objeto pode carregar no estado salvo de pb, chamando o mtodo ReadProperty do objeto PropertyBag para cada valor que deve ser carregado. Este evento ocorre aps o evento Initialize. Sempre inclua interceptao de erros ao lidar com o evento ReadProperties, para proteger o controle contra valores de propriedade invlidos que possam ter sido inseridos por usurios ao editar o arquivo contendo os dados salvos por meio de processadores de texto. Entretanto, no se deve provocar um erro em um evento, uma vez que fazer isto pode ser fatal para o recipiente, assim qualquer interceptao de erro no procedimento de evento ReadProperties no deve incluir a provocao de erros.

Mtodo ReadProperty
Retorna um valor salvo de um objeto da classe PropertyBag. Sintaxe object.ReadProperty(DataName[, DefaultValue]) A sintaxe do mtodo ReadProperty tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. DataName Uma expresso de seqncia de caracteres que representa um valor de dados contido em PropertyBag. DefaultValue O valor a ser retornado se nenhum valor existir em PropertyBag. Comentrios O mtodo ReadProperty retornar o valor dos dados salvos que so representados pela expresso de seqncia de caracteres DataName ou DefaultValue se no existir valor salvo. DataName deve corresponder expresso de seqncia de caracteres que foi usada para armazenar o valor dos dados salvo na sacola de propriedades. Observao: Especificar um valor padro reduz o tamanho do arquivo pertencente ao recipiente do controle. Uma linha para a propriedade escrita no arquivo somente se o valor a ser gravado for diferente do padro. Onde possvel, deve-se especificar valores padro para as propriedades do controle ao inicializar, salvar e recuperar valores de propriedade.

Propriedade RightToLeft
Retorna um valor booleano que indica a direo da exibio do texto e controla a aparncia visual em um sistema bidirecional. Sintaxe object.RightToLeft

Funes Internas

241

A sintaxe da propriedade RightToLeft tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores booleanos de retorno da propriedade RightToLeft so: Configurao Descrio True O controle est sendo executado em uma plataforma bidirecional como, por exemplo do Windows 95 em rabe ou Hebraico, e o texto est sendo executado da direita para a esquerda. O controle deve modificar seu comportamento, por exemplo, colocar barras de rolagem vertical no lado esquerdo de um texto ou caixa de listagem, colocar rtulo direita das caixas de texto, etc. False O controle deve funcionar como se ele estivesse sendo executado em uma plataforma no-bidirecional como, por exemplo o Windows 95 em Ingls, e o texto est sendo executado da esquerda para a direita. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro.

Propriedade ScaleUnits
Retorna um valor de seqncia de caracteres que o nome das unidades de coordenadas utilizadas pelo recipiente. Sintaxe object.ScaleUnits A sintaxe da propriedade ScaleUnits tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Esta seqncia de caracteres representa as coordenadas usadas pelo recipiente do controle, por exemplo "twips". Esta seqncia de caracteres pode ser usada pelo controle como um indicador de unidades ao se exibir valores de coordenada. Caso o recipiente no implemente esta propriedade de ambiente, o valor padro ser uma seqncia de caracteres vazia.

Propriedade SelectedControls
Retorna uma coleo que contm todos os controles atualmente selecionados no formulrio. A propriedade SelectedControls no est disponvel durante o tempo de autoria da pgina de propriedades, e somente leitura durante o tempo de execuo da pgina de propriedades. Sintaxe object.SelectedControls A sintaxe da propriedade SelectedControls tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Esta coleo til para que uma pgina de propriedades determine quais controles esto selecionados atualmente e, portanto, quais controles podem sofrer modificaes em suas propriedades. Alguns recipientes somente permitem a seleo de um controle de cada vez; neste caso SelectedControls somente conter um controle. Outros recipientes permitem que mais de um controle seja selecionado ao mesmo tempo; neste caso podem existir mais de um controle selecionado e a pgina de propriedades deve iterar pelos controles contidos na coleo SelectedControls e tentar definir as propriedades alteradas. Tratamento de erro adequado deve ser escrito para cuidar dos casos em que um determinado controle na coleo no sofre modificao em sua propriedade, ou quando o controle provoca um erro no momento da definio da propriedade.

Evento SelectionChanged
Ocorre quando a seleo de controles no formulrio sofre alterao. Sintaxe Sub object_SelectionChanged() A sintaxe do evento SelectionChanged tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O disparo deste evento notifica a pgina de propriedades que a seleo de controles foi alterada e, portanto, a exibio dos valores de propriedade atuais pode precisar ser atualizada. A propriedade SelectedControls deve ler para encontrar o novo conjunto de controles selecionados.

Funes Internas

242

O evento SelectionChanged tambm provocado quando a pgina de propriedades trazida pela primeira vez para um controle.

Evento Show (Objeto UserControl)


Ocorre quando a propriedade Visible do objeto alterada para True. Sintaxe Sub object_Show() A sintaxe do evento Show tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Para desenhar na tela no Windows, qualquer objeto deve ter uma janela, temporria ou permanente. Os controles ActiveX do Visual Basic tm janelas permanentes. Antes que um controle tenha sido colocado em um formulrio, sua janela no est no recipiente. O controle recebe eventos Show quando a janela adicionada. Enquanto a janela do controle est no formulrio, o controle recebe um evento Show quando a propriedade Visible alterada para True. O controle no recebe eventos Show se o formulrio for ocultado e novamente exibido, ou se o formulrio for minimizado e, em seguida, restaurado. A janela do controle permanece no formulrio durante estas operaes e sua propriedade Visible no sofre alterao. Caso o controle esteja sendo mostrado em um navegador da Internet, ocorre um evento Show se o usurio retorna pgina que contm o controle. Observao: Caso o controle seja usado com verses anteriores do Visual Basic, que no a 5.0, o controle no receber eventos Show durante o tempo de criao. Isto ocorre porque verses antigas do Visual Basic no colocam qualquer janela visvel em um formulrio durante o tempo de criao.

Evento Show (Objeto UserDocument)


Ocorre quando a propriedade Visible do objeto se altera para True. Sintaxe Sub object_Show() A sintaxe do evento Show tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Para desenhar na tela no Windows, qualquer objeto deve ter uma janela, temporria ou permanente. Os documentos ActiveX do Visual Basic tm janelas permanentes. Antes que um objeto tenha sido colocado em um formulrio, sua janela no est no recipiente. O objeto UserDocument recebe eventos Show quando a janela adicionada. Enquanto a janela do objeto est no recipiente, o objeto recebe um evento Show quando a propriedade Visible do objeto alterada para True. O objeto no recebe eventos Show se o recipiente ocultado e novamente exibido, ou se o recipiente minimizado e, em seguida, restaurado. A janela do objeto permanece no recipiente durante estas operaes e sua propriedade Visible no sofre alterao. Caso o objeto esteja sendo mostrado em um navegador da Internet, ocorre um evento Show quando o usurio navega at a pgina. Observao: Caso o objeto seja usado com verses anteriores do Visual Basic, que no a 5.0, o objeto no receber eventos Show durante o tempo de criao. Isto ocorre porque verses antigas do Visual Basic no colocam qualquer janela visvel em um formulrio durante o tempo de criao.

Propriedade ShowGrabHandles
Retorna um valor booleano informando se o controle deve ou no conter alas de manipulao. Sintaxe object.ShowGrabHandles A sintaxe da propriedade ShowGrabHandles tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes O valores booleanos de retorno possveis da propriedade ShowGrabHandles so: Configurao Descrio True O controle deve mostrar alas de manipulao, se necessrio. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. False O controle no deve mostrar alas de manipulao. Comentrios O comportamento padro de um controle mostrar automaticamente alas de manipulao quando o controle est em um recipiente que esteja em modo de criao (o modo de execuo do controle). Entretanto, muitos recipientes no desejam Funes Internas

243

que o controle exiba alas de manipulao, preferindo tratar a indicao de tamanho do controle de outra maneira. A propriedade ShowGrabHandles a maneira como o recipiente notifica o controle de quem deve exibir as indicaes de dimensionamento. Observao: Todos os recipientes conhecidos preferem tratar eles mesmos da indicao de dimensionamento do controle e, portanto, defina a propriedade ShowGrabHandles como False. Provavelmente no necessrio tratar efetivamente do caso quando ShowGrabHandles True.

Propriedade ShowHatching
Retorna um valor booleano indicando se o controle deve exibir hachurado ao redor do controle. Sintaxe object.ShowHatching A sintaxe da propriedade ShowHatching tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores booleanos de retorno possveis da propriedade ShowHatching so: Configurao Descrio True O controle deve mostrar marcas de hachura, se for necessrio. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. False O controle no deve mostrar marcas de hachura. Comentrios O comportamento padro para um controle mostrar automaticamente o hachurado quando o controle est em um recipiente que esteja no modo de criao (o modo de execuo do controle) e o controle que tem o foco. Entretanto, muitos recipientes no desejam que o controle mostre hachurado, preferindo tratar da indicao de foco de controle de outra forma. A propriedade ShowHatching a maneira como o recipiente notifica o controle de quem deve exibir indicaes de foco de controle. Observao: Os formulrios do Visual Basic no implementam esta propriedade de ambiente e, portanto, a propriedade ShowHatching configurada com o valor padro True quando o controle colocado em um formulrio Visual Basic. Entretanto, o Visual Basic no espera que o controle efetivamente faa coisa alguma em resposta ao valor True de ShowHatching, portanto no necessrio tratar efetivamente do caso quando ShowHatching for True.

Propriedade SupportsMnemonics
Retorna um valor booleano informando se o recipiente do controle trata de teclas de acesso para o controle. Sintaxe object.SupportsMnemonics A sintaxe da propriedade SupportsMnemonics tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores booleanos de retorno possveis da propriedade SupportsMnemonics so: Configurao Descrio True O recipiente do controle trata de teclas de acesso. False O recipiente do controle no trata de teclas de acesso. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. Comentrios A maior parte dos recipientes de controles pode tratar de todos os processamentos de teclas de acesso para os controles contidos no recipiente. Isto inclui calcular quais controles devem receber uma determinada tecla de acesso. Caso um recipiente no possa processar teclas de acesso, isto indicado por esta propriedade SupportsMnemonics, e o controle pode agir, por exemplo no exibindo o caractere de sublinhado como indicao de aceleradores de teclado.

Propriedade TextAlign
Retorna um valor enumerado de tipo de TextAlignChoices informando qual tipo de alinhamento de texto o recipiente gostaria que fosse adotado pelo controle. Sintaxe object.TextAlign A sintaxe da propriedade TextAlign tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores de retorno enumerados possveis da propriedade TextAlign so: Configurao Descrio

Funes Internas

244

0-General 1-Left 2-Center 3-Right 4-FillJustify

Alinhamento geral: o texto esquerda, nmeros direita. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. Alinhar esquerda. Centralizar. Alinhar direita. Preencher e justificar.

Comentrios Esta propriedade de ambiente a maneira como um recipiente comunica a um controle recipiente como executar a justificao; esta uma dica do recipiente que o controle pode ou no aceitar.

Propriedade ToolboxBitmap
Retorna ou define um bitmap que ser usado como representao pictrica do controle na caixa de ferramentas. O tamanho do espao para o bitmap na caixa de ferramentas 16x15 pixels; o bitmap especificado por esta propriedade ser escalado para estas dimenses se for necessrio. A propriedade ToolboxBitmap para leitura/gravao durante o tempo de criao do controle e no est disponvel durante o tempo de execuo do controle. Comentrios Importante No atribua um cone propriedade ToolboxBitmap. cones no so bem escalados at o tamanho de bitmap Toolbox. O Visual Basic usa automaticamente o nome da classe do controle como texto de dica de ferramenta quando os usurios passam com o ponteiro do mouse sobre o cone na Barra de ferramentas. Dica Ao criar bitmaps, lembre-se de que para muitas formas de daltonismo, as cores como o mesmo nvel geral de brilho aparecero como sendo a mesma. Pode-se evitar isto restringindo o bitmap a branco, preto e tons de cinza, ou atravs de uma cuidadosa seleo de cores.

Propriedade UIDead
Retorna um valor booleano indicando se o controle deve ou no responder ao usurio. Sintaxe object.UIDead A sintaxe da propriedade UIDead tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores booleanos de retorno possveis da propriedade UIDead so: Configurao Descrio True O controle no deve responder ao usurio. False O controle deve responder ao usurio. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. Comentrios Esta propriedade tipicamente usada para indicar que o recipiente est em modo de interrupo: durante este modo, o controle no deve responder a nenhuma entrada do usurio. Isto , o controle deve ignorar cliques de mouse e pressionamentos de tecla, e no altera o cursor do mouse mesmo quando o mouse encontra-se sobre a janela do controle. Um recipiente como, por exemplo, um formulrio do Visual Basic definiria este sinalizador como TRUE quando o programador parasse o programa durante a execuo o recipiente no est no modo de criao, nem no modo de execuo ainda; o Visual Basic simplesmente deseja que o controle esteja inoperante.

Propriedade UserMode
Retorna um valor booleano indicando se o controle est sendo usado por um criador de formulrio ou um usurio de formulrio. Sintaxe object.UserMode A sintaxe da propriedade UserMode tem esta parte: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Configuraes Os valores booleanos de retorno possveis da propriedade UserMode so: Configurao Descrio True O controle est sendo atualmente usado por um usurio de formulrio. Caso o recipiente no implemente esta propriedade de ambiente, este ser o valor padro. No Visual Basic, este o modo de execuo. False O controle est sendo usado atualmente por um criador de formulrios (o desenvolvedor). No Visual Basic, este o modo de criao. Funes Internas

245

Evento WriteProperties
Ocorre quando uma ocorrncia de um objeto deve ser salva. Este evento sinaliza ao objeto que o estado do objeto precisa ser salvo, de modo que o estado possa ser restaurado posteriormente. Na maior parte dos casos, o estado do objeto consiste apenas em valores de propriedade. Sintaxe Sub object_WriteProperties(pb As PropertyBag) A sintaxe do evento WriteProperties tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. pb Um objeto do tipo da classe PropertyBag onde devem ser gravados os dados. Comentrios O autor de object pode fazer com que object salve o estado quando ocorrer o evento WriteProperties, chamando o mtodo WriteProperty do objeto PropertyBag para cada valor que deva ser salvo. Observao: A sacola de propriedade pb pode ser diferente da pb que foi passada ao evento ReadProperties mais recente. O evento WriteProperties pode ocorrer mltiplas vezes durante a vida de uma ocorrncia de object.

Mtodo WriteProperty
Grava um valor a ser salvo em um objeto da classe PropertyBag. Sintaxe object.WriteProperty(DataName, Value[, DefaultValue]) A sintaxe do mtodo WriteProperty tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. DataName Uma expresso de seqncia de caracteres para representar o valor de dados a ser colocado na sacola de propriedade. Value Os valores de dados a serem salvos na sacola de propriedade. DefaultValue O valor padro dos dados. Comentrios O mtodo WriteProperty gravar um valor de dados na sacola de propriedade, e o associar ao valor de seqncia de caracteres em DataName. Este valor de seqncia de caracteres ser utilizado para acessar o valor de dados quando o mtodo ReadProperty chamado para recuperar um valor de dados salvo da sacola de propriedade. Observao: Especificar um valor padro reduz o tamanho do arquivo pertencente ao recipiente do controle. Uma linha para a propriedade escrita no arquivo somente se o valor a ser gravado for diferente do padro. Sempre que possvel, deve-se especificar valores padro para as propriedades do controle ao inicializar, salvar e recuperar valores de propriedade.

Objeto Picture
O objeto Picture permite manipular bitmaps, cones, metarquivos imagens de metarquivos melhorados, GIF e JPEG atribudas a objetos que tenham uma propriedade Picture. Sintaxe Picture Comentrios Com freqncia, identifica-se um objeto Picture usando a propriedade Picture de um objeto que exiba elementos grficos (por exemplo, um objeto Form ou um controle PictureBox). Caso tenha um controle PictureBox chamado Picture1, voc pode configurar um objeto Picture de maneira igual a outro usando a instruo Set, como no exemplo abaixo: Dim X As Picture Set X = LoadPicture("PARTY.BMP") Set Picture1.Picture = X Pode-se usar uma matriz de objetos Picture para manter uma srie de elementos grficos na memria sem precisar de um formulrio que contenha mltiplos controles PictureBox ou Image. Pode-se criar um objeto Picture usando cdigo como, por exemplo, Dim X As New Picture. Caso queira criar um objeto Picture, voc deve usar o objeto StdPicture desta forma: Dim X As New StdPicture

Propriedade Handle
Retorna um identificador ao elemento grfico contido em um objeto Picture. Sintaxe object.Handle O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Valor retornado

Funes Internas

246

O valor retornado pela propriedade Handle depende da configurao atual da propriedade Type como mostra a tabela abaixo: Propriedade Type 1 (Bitmap) 2 (Metarquivo) 3 (cone) 4 (Metarquivo ampliado) Valor retornado Um identificador HBITMAP. Um identificador HMETAFILE. Um identificador HICON ou HCURSOR. Um identificador HENHMETAFILE.

Comentrios A propriedade Handle til quando se precisa passar um identificador a um elemento grfico como parte de uma chamada de uma funo em uma biblioteca de vnculos dinmicos (DLL) da API Windows.

Propriedade hPal
Retorna ou configura um identificador para a paleta de uma figura em um objeto Picture. Sintaxe object.hPal [= value] A sintaxe da propriedade hPal tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. value O identificador para a paleta da figura (HPAL). Comentrios A propriedade hPal til quando se precisa passar um identificador a uma paleta como parte de uma chamada a uma funo em uma biblioteca de vnculos dinmicos (DLL) ou API Windows.

Mtodo Render
Desenha toda ou parte de uma imagem de origem a um objeto de destino. Sintaxe object.Render(hdc, xdest, ydest, destwid, desthgt, xsrc, ysrc, srcwid, srchgt, wbounds) A sintaxe do mtodo Render tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. hdc Obrigatrio. O identificador do contexto do dispositivo do objeto de destino. xdest Obrigatrio. A coordenada de x do canto superior esquerdo da rea de desenho no objeto de destino. Esta coordenada est na unidade de escala do objeto de destino. ydest Obrigatrio. A coordenada de y do canto superior esquerdo da rea de desenho no objeto de destino. Esta coordenada est na unidade de escala do objeto de destino. destwid Obrigatrio. A largura da rea de desenho no objeto de destino, expressa nas unidades de escala do objeto de destino. desthgt Obrigatrio. A altura da rea de desenho no objeto de destino, expressa nas unidades de escala do objeto de destino. xsrc Obrigatrio. A coordenada de x do canto superior esquerdo da rea de desenho no objeto de origem. Esta coordenada est em unidades HIMETRIC. ysrc Obrigatrio. A coordenada de y do canto superior esquerdo da rea de desenho no objeto de origem. Esta coordenada est em unidades HIMETRIC. srcwid Obrigatrio. A largura da rea de desenho no objeto de origem, expressa em unidades HIMETRIC. srchgt Obrigatrio. A altura da rea de desenho no objeto de origem, expressa em unidades HIMETRIC. wbounds Obrigatrio. Os limites de palavra em um metarquivo. Este argumento deve ser passado como um valor Null, a menos que se esteja desenhando em um metarquivo, caso em que o argumento passado como um tipo definido pelo usurio correspondente a uma estrutura RECTL. Comentrios A maneira recomendada de se pintar parte de um elemento grfico em um destino atravs do mtodo PaintPicture.

Barra de ferramentas Add-In

Uma barra de ferramentas onde podem ser colocados os suplementos e assistentes para acesso fcil e rpido pelo usurio. Para iniciar um suplemento ou assistente, clique simplesmente em seu cone na barra de ferramentas.

Funes Internas

247

Os suplementos e assistentes colocados na barra de ferramentas Add-In no sero ativados at que seu boto seja clicado. A barra de ferramentas Add-In elimina a necessidade de se ativar o suplemento atravs da caixa de dilogo AddIn Manager. Pode-se adicionar assistentes e suplementos barra de ferramentas Add-In atravs do boto Add/Remove Toolbar Items (+/-). Ao se clicar neste boto, obtm-se a caixa de dilogo abaixo:

Para adicionar um suplemento ou assistente lista de suplementos disponveis, clique no boto Browse. Aponte para um suplemento ou arquivo .Exe ou .Dll de assistente na caixa de dilogo e, em seguida, clique em Open. Ele deve aparecer na lista Available Add-Ins. Entretanto, ele no aparecer na barra de ferramentas Add-In, a menos que sua caixa esteja selecionada na lista Available Add-Ins. O boto O fecha a caixa de dilogo Add/Remove Toolbar Items e atualiza a barra de ferramentas Add-In contendo os itens selecionados. O boto Cancel fecha a caixa de dilogo Add/Remove Toolbar Items e ignora qualquer modificao efetuada enquanto ela estava aberta. Quando o boto Delete clicado, o suplemento ou assistente atualmente selecionado removido da lista Available AddIns. Observe que isto no provoca a remoo do suplemento ou assistente do sistema, nem suas referncias na caixa de dilogo Add-In Manager. O boto Delete remove somente a entrada na lista Available Add-Ins da barra de ferramentas Add-In.

Propriedade AddIns
Retorna uma coleo de quais suplementos podem ser usados para registrar seus componentes de automao no modelo de objeto de extensibilidade. Sintaxe object.AddIns O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Mtodo AddToAddInToolbar
Insere um boto na barra de ferramentas Add-In que se refere a um suplemento ou assistente. Sintaxe object.AddToAddInToolbar (sfilename As String, sprogid As String, showontoolbar As Boolean, forceaddintoolbar As Boolean) Parte Object sfilename Sprogid saddinname Showontoolbar forceaddintoolbar Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Obrigatrio. Uma expresso de seqncia de caracteres especificando o caminho at o suplemento ou assistente e o nome de seu arquivo .Exe ou .Dll. Obrigatrio. Uma expresso de seqncia de caracteres especificando a ID programtica (ProgID) do suplemento ou assistente. Obrigatrio. Uma expresso de seqncia de caracteres especificando o ttulo do suplemento ou assistente. Obrigatrio. Uma expresso Booleana especificando se o suplemento ou assistente referido aparecer na barra de ferramentas Add-In. True = sim, False = no. Obrigatrio. Uma expresso Booleana especificando se uma barra de ferramentas Add-In automaticamente exibida na prxima vez em que o Visual Basic for inicializado. True = sim, False = no.

Exemplo de mtodo AddToAddInToolbar


Funes Internas

248

Este exemplo utiliza o mtodo AddToAddInToolbar para adicionar um boto barra de ferramentas para um suplemento fictcio chamado MyAdd.Dll. Configurando-se ForceAddInToolbar como True assegura-se que a barra de ferramentas AddIn ser carregada na prxima vez em que o Visual Basic for inicializado. Pode-se modificar o cdigo abaixo em um pequeno aplicativo Visual Basic para servir como Instalao de um suplemento. Sub Main() dim x as Object Set x=CreateObject("AddInToolbar.Manager") x.AddToAddInToolbar sFileName:="C:\VB5\MyAdd.DLL", _ sProgID:="MyAddIn.Connect", _ sAddInName:="MyAddIn Title" _ ShowOnToolBar:=True, _ ForceAddInToolbar:=True End Sub

Objeto AsyncProperty
O objeto AsyncProperty passado ao evento AsyncReadComplete e contm os resultados do mtodo AsyncRead.

Propriedade AsyncType
Retorna ou define o tipo de dado retornado pela propriedade Value. Esta propriedade somente est disponvel como um argumento do mtodo AsyncRead. Sintaxe object.AsyncType = dataType Parte object dataType Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Um inteiro especificando o tipo de dados, como mostra em Configuraes abaixo.

Configuraes As configuraes de dataType so: Constante Valor vbAsyncTypePicture 0 VbAsyncTypeFile 1 VbAsyncTypeByteArray 2

Descrio Padro. Objeto Picture. Os dados so fornecidos em um arquivo criado pelo Visual Basic. Os dados so fornecidos como uma matriz de bytes que contm os dados recuperados.

Propriedade Bindable
Retorna ou define a propriedade Bindable associada a um objeto Member. Sintaxe object.Bindable O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade Browsable
Retorna ou define o atributo Browsable associado a um objeto Member. Sintaxe object.Browsable O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade Category
Retorna ou define o atributo Category associado a um objeto Member. Sintaxe object.Category O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade Connect
Retorna ou define o estado conectado de um suplemento. Sintaxe object.Connect O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Retorna True se o suplemento estiver registrado e atualmente conectado (ativo). Retorna False se o suplemento estiver registrado e no se encontrar conectado (inativo).

Coleo ContainedVBControls
A coleo ContainedVBControls representa uma coleo de objetos VBControl.

Funes Internas

249

Propriedade ContinuousScroll
Retorna ou define um valor que determina se a rolagem contnua, ou se UserDocument somente regenera quando o pressionamento de rolagem liberado. Sintaxe object.ContinuousScroll = boolean Parte Object boolean Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Uma expresso Booleana que especifica se a rolagem contnua ou no.

Configuraes As configuraes para boolean so: Configurao Descrio True Padro. A rolagem contnua. False UserDocument regenera somente quando o pressionamento liberado.

Propriedade Controls
Retorna uma referncia a uma coleo de objetos Control. Sintaxe object.Controls O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Pode-se manipular objetos Control usando a referncia retornada pela propriedade Controls.

Objeto DataBinding
O objeto DataBinding representa uma propriedade acoplvel de um componente. Sintaxe DataBinding Comentrios Existe um objeto DataBinding para cada propriedade de um componente marcado como Bindable na caixa de dilogo Procedure Attributes. O Visual Basic verso 4.0 suportava apenas uma propriedade de acoplamento de um controle a um banco de dados de cada vez. Entretanto, o Visual Basic 5.O oferece a possibilidade de acoplar mltiplas propriedades de um controle a um banco de dados. Isto mais comumente usado com controles User. Para maiores informaes sobre isto, consulte o captulo 9, "Criando componentes ActiveX" no Guia de Ferramentas Componentes.

Propriedade DefaultBind
Retorna ou define o atributo DefaultBind de um objeto Member. Sintaxe object.DefaultBind O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade DisplayBind
Retorna ou define o atributo DisplayBind de um objeto Member. Sintaxe object.DisplayBind O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade Events
Fornece propriedades que permitem aos suplementos conectarem-se a todos os eventos em Visual Basic for Applications. Sintaxe object.Events O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade Hidden
Retorna ou define o atributo Hidden de um objeto Member. Sintaxe object.Hidden O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedades HScrollSmallChange, VScrollSmallChange


Retorna ou define a distncia que UserDocument rolar quando o usurio clicar na seta de rolagem. Sintaxe object.HScrollSmallChange = single object.VScrollSmallChange = single Parte object Descrio Uma expresso de objeto que avalia para um objeto na lista Funes Internas

250

single

Applies To. A distncia em twips que o UserDocument rolar quando o usurio clicar na seta de rolagem.

Comentrios No existe uma propriedade "LargeChange" ao contrrio das propriedades HScrollSmallChange e VScrollSmallChange. O "LargeChange" determinado pelas propriedades ViewPortHeight e ViewPortWidth do objeto ViewPort.

Objeto Hyperlin
Usando as propriedades e mtodos do objeto Hyperlin, seu documento ActiveX ou controle ActiveX pode-se pedir um recipiente que reconhea hyperlins como, por exemplo o Microsoft Internet Explorer, para saltar at um determinado URL. Comentrios Use o mtodo NavigateTo para saltar at um URL. Por exemplo, o cdigo abaixo pressupe que exista um documento ActiveX chamado "axdMyDoc": UserDocument.Hyperlin.NavigateTo _ "c:\mydocs\axdmydoc.vbd" Caso seu documento ActiveX esteja contido em um recipiente que reconhea hyperlins (como, por exemplo, o Internet Explorer) e o recipiente mantenha um histrico dos documentos, utilize os mtodos GoBac ou GoForward para avanar ou recuar na lista. Entretanto, certifique-se de usar verificao de erros, conforme mostra o exemplo abaixo: Private Sub cmdGoForward_Clic() On Error GoTo noDocInHistory UserDocument.Hyperlin.GoForward Exit Sub noDocInHistory: Resume Next End Sub

Propriedade Hyperlin
Retorna uma referncia ao objeto Hyperlin. Sintaxe object.Hyperlin O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade IsDirty
Retorna um valor indicando se este componente foi editado desde a ltima vez em que foi salvo. Sintaxe object.IsDirty O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Evento ItemReloaded
Ocorre aps um componente ter sido recarregado. Sintaxe Private Sub object_ItemReloaded(vbcomponent As VBComponent) A sintaxe do evento ItemReloaded tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. vbcomponent Um objeto VBComponent representando o componente que foi recarregado.

Propriedade Lines
Retorna uma seqncia de caracteres contendo o bloco de linhas especificado. Sintaxe object.Lines(startline As Long, count As Long) Parte object startline count Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Um tipo de dados Long especificando o nmero da linha onde se deve comear. Um tipo de dados Long especificando o nmero de linhas a serem selecionadas.

Mtodo LogEvent
Registra um evento no alvo de log do aplicativo. Em plataformas Windows NT, o mtodo grava no Log de eventos do NT. Em plataformas Windows 95, o mtodo grava no arquivo especificado na propriedade LogPath; como padro, se nenhum arquivo for especificado, os eventos sero gravados em um arquivo chamado vbevents. Sintaxe object.LogEvent (logBuffer, eventType)

Funes Internas

251

Parte object logBuffer eventType

Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Obrigatrio. Seqncias de caracteres a serem gravadas no Registro. Opcional. Um inteiro Long que especifica o tipo de eventos, como mostrado em Configuraes.

Configuraes As configuraes para eventType so: Constante vbLogEventTypeError vbLogEventTypeWarning vbLogEventTypeInformation

Valor 1 2 4

Descrio Erro. Aviso. Informao.

Comentrios As diretrizes para o processo de log esto disponveis no Win32 SD, e estas diretrizes devem ser seguidas ao se registrar no Log de eventos do NT ou ao arquivo especificado na propriedade LogPath (em plataformas Windows 95).

Propriedade LogMode
Retorna um valor que determina como o log (atravs do mtodo LogEvent) ser executado. Somente leitura durante o tempo de execuo. Sintaxe object.LogMode = mode Parte object mode Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Longo. Determina o mtodo de conexo, como mostra em Configuraes abaixo.

Configuraes As configuraes de mode so: Constante Valor vbLogAuto 0

VbLogOff VbLogToFile VbLogToNT

1 2 3

VbLogOverwrite

0x10

VbLogThreadID

0x20

Descrio Se estiver sendo executada no Windows 95, esta opo registra mensagens no arquivo especificado na propriedade LogFile. Se estiver sendo executado no Windows NT, as mensagens so registradas no Log de eventos do NT com a seqncia de caracteres App.Title usada como fonte do aplicativo. Desativa todo o processo de log. As mensagens de partes da IU, assim como do mtodo LogEvent so ignoradas e descartadas. Fora o log a um arquivo. Se no existir nenhum nome de arquivo vlido em LogPath, o log ignorado e a propriedade definida como vbLogOff. Fora o log no Log de eventos do NT. Se no estiver sendo executado no Windows NT, o Log de eventos no estar disponvel, o log ignorado e a propriedade definida como vbLogOff. Indica que o arquivo de log deve ser recriado toda vez que o aplicativo for inicializado. Este valor pode ser combinado com outras opes de modo usando o operador OR. A ao padro para o log anexar ao arquivo existente. No caso de Log de eventos do NT, este sinalizador no tem sentido. Indica que a identificao de segmento atual seja pranexada mensagem na forma "[T:0nnn] ". Este valor pode ser combinado a outras opes de modo usando o operador OR. A ao padro mostrar a identificao de segmento somente quando o aplicativo multisegmentado (explicitamente marcado como de segmento seguro, ou implementado como um aplicativo de segmentos mltiplos implcito como, por exemplo, um servidor local com a propriedade de exemplificao definida como mono uso, de segmentos mltiplos).

Tipo de retorno Long

Funes Internas

252

Propriedade LogPath
Retorna o caminho e nome de arquivo do arquivo usado para capturar o resultado do mtodo LogEvent. No disponvel durante o tempo de criao; somente leitura durante o tempo de execuo. Sintaxe object.LogPath = path Parte object path Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Seqncia de caracteres. O caminho e nome de arquivo de um arquivo de log.

Comentrios A propriedade LogMode determina como ser executado o log. Se nenhum LogPath for definido, o mtodo LogEvent grava no arquivo NT LogEvent do NT.

Propriedade Members
Contm identificadores que tm alcance a nvel de mdulo e que podem ser considerados propriedades, mtodos ou eventos do objeto CodeModule especificado. Sintaxe object.Members O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedades MinHeight, MinWidth


Retorna ou define a altura ou largura mnima de Viewport onde apaream barras de rolagem no recipiente. Sintaxe object.MinHeight = single object.MinWidth = single Parte object single Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. A altura ou largura de um UserDocument onde aparecero barras de rolagem em um recipiente.

Comentrios Os valores padro das propriedades MinHeight e MinWidth so definidos pelas propriedades Height e Width de UserDocument. MinWidth e MinHeight no tm qualquer efeito se a propriedade ScrollBars for definida como False.

Propriedade Moveable
Retorna ou define um valor que especifica se o objeto pode ser movido. Sintaxe object.Moveable = boolean Parte object boolean Configuraes As configuraes Constante True False Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Uma expresso Booleana que especifica se o objeto pode ser movido. de boolean so: Valor Descrio -1 O objeto pode ser movido. 0 O objeto no pode ser movido.

Propriedade NonModalAllowed
Retorna um valor que indica se um formulrio pode ser mostrado de maneira no-modal (sem janela restrita). No disponvel durante o tempo de criao. Sintaxe object.nonModalAllowed O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Tipo de retorno Boolean

Propriedade Palette
Retorna ou define uma imagem que contm a paleta a ser usada para o controle. Sintaxe object.Palette = path Parte Descrio

Funes Internas

253

object path

Uma expresso de objeto que avalia para um objeto na lista Applies To. O caminho da imagem de bitmap contendo a paleta a ser usada.

Comentrios Pode-se usar um arquivo .dib, .gif, ou .pal para definir a paleta, assim como arquivos .bmp.

Propriedade PaletteMode
Retorna ou define um valor que determina qual paleta a ser usada para os controles em um objeto. Sintaxe object.PaletteMode = integer Parte object integer Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Determina o modo de paleta a ser usado, conforme descrito em Configuraes, abaixo.

Configuraes As configuraes para integer so: Constante Valor vbPaletteModeHalfTone 0 VbPaletteModeUseZOrder 1 VbPaletteModeCustom VbPaletteModeContainer VbPaletteModeNone VbPaletteModeObject 2 3 4 5

Descrio (Padro) Usa a paleta Halftone. Usa a paleta do controle em primeiro plano que tenha uma paleta. Usa a paleta especificada na propriedade Palette. Usa a paleta do recipiente que suporta a propriedade Palette do ambiente. Aplica-se somente a UserControls. No usa paleta alguma. Aplica-se somente a UserControls. Usa a paleta do criador ActiveX (aplica-se somente a criadores ActiveX que contenham uma paleta.)

Comentrios Caso nenhuma paleta esteja disponvel, a paleta de meio-tom torna-se a paleta padro. Observao: Em verses anteriores do Visual Basic, PaletteMode correspondia a UseZOrder.

Propriedade PropertyName
O comportamento da propriedade PropertyName depende do contexto onde ela est sendo usada.
Mtodo AsyncRead Define o nome da propriedade que ser associada propriedade Value do objeto AsyncProperty. Evento AsyncReadComplete Especifica o nome da propriedade que est sendo lida atualmente. Este deve corresponder

a um nome designado ao objeto AsyncProperty ao chamar o mtodo AsyncRead.


DataBinding Object Somente leitura. Retorna o nome da propriedade a que se refere o objeto DataBinding.

Sintaxe object.PropertyName = string Parte object string Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. O nome de uma propriedade a ser salva ou recuperada.

Exemplo de propriedade PropertyName


O exemplo atribui um valor propriedade PropertyName no mtodo AsyncRead. O mesmo valor ser usado para designar o resultado do mtodo ao controle PictureBox. Para experimentar o exemplo, coloque o controle PictureBox em um objeto UserDocument. Cole o cdigo na seo General, e pressione F5 para executar. Inicie o Internet Explorer 3.0 (ou mais recente) e digite o caminho e nome at o arquivo UserDocument.vbd na caixa Address. Private Sub UserDocument_InitProperties() Dim strPath As String ' Definir a varivel como um caminho vlido para um ' bitmap em seu computador. strPath = "C:\Program Files\DevStudio\VB\" & _ "Samples\PGuide\VCR\Bfly1.bmp" AsyncRead strPath, vbAsyncTypeFile, _ PropertyName:= "butterfly" End Sub Private Sub UserDocument_AsyncReadComplete (AsyncProp _ As AsyncProperty) ' Usar a instruo Select para determinar qual ' propriedade est sendo retornada. Funes Internas

254

Select Case AsyncProp.PropertyName Case "butterfly" Picture1.Picture = _ LoadPicture(AsyncProp.Value) End Select End Sub

Objeto PropertyPage
O objeto bsico usado para criar uma pgina de propriedade ActiveX. Comentrios As pginas de propriedade oferecem um alternativa janela Properties para visualizao de propriedades. Pode-se agrupar diversas propriedades relacionadas em uma pgina, ou usar uma pgina para oferecer uma interface do tipo caixa de dilogo para uma propriedade complexa demais para a janela Properties. Um objeto PropertyPage representa uma pgina, que quer dizer uma guia na caixa de dilogo Property Pages.

Propriedade PropertyPage
Retorna ou define o atributo PropertyPage de um objeto Member. Sintaxe object.PropertyPage O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Mtodo Quit (suplementos)


Tenta sair do Visual Basic. Sintaxe object.Quit O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Mtodo RemoveAddInFromToolbar
Remove um boto da barra de ferramentas Add-In que se refere a um suplemento ou assistente. Sintaxe object.RemoveAddInFromToolbar (saddinname As String) Parte object saddinname Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Obrigatrio. Uma expresso de seqncia de caracteres especificando o nome do suplemento ou assistente a ser removido da barra de ferramentas Add-In (conforme especificado pelo parmetro saddinname do mtodo AddToAddInToolbar).

Exemplo de mtodo RemoveAddInFromToolbar


Este exemplo remove um boto existente da barra de ferramentas Add-In que se refere a um suplemento fictcio chamado MyAddIn Title: Sub Main() dim x as Object Set x=CreateObject("AddInToolbar.Manager") x.RemoveAddInFromToolbar sAddInName:="MyAddIn Title" End Sub

Propriedade RequestEdit
Retorna ou define o atributo RequestEdit de um objeto Member. Sintaxe object.RequestEdit O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Mtodo SelectAll
Seleciona todos os controles contidos em um formulrio. Sintaxe object.SelectAll O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Mtodo SetViewport
Define as coordenadas esquerda e superior do UserDocument que estar visvel no Viewport. Sintaxe object.SetViewPort left, top Parte object Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Funes Internas

255

left top

Obrigatrio. Um valor do tipo Single que especifica a coordenada esquerda do UserDocument. Obrigatrio. Um valor do tipo Single que especifica a coordenada superior do UserDocument.

Exemplo do mtodo SetViewport


O exemplo utiliza o mtodo SetViewport para colocar automaticamente o controle TextBox com o foco no canto superior esquerdo do Viewport do recipiente. Para experimentar o exemplo, coloque uma matriz de trs ou mais controles TextBox em um objeto UserDocument. Cole o cdigo abaixo da seo General. Pressione F5 para executar o projeto e, em seguida, execute o Internet Explorer (3.0 ou mais recente). No Internet Explorer, digite o caminho e nome de arquivo do documento ActiveX (UserDocument1.vbd) na caixa Address (o arquivo estar no mesmo diretrio que o executvel Visual Basic). Quando o documento ActiveX for exibido, digite qualquer texto distintivo no primeiro controle TextBox. Pressione TAB para mover at o prximo controle, para ver o efeito do mtodo SetViewPort. Private Sub Text1_GotFocus(Index As Integer) UserDocument.SetViewport Text1(Index).Left, _ Text1(Index).Top End Sub Private Sub UserDocument_Initialize() ' O recipiente deve ser grande o suficiente para ' que apaream barras de rolagem. Para assegurar ' isto, defina as propriedades MinHeight e ' MinWidth como maiores que o recipiente. UserDocument.MinHeight = 10000 UserDocument.MinWidth = 10000 End Sub

Mtodo Size
Altera a largura e altura de um objeto UserControl. Sintaxe object.Size width, height Parte object width height Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Obrigatrio. A largura do objeto em twips. Obrigatrio. A altura do objeto em twips.

Comentrios As propriedades Width e Height de um objeto UserControl so sempre fornecidas em Twips, independente de ScaleMode.

Propriedade StandardMethod
Retorna ou define o atributo StandardMethod de um objeto Member. Sintaxe object.StandardMethod O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Mtodo StartLogging
Define o alvo e modo de log de uma operao. Sintaxe object.StartLogging logTarget, logMode Parte object logTarget logMode Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To. Caminho e nome de arquivo do arquivo usado para capturar o resultado do mtodo LogEvent. Um valor que determina como o processo de log (atravs do mtodo LogEvent) ser executado. Ver Configuraes abaixo.

Configuraes As configuraes para logMode so: Constante Valor Descrio vbLogAuto 0 Caso esteja sendo executado no Windows 95, esta opo registra as mensagens nos arquivos especificados na propriedade LogFile. Caso esteja sendo executado no Windows NT, as mensagens so registradas no log de eventos do aplicativo NT, com a

Funes Internas

256

VbLogOff VbLogToFile

1 2

VbLogToNT

VbLogOverwrite

0x10

VbLogThreadID

0x20

seqncia de caracteres App.Title usada como a origem do aplicativo. Desativa todo o processo de log. As mensagens de partes da IU, assim como do mtodo LogEvent so ignoradas e descartadas. Fora o log em um arquivo. Se nenhum nome de arquivo vlido existir em LogPath, o processo de log ignorado, e a propriedade definida como vbLogOff. Fora o processo de log no Log de eventos do NT. Se no estiver sendo executado no Windows NT, ou se o Log de eventos no estiver disponvel, o processo de log ignorado e a propriedade definida como vbLogOff. Indica que o arquivo de log deve ser recriado toda vez que o aplicativo for inicializado. Este valor pode ser combinado com outras opes de modo usando o operador OR. A ao padro para a rotina de registro anexar ao arquivo j existente. No caso de Log de eventos do NT, este sinalizador no tem significado algum. Indica que a identificao de segmento atual deve ser pr-anexada mensagem, no formato "[T:0nnn] ". Este valor pode ser combinado com outras opes de modo usando o operador OR. A ao padro mostrar a identificao de segmento somente quando o aplicativo multisegmentado (explicitamente marcado como segmentado de forma segura, ou implementado como um aplicativo de segmentos mltiplos implcito como, por exemplo, um servidor local com uma propriedade de exemplificao definida como mono uso, de segmentos mltiplos).

Propriedade ThreadID
Retorna a Win32 ID do segmento em execuo. (Usado para chamadas da API Win32.) Sintaxe object.ThreadID O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Tipo de retorno Long

Propriedade UIDefault
Retorna ou define o atributo UIDefault do objeto Member. Sintaxe object.UIDefault O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade UnattendedApp
Retorna um valor que determina se um aplicativo ser executado sem qualquer interface de usurio. Sintaxe object.UnattendedApp= boolean A sintaxe UnattendedApp tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. boolean Uma expresso Booleana que especifica se o aplicativo ser executado sem qualquer interface de usurio. Configuraes As configuraes Constante True False para boolean so: Valor Descrio -1 O aplicativo no tem interface de usurio. 0 O aplicativo tem uma interface de usurio.

Objeto UserControl
O objeto UserControl o objeto bsico usado para criar um controle ActiveX. Comentrios Um controle ActiveX criado com o Visual Basic sempre constitudo de um objeto UserControl mais quaisquer controles referidos como controles constitutivos escolhidos para serem colocados no UserControl.

Funes Internas

257

Como os formulrios do Visual Basic, objetos UserControl tm mdulos de cdigo e criadores visuais. Coloque os controles constituintes no criador de objeto UserControl, exatamente como colocaria controles em um formulrio.

Objeto UserDocument
Base de um documento ActiveX, o objeto UserDocument se parece com um objeto Form Visual Basic padro com algumas excees. Comentrios O objeto UserDocument tem a maioria, mas nem todos, dos eventos que so encontrados em um objeto Form. Os eventos presentes em um Form que no so encontrados no UserDocument incluem: Activate, Deactivate, LinClose, LinError, LinExecute, LinOpen, Load, QueryUnload e Unload. Os eventos presentes no UserDocument, mas no encontrados em um objeto Form incluem: AsycReadComplete, EnterFocus, ExitFocus, Hide, InitProperties, ReadProperties, Scroll, Show e WriteProperties. No se pode colocar objetos incorporados (por exemplo, um documento Excel ou Word) ou um controle OLE Container em um UserDocument.

Propriedade VBProjects
Retorna a coleo VBProjects que representa todos os projetos atualmente abertos no IDE do Visual Basic. Sintaxe object.VBProjects O espao reservado object representa um expresso de objeto que avalia para um objeto na lista Applies To.

Propriedades ViewportHeight, ViewportLeft, ViewportTop, ViewportWidth


Retorna o valor da altura, esquerda, superior ou largura do Viewport. Sintaxe object.ViewportHeight object.ViewportLeft object.ViewportTop object.ViewportWidth A espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Tipo de retorno Single Comentrios O aplicativo usado para visualizar o documento ActiveX controla o tamanho do Viewport. Entretanto, pode-se usar as propriedades MinHeight e MinWidth para redimensionar o UserDocument. Por exemplo, o cdigo abaixo redimensiona um controle PictureBox, de acordo com o tamanho das propriedades de largura e altura da esquerda do Viewport. Private Sub UserDocument_Resize() Picture1.Width = UserDocument.ViewportWidth - _ Picture1.Left Picture1.Height = UserDocument.ViewportHeight - _ Picture1.Top End Sub

Propriedade Windows
Retorna o objeto Window, que representa uma janela no IDE do Visual Basic. Sintaxe object.Window O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Propriedade StartUpPosition
Retorna ou define um valor especificando a posio de um objeto quando aparece pela primeira vez. Sintaxe object.StartUpPosition = position A sintaxe da propriedade StartUpPosition tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. StartUpPosition Um inteiro que especifica a posio do objeto, como mostrado em Configuraes. Configuraes Pode-se usar uma das quatro configuraes para StartUpPosition: Constante Valor Descrio vbStartUpManual 0 Nenhuma configurao inicial especificada. vbStartUpOwner 1 Centraliza no item a que pertence o UserForm. vbStartUpScreen 2 Centraliza na tela inteira. vbStartUpWindowsDefault 3 Posiciona no canto superior esquerdo da tela.

Funes Internas

258

Comentrios Pode-se definir a propriedade StartUpPosition por meio de programa ou a partir da janela de propriedade.

Propriedade Charset
Define ou retorna o conjunto de caracteres usado na fonte. Sintaxe object.Charset [ = value ] A sintaxe da propriedade Charset tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. value Um valor inteiro que especifica o conjunto de caracteres usados pela fonte, conforme descrito em Configuraes. Configuraes Estas so algumas das configuraes comuns para value: Value Descrio 0 Caracteres-padro do Windows 2 O conjunto de caracteres de smbolos. 128 O conjunto de caracteres de byte duplo (DBCS) exclusivo da verso japonesa do Windows 255 Caracteres ampliados normalmente exibidos por aplicativos DOS. Comentrios A definio da propriedade Charset como um destes valores disponveis seleciona o conjunto de caracteres somente se ele estiver disponvel na fonte atual.

Propriedade DataBindings
Retorna a coleo de objetos DataBindings contendo as propriedades acoplveis disponveis ao desenvolvedor. Sintaxe object.DataBindings O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To.

Funes Internas

259

Objeto Control
O nome de classe de todos os controles internos do Visual Basic. Sintaxe Control Comentrios Pode-se dimensionar uma varivel como um objeto Control, e referir-se a ele como seria feito a um controle em um formulrio. Isto demonstrado por: Dim C as Control Set C = Command1

Propriedade IsBindable
Retorna um valor Booleano indicando se a propriedade acoplvel. Esta propriedade somente leitura. Sintaxe object.IsBindable O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Usa-se esta propriedade para determinar se a propriedade acoplvel. Observao: Esta propriedade normalmente utilizada em um assistente, para verificar se uma propriedade acoplvel.

Propriedade IsDataSource
Retorna um valor Booleano indicando se a propriedade uma origem de dados. Esta propriedade somente leitura. Sintaxe object.IsDataSource O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Usa-se esta propriedade para determinar se ela uma origem de dados e pode ser anexada a um controle de dados. Observao: Esta propriedade normalmente utilizada em um assistente para verificar se uma propriedade uma origem de dados.

Mtodo Resync (Remote Data)


Intercepta os valores de conflito de lote para a linha atual. Sintaxe object.Resync O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O mtodo Resync somente vlido ao se utilizar Client-Batch Cursors. Resync resincroniza as colunas na linha atual na biblioteca de cursores com os dados atuais no servidor (visveis para sua transao). Caso a linha no tenha sido modificada, este mtodo altera as propriedades Value e OriginalValue para corresponder ao que est atualmente no servidor. Caso a linha tenha sido modificada, este mtodo somente ajusta a propriedade OriginalValue, de modo que no sejam perdidas as edies. Este segundo caso til quando se deseja evitar um conflito de concorrncia otimista. O ltimo caso em que isto utilizado quando se est lidando com uma linha que se tenta atualizado usando BatchUpdate, mas ocorreu um conflito devido a uma falha de verificao de concorrncia. Neste caso, este mtodo ajustar BatchConflictValue para refletir a verso mais recente da coluna no servidor.

Mtodo Files
Retorna uma coleo de nomes de arquivo usados pelo formato vbCFFiles (uma coleo DataObjectFiles) que por sua vez contm uma lista de todos os nomes de arquivo usados por um objeto DataObject; por exemplo, os nomes de arquivo que o usurio arrasta de e para o Windows File Explorer. Sintaxe object.Files(index) A sintaxe da coleo Files tem estas partes: Parte Descrio object index Uma expresso de objeto que avalia para um objeto DataObject. Um inteiro que um ndice de uma matriz de nomes de arquivos.

Comentrios A coleo Files preenchida por nomes de arquivos somente quando o objeto DataObject contm dados do tipo vbCFFiles. O objeto DataObject pode conter diversos tipos de dados. Pode-se iterar pela coleo para recuperar a lista de nomes de arquivo. A coleo Files pode ser preenchida para permitir que aplicativos do Visual Basic funcionem como uma origem de arraste de uma lista de arquivos.

Propriedade ObjectAcceptFormats
Retorna a lista de formatos que podem ser aceitos por um objeto. Sintaxe object.ObjectAcceptFormats(number) Funes Internas

260

A sintaxe da propriedade ObjectAcceptFormats tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. number Uma expresso numrica que avalia para um inteiro indicando o elemento na matriz. Comentrios A lista uma matriz de seqncia de caracteres baseada em zero. Os elementos da matriz podem ser usados para definir a propriedade Format ao se obter dados de um objeto usando as propriedades Data e DataText.

Propriedade StandardSize
Define a pgina de propriedade como um tamanho padro. Sintaxe object.StandardSize [= value] A sintaxe da propriedade StandardSize tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. value Uma expresso de inteiro especificando o tipo de ponteiro de mouse exibido, conforme descrito em Configuraes. Configuraes As configuraes para value so: Constante Valor Custom 0 Small 1 Large 2

Descrio (Padro) Tamanho determinado pelo objeto. Define PropertyPage StandardSize como 101 pixels de altura por 375 pixels de largura. Define PropertyPage StandardSize como 179 pixels de altura por 375 pixels de largura.

Objeto Global
Um objeto Global um objeto de aplicativo que permite acessar propriedades e mtodos a nvel de aplicativo. Sintaxe Global Comentrios Global um tipo de dados Object. Visto que o objeto Global um objeto de aplicativo automaticamente referido, no necessrio codificar uma referncia especfica para este objeto.

Propriedade App
Retorna o objeto App, um objeto global acessado com a palavra-chave App. Ela determina ou especifica informaes sobre o ttulo do aplicativo, informaes de verso, o caminho e nome de seu arquivo executvel e arquivos da Ajuda, e se uma ocorrncia anterior do aplicativo est sendo executada. Sintaxe App Comentrios O objeto App no tem eventos ou mtodos.

Propriedade Clipboard
Retorna um objeto Clipboard, que oferece acesso rea de transferncia do sistema. Sintaxe Clipboard Comentrios O objeto Clipboard usado para manipular texto e elementos grficos na rea de transferncia. Pode-se usar este objeto para permitir a um usurio copiar, recortar e colar texto ou elementos grficos no seu aplicativo. Antes de copiar qualquer material para o objeto Clipboard, deve-se limpar seu contedo executando um mtodo Clear como Clipboard.Clear. Observe que o objeto Clipboard compartilhado por todos os aplicativos do Windows e, assim, o contedo est sujeito a alteraes toda vez que se alterna para outro aplicativo. O objeto Clipboard pode conter diversas partes de dados, desde que cada parte esteja em um formato diferente. Por exemplo, pode-se usar o mtodo SetData para colocar um bitmap na rea de transferncia com o formato vbCFDIB e, em seguida, usar o mtodo SetText com o formato vbCFText para colocar texto na rea de transferncia. Pode-se, ento, usar o mtodo GetText para recuperar o texto ou o mtodo GetData para recuperar o elemento grfico. Os dados da rea de transferncia sero perdidos quando outro conjunto de dados do mesmo formato for colocado na rea de transferncia atravs de cdigo ou de um comando de menu.

Propriedade Forms
Retorna uma coleo Forms, que uma coleo cujos elementos representam cada formulrio carregado em um aplicativo. A coleo inclui o formulrio MDI do aplicativo, formulrios MDI filha e formulrios no-MDI. A coleo Forms tem uma nica propriedade, Count, que especifica o nmero de elementos na coleo. Sintaxe

Funes Internas

261

Forms(index) O espao reservado index representa um inteiro entre 0 e Forms.Count - 1. Comentrios Pode-se usar a coleo Forms para iterar por todos os formulrios carregados em um aplicativo. Ela identifica uma varivel global intrnseca chamada Forms. Pode-se passar Forms(index) a uma funo cujo argumento seja especificado como uma classe Forms.

Propriedade Printer
Retorna um objeto Printer, que permite comunicar-se com uma impressora do sistema (inicialmente a impressora padro do sistema). Sintaxe Printer Comentrios Usam-se mtodos grficos para se desenhar texto e elementos grficos no objeto Printer. Uma vez que o objeto Printer contm o resultado que se deseja imprimir, pode-se usar o mtodo EndDoc para enviar o resultado diretamente impressora padro do aplicativo. Deve-se verificar e possivelmente revisar o layout dos seus formulrios se eles forem impressos. Se utilizar o mtodo PrintForm para imprimir um formulrio, por exemplo, imagens grficas podem ser recortadas na parte inferior da pgina e o texto transferido para a pgina seguinte.

Propriedade Printers
Retorna uma coleo Printers que permite reunir informaes sobre todas as impressoras disponveis no sistema. Sintaxe Printers(index) O espao reservado index representa um inteiro no intervalo de 0 a Printers.Count-1. Comentrios A coleo Printers permite consultar as impressoras disponveis, de modo que se possa especificar uma impressora padro para o seu aplicativo. Por exemplo, caso se deseje descobrir quais das impressoras disponveis utiliza um driver de impressora especfico. O cdigo abaixo pesquisa todas as impressoras disponveis para localizar a primeira impressora com sua orientao de pgina definida como retrato e, em seguida, define a mesma como a impressora padro: Dim X As Printer For Each X In Printers If X.Orientation = vbPRORPortrait Then ' Definir a impressora como padro do sistema. Set Printer = X ' Interomper a procura pela impressora. Exit For End If Next Designa-se uma das impressoras da coleo Printers como a impressora padro utilizando-se a instruo Set. O exemplo anterior designa a impressora identificada pela varivel de objeto X, como impressora padro para o aplicativo. Observao: Caso seja utilizada a coleo Printers para especificar uma determinada impressora, como em Printers(3), pode-se somente acessar propriedades somente leitura. Para ler e gravar as propriedades de uma impressora individual, deve-se primeiro tornar esta impressora a impressora padro do aplicativo.

Propriedade Screen
Retorna um objeto Screen, que permite manipular formulrios de acordo com seu posicionamento na tela e controlar o ponteiro do mouse fora dos formulrios do seu aplicativo durante o tempo de execuo. O objeto Screen acessado com a palavra-chave Screen. Sintaxe Screen Comentrios O objeto Screen a rea de trabalho inteira do Windows. Usando-se o objeto Screen, pode-se definir a propriedade MousePointer do objeto Screen como o ponteiro de ampulheta enquanto um formulrio de janela restrita exibido.

Eventos Activate, Deactivate


Ativar ocorre quando um objeto torna-se a janela ativa. Desativar ocorre quando um objeto no mais a janela ativa.

Sintaxe Private Sub object_Activate( ) Private Sub object_Deactivate( ) O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Um objeto pode tornar-se ativo pela ao do usurio como, por exemplo, clicar nele, ou usando-se os mtodos Show ou SetFocus no cdigo.

Funes Internas

262

O evento Activate somente pode ocorrer quando um objeto est visvel. Por exemplo, um formulrio carregado com a instruo Load no est visvel, a menos que seja usado o mtodo Show, ou que a propriedade Visible do formulrio seja configurada como True. Os eventos Activate e Deactivate somente ocorrem ao se mover o foco dentro do aplicativo. Mover o foco de e para um objeto em outro aplicativo no dispara nenhum dos dois eventos. O evento Deactivate no ocorre ao se carregar um objeto. O evento Activate ocorre antes do evento GotFocus; o evento LostFocus ocorre antes do evento Deactivate. Estes eventos ocorrem para formulrios MDI filhovbvb somente quando o foco muda de um filho a outro. Em um objeto MDIForm com dois formulrios filho, por exemplo, os formulrios filho recebem estes eventos quando o foco se move entre eles. Entretanto, quando o foco se alterna de um formulrio filho para um formulrio filho no-MDI, o MDIForm pai recebe os eventos Activate e Deactivate. Se um arquivo .exe criado pelo Visual Basic exibe uma caixa de dilogo criada por um arquivo .dll tambm criado em Visual Basic, o formulrio do arquivo .exe obter os eventos Deactivate e LostFocus. Isto pode ser inesperado, pois deve-se obter o evento Deactivate: Caso o objeto seja um componente fora de processo. Caso o objeto no tenha sido escrito em Visual Basic. No ambiente de desenvolvimento ao chamar-se uma DLL criada em Visual Basic.

Evento Change
Indica que o contedo de um controle foi alterado. Como e quando este evento ocorre com o controle:
ComboBox altera o texto na parte da caixa de texto do controle. Ocorre somente se a propriedade Style estiver

configurada como 0 (Dropdown Combo) ou 1 (Simple Combo) e o usurio altera o texto ou a configurao da propriedade Text alterada atravs de cdigo. DirListBox altera o diretrio selecionado. Ocorre quando o usurio clica duas vezes em um novo diretrio, ou quando se modifica a configurao da propriedade Path atravs de cdigo. DriveListBox altera a unidade de disco selecionada. Ocorre quando o usurio seleciona uma nova unidade de disco, ou quando a configurao da propriedade Drive modificada atravs de cdigo. HScrollBar e VScrollBar (barras de rolagem horizontal e vertical) movem a parte da caixa de rolagem da barra de rolagem. Ocorre quando o usurio rola ou quando a configurao da propriedade Value modificada atravs de cdigo. Label altera o contedo de Label. Ocorre quando um vnculo DDE atualiza dados, ou quando a configurao da propriedade Caption alterada atravs de cdigo. PictureBox altera o contedo de PictureBox. Ocorre quando um vnculo DDE atualiza dados, ou quando a configurao da propriedade Picture modificada por meio de cdigo. TextBox altera o contedo da caixa de texto. Ocorre quando um vnculo DDE atualiza dados, quando um usurio altera o texto, ou quando a propriedades Text modificada atravs de cdigo. Sintaxe Private Sub object_Change([index As Integer]) A sintaxe do evento Change tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica exclusivamente um controle, caso ele esteja em uma matriz de controle Comentrios O procedimento de evento Change pode sincronizar ou coordenar a exibio de dados entre controles. Por exemplo, podese usar um procedimento de evento Change de barra de rolagem para atualizar a configurao da propriedade Value da barra de rolagem em um controle TextBox. Ou, pode-se usar um procedimento de evento Change para exibir dados e frmulas em uma rea de trabalho e os resultados em outra rea. Procedimentos de evento Change tambm so teis para atualizar propriedades em controles de sistema de arquivo (DirListBox, DriveListBox e FileListBox). Por exemplo, pode-se atualizar a configurao da propriedade Path para que um controle DirListBox reflita uma alterao na configurao da propriedade Drive de um controle DriveListBox. Observao: Um procedimento de evento Change pode, algumas vezes, provocar um evento em cascata. Isto ocorre quando o evento Change do controle altera o contedo do controle, por exemplo, configurando uma propriedade no cdigo que determina o valor do controle, por exemplo como a configurao da propriedade Text de um controle TextBox. Para evitar-se um evento em cascata: Se possvel, evite escrever um procedimento de evento Change para um controle que altere contedo de controle. Caso tal procedimento seja escrito, certifique-se de definir um sinalizador que impea mais alteraes enquanto as alteraes atuais estiverem sendo feitas. Evite criar dois ou mais controles cujos procedimentos de evento Change afetem um ao outro, por exemplo, dois controles TextBox que atualizam um ao outro durante seus eventos Change. Evite usar uma funo ou instruo MsgBox neste evento para controles HScrollBar e VScrollBar.

Evento Clic
Ocorre quando o usurio pressiona e, em seguida, solta o boto do mouse sobre um objeto. Pode tambm ocorrer quando o valor de um controle alterado. Para um objeto Form, este evento ocorre quando o usurio clica em uma rea vazia ou controle desativado. Para um controle, este evento ocorre quando o usurio: Clica em um controle com o boto direito ou esquerdo do mouse. Com um controle ChecBox, CommandButton, Listbox ou OptionButton, o evento Clic ocorre somente quando o usurio clica o boto esquerdo do mouse. Seleciona um item em um controle ComboBox ou ListBox, pressionando as teclas de direo, ou clicando o boto do mouse. Funes Internas

263

Pressiona a BARRA DE ESPAOS quando um controle CommandButton, OptionButton ou ChecBox tem o foco. Pressiona ENTER quando um formulrio tem um controle CommandButton com sua propriedade Default configurada como

True.
Pressiona ESC quando um formulrio tem um boto Cancel um controle CommandButton com sua propriedade Cancel

configurada como True.


Pressiona um tecla de acesso de um controle. Por exemplo, se a legenda de um controle CommandButton "&Go",

pressionando-se ALT+G dispara-se o evento. Pode-se ainda disparar o evento Clic no cdigo: Configurando a propriedade Value de um controle CommandButton como True. Configurando a propriedade Value de um controle OptionButton como True. Alterando a configurao da propriedade Value de um controle ChecBox. Sintaxe Private Sub Form_Clic( ) Private Sub object_Clic([index As Integer]) A sintaxe do evento Clic tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica exclusivamente um controle, caso ele esteja em uma matriz de controle. Comentrios Tipicamente, anexa-se um procedimento de evento Clic a um controle CommandButton, objeto Menu ou controle PictureBox para executar comandos e aes do tipo comando. Para os outros controles aplicveis, usa-se este evento para disparar aes em resposta a uma alterao no controle. Pode-se usar a propriedade Value de um controle para testar o estado do controle a partir do cdigo. Clicando-se em um controle, geram-se eventos MouseDown e MouseUp alm do evento Clic. A ordem em que estes trs eventos ocorrem varia de controle para controle. Por exemplo, para os controles ListBox e CommandButton, os eventos ocorrem nesta ordem: MouseDown, Clic, MouseUp. Mas, para os controles FileListBox, Label ou PictureBox, os eventos ocorrem nesta ordem: MouseDown, MouseUp e Clic. Ao se anexar procedimentos de evento para estes eventos relacionados, certifiquese de que suas aes no sejam conflitantes. Se a ordem de eventos for importante em seu aplicativo, teste o controle para determinar a ordem dos eventos. Observao: Para distinguir entre os botes direito, esquerdo e central do mouse, use os eventos MouseDown e MouseUp. Se houver cdigo no evento Clic, o evento DblClic nunca ser desencadeado porque o evento Clic o primeiro evento a disparar entre os dois. Como resultado, o clique do mouse interceptado pelo evento Clic, assim o evento DblClic nunca ocorre.

Evento DragDrop
Ocorre quando uma operao de arrastar-e-soltar termina como resultado de se arrastar um controle sobre um objeto e soltar o boto do mouse, ou usando-se o mtodo Drag com seu argumento action configurado como 2 (Soltar). Sintaxe Private Sub Form_DragDrop(source As Control, x As Single, y As Single) Private Sub MDIForm_DragDrop(source As Control, x As Single, y As Single) Private Sub object_DragDrop([index As Integer,]source As Control, x As Single, y As Single) A sintaxe do evento DragDrop tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. source O controle que est sendo arrastado. Pode-se incluir propriedades e mtodos no procedimento de evento com este argumento por exemplo, Source.Visible = 0. x, y Um nmero que especifica a posio atual horizontal (x) e vertical (y) do ponteiro do mouse dentro do formulrio ou controle-destino. Estas coordenadas so sempre expressas em termos do sistema de coordenadas do alvo, conforme configurado pelas propriedades ScaleHeight, ScaleWidth, ScaleLeft e ScaleTop. Comentrios Use um procedimento de evento DragDrop para controlar o que acontece aps uma operao de arraste ter terminado. Por exemplo, pode-se mover o controle de origem at um novo local, ou copiar um arquivo de um local para outro. Quando controles mltiplos podem ser potencialmente usados em um argumento source: Usa-se a palavra-chave TypeOf com a instruo If para determinar o tipo de controle usado com source. Usa-se a propriedade Tag do controle para identific-lo e, em seguida, usa-se um procedimento de evento DragDrop. Observao: Usa-se a propriedade DragMode e o mtodo Drag para especificar a maneira como o arraste iniciado. Uma vez que o arraste tenha sido iniciado, pode-se manipular os eventos que precedem um evento DragDrop com um procedimento de evento DragOver.

Funes Internas

264

Evento DragOver
Ocorre quando uma operao arrastar-e-soltar est sendo executada. Pode-se usar este evento para monitorar o ponteiro do mouse medida que ele entra, sai ou permanece diretamente sobre um alvo vlido. A posio do ponteiro do mouse determina o objeto de destino que recebe este evento. Sintaxe Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer) Private Sub MDIForm_DragOver(source As Control, x As Single, y As Single, state As Integer) Private Sub object_DragOver([index As Integer,]source As Control, x As Single, y As Single, state As Integer) A sintaxe do evento DragOver tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. source O controle que est sendo arrastado. Pode-se referir a propriedades e mtodos no procedimento de evento com este argumento por exemplo, Source.Visible = False. x, y Um nmero que especifica a posio atual horizontal (x) e vertical (y) do ponteiro do mouse dentro de um formulrio ou controle alvo. Estas coordenadas so sempre expressas em termos do sistema de coordenadas, conforme definido pelas propriedades ScaleHeight, ScaleWidth, ScaleLeft e ScaleTop. State Um inteiro que corresponde ao estado de transio do controle que est sendo arrastado em relao a um formulrio ou controle destino: 0 = Entrar (o controle de origem est sendo arrastado dentro do alcance de um destino). 1 = Sair (o controle de origem est sendo arrastado para fora do alcance de um destino). 2 = Sobre (o controle de origem est sendo movido de uma posio a outra, dentro do destino). Comentrios Use um procedimento de evento DragOver para determinar o que acontece aps o arraste ter-se iniciado, e antes que um controle seja solto sobre o destino. Por exemplo, pode-se verificar um intervalo de destino vlido, selecionando-se o destino (definindo-se a propriedade BacColor ou ForeColor no cdigo) ou exibindo-se um ponteiro de arraste especial (definindose a propriedade DragIcon ou MousePointer no cdigo). Use o argumento state para determinar as aes em pontos de transio importantes. Por exemplo, pode-se selecionar um possvel destino quando state configurado como 0 (Entrar), e restaurar a aparncia anterior do objeto quando state est configurado como 1 (Sair). Quando um objeto recebe um evento DragOver enquanto state est definido como 0 (Entrar): Se o controle de origem solto sobre o objeto, este objeto recebe um evento DragDrop. Se o controle de origem no solto sobre o objeto, este objeto recebe outro evento DragOver quando state est configurado como 1 (Sair). Observao: Usa-se a propriedade DragMode e o mtodo Drag para especificar a maneira como o arraste iniciado. Para obter sugestes de tcnicas com o argumento source, consulte "Comentrios" no tpico "Evento DragDrop".

Evento DropDown
Ocorre quando a parte da lista de um controle ComboBox est para ser exibida; este evento no ocorre se a propriedade Style de um controle ComboBox est configurada como 1 (Caixa de combinao simples). Sintaxe Private Sub object_DropDown([index As Integer]) A sintaxe do evento DropDown tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Usa-se um procedimento de evento DropDown para efetuar atualizaes finais em uma lista ComboBox, antes que o usurio efetue uma seleo. Isto permite adicionar ou remover itens da lista usando os mtodos AddItem ou RemoveItem. Esta flexibilidade til quando se deseja alguma inter-relao entre controles por exemplo, caso aquilo que se deseja carregar em uma lista ComboBox dependa do que o usurio seleciona em um grupo OptionButton.

Evento GotFocus
Ocorre quando um objeto recebe o foco, por ao do usurio, por exemplo, usando a tecla de tabulao ou clicando no objeto, ou alterando o foco no cdigo atravs do mtodo SetFocus. Um formulrio somente recebe o foco quando todos os controles visveis esto desativados. Sintaxe Private Sub Form_GotFocus( ) Funes Internas

265

Private Sub object_GotFocus([index As Integer]) A sintaxe do evento GotFocus tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Tipicamente, usa-se o procedimento de evento GotFocus para especificar as aes que ocorrem quando um controle ou formulrio recebe foco pela primeira vez. Por exemplo, anexando-se um procedimento de evento GotFocus a cada controle de um formulrio, pode-se orientar o usurio exibindo-se curtas instrues ou mensagens de barra de status. Pode-se ainda fornecer dicas visuais ativando, desativando ou exibindo outros controles que dependam do controle que tem o foco. Observao: Um objeto somente pode receber o foco se suas propriedades Enabled e Visible estiverem definidas como True. Para personalizar a interface de teclado em Visual Basic para mover o foco, configura-se a ordem de tabulao ou especificam-se teclas de acesso para controles em um formulrio.

Eventos eyDown, eyUp


Ocorrem quando o usurio pressiona (eyDown) ou solta (eyUp) uma tecla, enquanto um objeto tem o foco. (Para interpretar caracteres ANSI, usa-se o evento eyPress.) Sintaxe Private Sub Form_eyDown(eycode As Integer, shift As Integer) Private Sub object_eyDown([index As Integer,]eycode As Integer, shift As Integer) Private Sub Form_eyUp(eycode As Integer, shift As Integer) Private Sub object_eyUp([index As Integer,]eycode As Integer, shift As Integer) A sintaxe dos eventos eyDown e eyUp tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. eycode Um cdigo de tecla, por exemplo, vbeyF1 (a tecla F1) ou vbeyHome (a tecla HOME). Para especificar os cdigos de tecla, use as constantes contidas na biblioteca de objetos do (VB)Visual Basic no Object Browser. shift Um inteiro que corresponde ao estado das teclas SHIFT, CTRL e ALT no momento do evento. O argumento shift um campo de bit com os bits menos importantes correspondendo tecla SHIFT (bit 0), tecla CTRL (bit 1) e tecla ALT (bit 2 ). Estes bits correspondem, respectivamente, aos valores 1, 2 e 4. Algum, todos ou nenhum dos bits podem estar configurados, indicando que alguma, todas ou nenhuma das teclas est pressionada. Por exemplo, se tanto CTRL quanto ALT estiverem pressionadas, o valor de shift ser 6. Comentrios Em ambos os eventos, o objeto que tem o foco recebe todos os pressionamentos de tecla. Um formulrio somente pode ter o foco se no contiver controles ativados e visveis. Embora os eventos eyDown e eyUp possam aplicar-se maioria das teclas, eles so mais comumente usados para: Teclas de caracteres estendidos como, por exemplo, teclas de funo. Teclas de direo. Combinaes de teclas com modificadores de teclado padro. Distinguir entre o teclado numrico e as teclas numricas comuns. Use os procedimentos de evento eyDown e eyUp se precisar responder tanto ao pressionamento quanto liberao de uma tecla. eyDown e eyUp no so chamados para: A tecla ENTER se o formulrio tiver um controle CommandButton com a propriedade Default configurada como True. A tecla ESC se o formulrio tiver um controle CommandButton com a propriedade Cancel configurada como True. A tecla TAB. eyDown e eyUp interpretam as maisculas e minsculas de cada caractere atravs de dois argumentos: eycode, que indica a tecla fsica (retornando, assim, A e a como a mesma tecla) e shift, que indica o estado shift+tecla e, portanto, retorna A ou a. Caso seja necessrio testar o argumento shift, pode-se usar as constantes shift que definem os bits dentro de argumentos. As constantes tm os valores abaixo: Constante Valor Descrio vbShiftMas 1 Mscara de bits da tecla SHIFT. VbCtrlMas 2 Mscara de bits da tecla CTRL. VbAltMas 4 Mscara de bits da tecla ALT. As constantes funcionam como mscaras de bits que podem ser usadas para testar qualquer combinao de teclas. Testa-se uma condio designando primeiro cada resultado a uma varivel inteira temporria e, em seguida, comparando shift a uma mscara de bits. Usa-se o operador And com o argumento shift para testar se a condio maior que 0, indicando que o modificador foi pressionado, como no exemplo abaixo: Funes Internas

266

ShiftDown = (Shift And vbShiftMas) > 0 Em um procedimento, pode-se testar qualquer combinao de condies, como neste exemplo: If ShiftDown And CtrlDown Then Observao: Caso a propriedade eyPreview esteja configurada como True, um formulrio recebe estes eventos antes que controles no formulrio os recebam. Utilize a propriedade eyPreview para criar rotinas globais de manipulao de teclado.

Evento eyPress
Ocorre quando o usurio pressiona e solta uma tecla ANSI. Sintaxe Private Sub Form_eyPress(eyascii As Integer) Private Sub object_eyPress([index As Integer,]eyascii As Integer) A sintaxe do evento eyPress tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. eyascii Um inteiro que retorna um cdigo numrico de tecla ANSI padro. eyascii passado como referncia; sua alterao envia um caractere diferente ao objeto. Alterando-se eyascii para 0, cancela-se o pressionamento de tecla, de modo que o objeto no recebe caractere algum. Comentrios O objeto com o foco recebe o evento. Um formulrio somente pode receber o evento, se no tiver nenhum controle ativado e visvel, ou se a propriedade eyPreview estiver definida como True. Um evento eyPress envolve qualquer caractere de teclado imprimvel, a tecla CTRL combinada com um caractere do alfabeto padro ou um dos poucos caracteres especiais como, por exemplo, a tecla ENTER ou BACSPACE. Um evento eyPress til para interceptar pressionamentos de teclas em um controle TextBox ou ComboBox. Ele permite testar imediatamente pressionamentos de teclas para validade, ou para formatar caracteres medida que so digitados. A alterao do valor do argumento eyascii altera o caractere exibido. Pode-se converter o argumento eyascii em um caractere usando-se a expresso: Chr(eyAscii) Pode-se, em seguida, executar operaes com seqncias de caracteres e traduzir o caractere de volta para um nmero ANSI que o controle possa interpretar usando a expresso: eyAscii = Asc(char) Usa-se os procedimentos de evento eyDown e eyUp para tratar todo pressionamento de tecla no reconhecido por eyPress como, por exemplo, teclas de funo, teclas de edio, teclas de navegao e qualquer combinao destas com modificadores de teclado. Diferente dos eventos eyDown e eyUp, o eyPress no indica o estado fsico do teclado; ao invs ele passa um caractere. eyPress interpreta maiscula e minscula de cada caractere como cdigos de tecla separados e, portanto, como dois caracteres separados. eyDown e eyUp interpretam a maiscula e a minscula de cada caractere por meio de dois argumentos: eycode, que indica a tecla fsica (retornando, assim A e a como a mesma tecla), e shift, que indica o estado de shift+tecla e, portanto, retorna A ou a. Caso a propriedade eyPreview esteja definida como True, um formulrio recebe o evento antes que os controles do formulrio o receba. Utilize a propriedade eyPreview para criar rotinas globais de manipulao de teclado. Observao: O nmero ANSI para a combinao de teclas CTRL+@ 0. Uma vez que o Visual Basic reconhece um valor de eyascii de 0 como uma seqncia de caracteres de comprimento zero (""), evite usar CTRL+@ em seus aplicativos.

Evento LinClose
Ocorre quando termina uma conversao DDE. Qualquer um dos aplicativos em uma conversao DDE pode terminar a conversao a qualquer momento. Sintaxe Private Sub Form_LinClose( ) Private Sub MDIForm_LinClose( ) Private Sub object_LinClose([index As Integer]) A sintaxe do evento LinClose tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Tipicamente, usa-se um procedimento de evento LinClose para notificar o usurio de que a conversao DDE foi encerrada. Pode-se ainda incluir informaes para a soluo de problemas no restabelecimento de uma conexo, ou onde procurar ajuda. Para mensagens curtas utiliza-se a funo MsgBox.

Funes Internas

267

Evento LinError
Ocorre quando existe um erro durante uma conversao DDE. Este evento somente reconhecido como resultado de um erro relacionado com DDE que ocorra quando o cdigo do Visual Basic estiver sendo executado. O nmero do erro passado como um argumento. Sintaxe Private Sub Form_LinError(linerr As Integer) Private Sub MDIForm_LinError(linerr As Integer) Private Sub object_LinError([index As Integer,]linerr As Integer) A sintaxe do evento LinError tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. linerr Nmero de erro do erro relacionado com DDE, conforme descrito em valores de retorno. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Valores de retorno A tabela abaixo lista todos os nmeros de erro retornados para o argumento linerr e uma curta explicao de cada erro: Value Descrio 1 O outro aplicativo pediu dados no formato errado. Este erro pode ocorrer diversas vezes em seguida, enquanto o Visual Basic tenta achar um formato que o outro aplicativo reconhea. 6 O aplicativo de destino tentou continuar uma conversao DDE aps voc ter configurado a propriedade LinMode em seu formulrio de origem como 0 (Nenhum). 7 Todos os vnculos de origem esto sendo usados (existe um limite de 128 vnculos por origem). 8 Para controles de destino: um vnculo automtico ou mtodo LinRequest falhou ao atualizar os dados contidos no controle. Para formulrios de origem: o destino tentou enviar dados a um controle e a tentativa falhou. 11 Memria insuficiente para DDE. Comentrios Usa-se um procedimento de evento LinErros para notificar o usurio sobre um determinado erro que tenha ocorrido. Podese ainda incluir cdigo para corrigir o problema ou informaes para a soluo de problemas no restabelecimento de um conexo, ou sobre onde procurar ajuda. Para mensagens curtas, utiliza-se a funo MsgBox.

Evento LinExecute
Ocorre quando uma seqncia de caracteres de comando enviada por um aplicativo de destino em uma conversao DDE. O aplicativo de destino espera que o aplicativo de origem execute a operao descrita na seqncia de caracteres. Sintaxe Private Sub object_LinExecute(cmdstr As String, cancel As Integer) A sintaxe do evento LinExecute tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. cmdstr A expresso de seqncia de caracteres de comando enviada pelo aplicativo de destino. cancel Um inteiro que informa o destino se a seqncia de caracteres de comando foi aceita ou recusada. Definindo-se cancel como 0 informa-se ao destino que a seqncia de caracteres de comando foi aceita. Definindo-se cancel como qualquer valor diferente de zero informa-se ao destino que a seqncia de caracteres de comando foi rejeitada. (O padro configurado como -1, indicando cancel.) Comentrios No existe sintaxe obrigatria para cmdstr. A forma como o aplicativo responde a diferentes seqncias de caracteres um problema do programador. Caso no se tenha criado um procedimento de evento LinExecute, o Visual Basic rejeita seqncias de caracteres de comando de aplicativos de destino.

Evento LinNotify
Ocorre quando a origem alterou os dados definidos pelo vnculo DDE se a propriedade LinMode do controle de destino estiver configurada como 3 (Notificar). Sintaxe Private Sub object_LinNotify([index As Integer]) A sintaxe do evento LinNotify tem estas partes: Part Descrio Funes Internas

268

object index

Uma expresso de objeto que avalia para um objeto na lista Applies To. Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle.

Comentrios Tipicamente, no evento LinNotify o cdigo notifica o usurio, obtm imediatamente os novos dados ou adia a obteno de dados para mais tarde. Pode-se usar o mtodo LinRequest para obter os novos dados da origem.

Evento LinOpen
Ocorre quando uma conversao DDE est sendo iniciada. Sintaxe Private Sub Form_LinOpen(cancel As Integer) Private Sub MDIForm_LinOpen(cancel As Integer) Private Sub object_LinOpen([index As Integer,]cancel As Integer) A sintaxe do evento LinOpen tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. cancel Um inteiro que determina se a conversao DDE foi ou no estabelecida. Deixando-se cancel configurado como 0 (o padro) estabelece-se a conversao. Configurando-se cancel como qualquer valor diferente de zero, recusa-se a conversao. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Este evento ocorre para formulrios quando um aplicativo de destino est iniciando uma conversao DDE com o formulrio. Ela ocorre em controles, quando um controle est iniciando uma conversao DDE com um aplicativo de origem.

Evento Load
Ocorre quando um formulrio carregado. Para um formulrio de inicializao, ocorre quando um aplicativo inicia como resultado de uma instruo Load, ou como resultado de uma referncia a propriedades ou controle de um formulrio nocarregado. Sintaxe Private Sub Form_Load( ) Private Sub MDIForm_Load( ) Comentrios Tipicamente, usa-se um procedimento de evento Load para incluir cdigo de inicializao em um formulrio por exemplo, cdigo que especifique as configuraes padro para controles, indica-se o contedo a ser carregado em controles ComboBox ou ListBox, e inicializam-se variveis a nvel de formulrio. O evento Load ocorre aps o evento Initialize. Ao ser feita uma referncia no cdigo a uma propriedade de um formulrio no carregado, este automaticamente carregado, mas no tornado automaticamente visvel, a menos que a propriedade MDIChild seja configurada como True. Caso um objeto MDIForm no esteja carregado e um formulrio MDI filho esteja carregado, tanto o MDIForm quanto o formulrio filho so automaticamente carregados, e ambos tornam-se visveis. Outros formulrios no so exibidos at que se utilize o mtodo Show, ou se configure a propriedade Visible como True. O cdigo abaixo em um evento MDIForm Load carrega automaticamente um formulrio MDI filho (pressupondo-se que Form1 tenha sua propriedade MDIChild configurada como True): Dim NewForm As New Form1 NewForm.Caption = "New Form" ' Carrega o formulrio por referncia. Uma vez que todos os formulrios filhos tornam-se visveis ao serem carregados, a referncia propriedade Caption carrega o formulrio e o torna visvel. Observao: Quando so criados procedimentos para eventos relacionados como, por exemplo Activate, GotFocus, Paint e Resize, certifique-se de que suas aes no entrem em conflito e que eles no provoquem eventos recursivos.

Evento LostFocus
Ocorre quando um objeto perde o foco, por ao do usurio, por exemplo, usando a tecla de tabulao ou clicando em outro objeto, ou alterando o foco no cdigo usando o mtodo SetFocus. Sintaxe Private Sub Form_LostFocus( ) Private Sub object_LostFocus([index As Integer]) A sintaxe do evento LostFocus tem estas partes: Parte Descrio object index Uma expresso de objeto que avalia para um objeto na lista Applies To. Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle.

Funes Internas

269

Comentrios Um procedimento de evento LostFocus til principalmente para a verificao e atualizaes de validao. Usando-se LostFocus, pode-se fazer com que a validao ocorra medida que o usurio move o foco para fora do controle. Outro uso para este tipo de procedimento de evento permitir, ocultar e exibir outros objeto como em um procedimento de evento GotFocus. Pode-se inverter ou alterar condies que so configuradas no procedimento de evento GotFocus do objeto. Caso um arquivo .exe criado pelo Visual Basic exiba uma caixa de dilogo criada por um arquivo .dll tambm criado em Visual Basic, o formulrio do arquivo .exe obter eventos Deactivate e LostFocus. Isto pode ser inesperado, porque no se deve obter o evento Deactivate: Se o objeto for um componente fora de processo. Se o objeto no tiver sido escrito em Visual Basic. No ambiente de desenvolvimento ao se chamar uma DLL criada em Visual Basic.

Eventos MouseDown, MouseUp


Ocorre quando o usurio pressiona (MouseDown) ou libera (MouseUp) um boto de mouse. Sintaxe Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object_MouseDown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single) Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single) As sintaxes de evento MouseDown e MouseUp tm estas partes: Part Descrio object Retorna uma expresso de objeto que avalia para um objeto na lista Applies To. Index Retorna um inteiro que identifica com exclusividade um controle que esteja em um matriz de controle. button Retorna um inteiro que identifica o boto que foi pressionado (MouseDown) ou liberado (MouseUp) para causar o evento. O argumento button um campo de bit com bits correspondendo ao boto esquerdo (bit 0), boto direito (bit 1) e boto central (bit 2). Estes bits correspondem respectivamente aos valores 1, 2 e 4. Somente um dos bits configurado, indicando o boto que causou o evento. shift Retorna um inteiro que corresponde ao estado das teclas SHIFT, CTRL e ALT quando o boto especificado no argumento button est pressionado ou solto. Um bit configurado se a tecla estiver pressionada. O argumento shift um campo de bit, com os bits menos importantes correspondendo tecla SHIFT (bit 0), tecla CTRL (bit 1) e tecla ALT (bit 2 ). Estes bits correspondem, respectivamente, aos valores 1, 2 e 4. O argumento shift indica o estado destas teclas. Algum, todos ou nenhum dos bits pode ser definido, indicando que alguma, todas ou nenhuma das teclas est pressionada. Por exemplo, se tanto CTRL quando ALT estiverem pressionadas, o valor de shift ser 6. x, y Retorna um nmero que especifica a localizao atual do ponteiro do mouse. Os valores x e y so sempre expressos em termos do sistema de coordenadas definido pelas propriedades ScaleHeight, ScaleWidth, ScaleLeft e ScaleTop do objeto. Comentrios Usa-se um procedimento de evento MouseDown ou MouseUp para especificar aes que ocorrero quando um determinado boto do mouse pressionado ou solto. Diferente dos eventos Clic e DblClic, os eventos MouseDown e MouseUp permitem distinguir entre os botes direito, esquerdo e central do mouse. Pode-se ainda escrever cdigo para combinaes de mouse e teclado que utilizem os modificadores de teclado SHIFT, CTRL e ALT. Aplicam-se tanto aos eventos Clic quando DblClic: Se um boto de mouse est pressionado enquanto o ponteiro est sobre um formulrio ou controle, este objeto "captura" o mouse e recebe todos os eventos de mouse at, e incluindo, o ltimo evento MouseUp. Isto implica em que as coordenadas de ponteiro de mouse x, y retornadas por um evento de mouse podem no estar sempre na rea interna do objeto que os recebe. Se os botes do mouse forem pressionados em seguida, o objeto que captura o mouse aps o primeiro pressionamento recebe todos os eventos de mouse, at que todos os botes sejam liberados. Caso seja necessrio testar os argumentos button ou shift, pode-se usar as constantes listadas na biblioteca de objetos (VB) do Visual Basic no Object Browser para definir os bits dentro do argumento: Constante (Boto) Valor Descrio vbLeftButton 1 O boto esquerdo est pressionado vbRightButton 2 O boto direito est pressionado vbMiddleButton 4 O boto central est pressionado Constante (Shift) vbShiftMas Valor 1 Descrio A tecla SHIFT est pressionada.

Funes Internas

270

VbCtrlMas VbAltMas

2 4

A tecla CTRL est pressionada. A tecla ALT est pressionada.

As constantes funcionam ento como mscaras de bits que podem ser usadas para se testar qualquer combinao de botes sem ter que calcular o valor exclusivo do campo de bit para cada combinao. Observao: Pode-se usar um procedimento de evento MouseMove para responder a um evento causado pela movimentao do mouse. O argumento button para MouseDown e MouseUp diferem do argumento button usado para MouseMove. Para MouseDown e MouseUp, o argumento button indica exatamente um boto por evento, ao passo que para MouseMove, ele indica o estado atual de todos os botes.

Evento MouseMove
Ocorre quando o usurio move o mouse. Sintaxe Private Sub Form_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) Private Sub MDIForm_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) Private Sub object_MouseMove([index As Integer,] button As Integer, shift As Integer, x As Single, y As Single) A sintaxe do evento MouseMove tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. button Um inteiro que corresponde ao estado dos botes do mouse onde um bit configurado se o boto estiver pressionado. O argumento button um campo de bit com bits correspondendo ao boto esquerdo (bit 0), boto direito (bit 1) e boto central (bit 2). Estes bits correspondem, respectivamente, aos valores 1, 2 e 4. Ele indica o estado completo dos botes do mouse; algum, todos ou nenhum destes trs bits pode ser definido, indicando que algum, todos ou nenhum dos botes do mouse est pressionado. shift Um inteiro que corresponde ao estado das teclas SHIFT, CTRL e ALT. Um bit configurado se a tecla estiver pressionada. O argumento shift um campo de bit com os bits menos importantes correspondendo tecla SHIFT (bit 0), tecla CTRL (bit 1) e tecla ALT (bit 2 ). Estes bits correspondem, respectivamente, aos valores 1, 2 e 4. O argumento shift indica o estado destas teclas. Algum, todos ou nenhum dos bits pode ser definido, indicando que alguma, todas ou nenhuma das teclas est pressionada. Por exemplo, se tanto CTRL quando ALT estiverem pressionadas, o valor de shift ser 6. x, y Um nmero que especifica a localizao atual do ponteiro do mouse. Os valores x e y so sempre expressos em termos do sistema de coordenadas configurado pelas propriedades ScaleHeight, ScaleWidth, ScaleLeft e ScaleTop do objeto. Comentrios O evento MouseMove gerado continuamente, medida que o ponteiro do mouse se move pelos objetos. A menos que outro objeto tenha capturado o mouse, um objeto reconhece um evento MouseMove sempre que a posio do mouse est dentro de suas bordas. Caso seja necessrio testar os argumentos button ou shift, pode-se usar constantes listadas na biblioteca de objetos (VB) do Visual Basic no Object Browser para definir os bits dentro do argumento: Constante (Boto) Valor Descrio vbLeftButton 1 O boto esquerdo est pressionado. vbRightButton 2 O boto direito est pressionado. vbMiddleButton 4 O boto central est pressionado. Constante (Shift) vbShiftMas vbCtrlMas vbAltMas Valor 1 2 4 Descrio A tecla SHIFT est pressionada. A tecla CTRL est pressionado. A tecla ALT est pressionada.

As constantes, portanto, funcionam como mscaras de bits que podem ser usadas para se testar qualquer combinao de botes sem ter que calcular o valor exclusivo dos bits do campo para cada combinao. Testa-se uma condio designando-se primeiro cada resultado a uma varivel inteira temporria e, em seguida, comparando-se os argumentos button ou shift a uma mscara de bits. Usa-se o operador And com cada um dos argumentos para testar se a condio maior que zero, indicando que a tecla ou boto est pressionado, como neste exemplo: LeftDown = (Button And vbLeftButton) > 0 CtrlDown = (Shift And vbCtrlMas) > 0 A seguir, em um procedimento, pode-se testar qualquer combinao de condies, como neste exemplo: If LeftDown And CtrlDown Then Observao: Pode-se usar procedimentos de evento MouseDown e MouseUp para responder a eventos causados pelo pressionamento e liberao de botes de mouse. Funes Internas

271

O argumento button para MouseMove diferente do argumento button para MouseDown e MouseUp. Para MouseMove, o argumento button indica o estado atual de todos os botes; um nico evento MouseMove pode indicar que algum, todos ou nenhum boto est pressionado. Para MouseDown e MouseUp, o argumento button indica exatamente um boto por evento. A qualquer momento em que se mova uma janela dentro de um evento MouseMove, pode-se provocar um evento em cascata. Eventos MouseMove so gerados quando a janela se move sob o ponteiro. Um evento MouseMove pode ser gerado, mesmo que o mouse esteja perfeitamente estacionrio.

Evento Paint
Ocorre quando parte ou todo um objeto exibido aps ter sido movido ou ampliado, ou aps uma janela que o estava cobrindo ter sido movida. Sintaxe Private Sub Form_Paint( ) Private Sub object_Paint([index As Integer]) A sintaxe do evento Paint tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios O procedimento de evento Paint til quando se tem resultados de mtodos grficos no cdigo. Com o procedimento Paint, pode-se assegurar que tal resultado seja regenerado quando necessrio. O evento Paint chamado quando o mtodo Refresh utilizado. Caso a propriedade AutoRedraw esteja configurada como True, a regenerao ou redesenho automtico, assim nenhum evento Paint necessrio. Caso a propriedade ClipControls esteja configurada como False, os mtodos grficos no evento Paint afetam somente reas recm-expostas do formulrio; caso contrrio, os mtodos grficos regeneram todas as reas do formulrio no cobertas por controles (exceto controles Image, Label, Line e Shape). Usar um mtodo Refresh em um procedimento de evento Resize regenera o objeto inteiro, toda vez que o usurio redimensiona o formulrio. Observao: Usar o procedimento de evento Paint para determinadas tarefas pode provocar um evento em cascata. Em geral, evita-se usar um procedimento de evento Paint para fazer o que se segue: Mover ou dimensionar um formulrio ou controle. Alterar qualquer varivel que afete o tamanho ou aparncia como, por exemplo, configurar a propriedade BacColor de um objeto. Chamar um mtodo Refresh. Um procedimento de evento Resize pode ser mais adequado para algumas destas tarefas.

Evento PathChange
Ocorre quando o caminho alterado configurando-se a propriedade FileName ou Path no cdigo. Sintaxe Private Sub object_PathChange([index As Integer]) A sintaxe do evento PathChange tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Pode-se usar um procedimento de evento PathChange para responder a alteraes de caminho em um controle FileListBox. Ao designar-se uma seqncia de caracteres contendo um novo caminho propriedade FileName, o controle FileListBox chama o evento PathChange.

Evento PatternChange
Ocorre quando o padro de listagem de arquivos como, por exemplo, "*.*", alterado pela configurao da propriedade FileName ou Pattern no cdigo. Sintaxe Private Sub object_PatternChange([index As Integer]) A sintaxe do evento PatternChange tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Pode-se usar um procedimento de evento para responder a alteraes de padro em um controle FileListBox. Ao se atribuir uma seqncia de caracteres contendo um novo padro propriedade FileName, FileListBox aciona o evento PathChange.

Funes Internas

272

Evento QueryUnload
Ocorre antes que um formulrio ou aplicativo seja fechado. Quando um objeto MDIForm fechado, o evento QueryUnload ocorre primeiro para o formulrio MDI e, em seguida, para todos os formulriosl MDI filhos. Se nenhum formulrio cancelar o evento QueryUnload, o evento Unload ocorrer primeiro para todos os outros formulrios e, em seguida, em um formulrio MDI. Quando um formulrio filho ou objeto Form fechado, o evento QueryUnload naquele formulrio ocorre antes do evento Unload do formulrio. Sintaxe Private Sub Form_QueryUnload(cancel As Integer, unloadmode As Integer) Private Sub MDIForm_QueryUnload(cancel As Integer, unloadmode As Integer) A sintaxe do evento QueryUnload tem estas partes: Parte Descrio cancel Um inteiro. A configurao deste argumento como qualquer valor diferente de 0, interrompe o evento QueryUnload em todos os formulrios carregados e impede o fechamento do formulrio e do aplicativo. Unloadmode Um valor ou constante indicando a causa do evento QueryUnload, conforme descrito em valores de retorno. Valores de retorno O argumento unloadmode retorna os valores abaixo: Constante Valor Descrio vbFormControlMenu 0 O usurio escolheu o comando Close no menu Control do formulrio. VbFormCode 1 A instruo Unload acionada a partir de cdigo. VbAppWindows 2 A sesso de ambiente operacional atual do Microsoft Windows est terminando. VbAppTasManager 3 O Gerenciador de Tarefas do Microsoft Windows est fechando o aplicativos. vbFormMDIForm 4 Um formulrio MDI filho est fechando porque o formulrio MDI est sendo fechado. Estas constantes esto includas na biblioteca de objetos (VB) do Visual Basic no Object Browser. Comentrios Este evento tipicamente usado para certificar-se de que no existam tarefas inacabadas nos formulrios includos em um aplicativo, antes que este seja fechado. Por exemplo, caso um usurio ainda no tenha salvo novos dados em qualquer formulrio, seu aplicativo poder pedir ao usurio que salve os dados. Quando um aplicativo fecha, pode-se utilizar o procedimento de evento QueryUnload ou Unload para configurar a propriedade Cancel como True, interrompendo o processo de fechamento. Entretanto, o evento QueryUnload ocorre em todos os formulrios antes que qualquer um seja descarregado, e o evento Unload ocorre medida que cada formulrio descarregado.

Evento Resize
Ocorre quando um objeto exibido pela primeira vez, ou quando o estado da janela de um objeto se altera. (Por exemplo, um formulrio maximizado, minimizado ou restaurado.) Sintaxe Private Sub Form_Resize( ) Private Sub object_Resize(height As Single, width As Single) A sintaxe do evento Resize tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. height Nmero especificando a nova altura do controle. Width Nmero especificando a nova largura do controle. Comentrios Usa-se o procedimento de evento Resize para mover ou redimensionar controles quando o formulrio pai redimensionado. Pode-se tambm usar este procedimento de evento para recalcular variveis e propriedades como, por exemplo, ScaleHeight e ScaleWidth, que podem depender do tamanho do formulrio. Caso se queira que os elementos grficos mantenham tamanhos proporcionais ao formulrio ao serem redimensionados, aciona-se o evento Paint utilizandose o mtodo Refresh em um procedimento de evento Resize. Sempre que a propriedade AutoRedraw configurada como False e o formulrio redimensionado, o Visual Basic tambm chama os eventos relacionados, Resize e Paint, nesta ordem. Ao se anexar procedimentos a estes eventos relacionados, certifique-se de que suas aes no entrem em conflito. Quando a propriedade SizeMode de um controle de recipiente OLE configurada como 2 (Autosize), o controle automaticamente dimensionado de acordo com o tamanho de exibio do objeto contido no controle. Caso o tamanho de exibio do objeto seja alterado, o controle automaticamente redimensionado para ajustar-se ao objeto. Quando isto ocorre, o evento Resize acionado para o objeto, antes que o controle do recipiente OLE seja redimensionado. As partes height e width indicam o tamanho ideal para se exibir o objeto (este tamanho determinado pelo aplicativo que o criou). Pode-se dimensionar o controle de maneira diferente alterando-se os valores das partes height e width no evento Resize.

Funes Internas

273

Evento RowColChange
Ocorre quanto a clula atual muda para uma clula diferente. Sintaxe Private Sub object_RowColChange ([index As Integer, lastrow As String, lastcol As Integer]) A sintaxe do evento RowColChange tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. lastrow (Para controle DBGrid) Uma expresso de seqncia de caracteres especificando a posio anterior da linha. lastcol (Para controle DBGrid) Um inteiro especificando a posio anterior da coluna. Comentrios Este evento ocorre toda vez que o usurio clica em uma clula diferente da clula atual, ou quando se altera por meio de programa a clula atual dentro de uma seleo usando as propriedades Col e Row. O evento SelChange tambm ocorre quando o usurio clica em uma nova clula, mas no ocorre quando se altera por meio do programa o intervalo selecionado, sem alterar a clula atual. Para o controle DBGrid, a posio da clula atual fornecida pelas propriedades Boomar e ColIndex. A posio anterior da clula especificada por lastrow e lastcol. Caso os dados sejam editados em seguida, movida a posio da clula atual para uma nova linha, os eventos de atualizao para a linha original so terminados antes que outra clula torne-se a clula atual.

Evento Scroll
Ocorre quando a caixa de rolagem em um controle ScrollBar, ou um objeto que contm uma barra de rolagem reposicionado ou rolado horizontal e verticalmente. Sintaxe Private Sub dbgrid_Scroll([cancel As Integer]) Private Sub object_Scroll( ) A sintaxe do evento Scroll tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. cancel Determina se a operao de rolagem bem sucedida, e se ScrollBar ou DBGrid so regeneradas, conforme descrito em Comentrios. Comentrios Para um controle DBGrid, este evento ocorre quando o usurio rola a grade horizontal ou verticalmente, mas antes que a grade seja regenerada para exibir os resultados da operao de rolagem. Para um controle ComboBox, este evento somente ocorre quando as barras de rolagem na parte drop-down do controle so manipuladas. Configurar cancel como True provoca falha na operao de rolagem de DBGrid e no ocorre a operao de regenerao. Caso o mtodo Refresh seja acionado dentro deste evento, a grade regenerada em sua nova disposio (rolada), mesmo que cancel esteja configurado como True. Entretanto, neste caso, a grade novamente regenerada porque a operao de rolagem falha, e ela volta sua posio anterior. Pode-se usar este evento para realizar clculos ou para manipular controles que devem ser coordenados com alteraes em curso nas barras de rolagem. Ao contrrio, utiliza-se o evento Change quando se deseja que ocorra uma atualizao apenas uma vez, aps a alterao do controle ScrollBar. Observao: Evite usar uma instruo ou funo MsgBox neste evento.

Evento SelChange
Ocorre quando o intervalo atual se altera para uma clula ou intervalo diferente de clulas. Sintaxe Private Sub DBGrid_SelChange ([cancel As Integer]) Private Sub object_SelChange( ) A sintaxe do evento SelChange tem estas partes: Part Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To.

cancel

Determina se a seleo volta posio anterior ocorrncia do evento.

Comentrios O evento SelChange ocorre sempre que o usurio clica em uma clula diferente da clula atual, e medida que um usurio arrasta para selecionar um novo intervalo de clulas. Um usurio tambm pode selecionar um intervalo de clulas pressionando a tecla SHIFT e usando as teclas de direo. Pode-se disparar este evento via cdigo para um controle DBGrid, alterando-se a rea selecionada usando as propriedades SelStartCol e SelEndCol.

Funes Internas

274

O evento RowColChange tambm ocorre quando um usurio clica em uma nova clula, mas no ocorre enquanto um usurio arrasta a seleo pelo controle DBGrid, ou quando se altera a seleo por meio do programa, sem mover a clula atual. A configurao de cancel como True no controle DBGrid faz com que a seleo retorne clula ou intervalo ativo antes da ocorrncia do evento.

Evento Timer
Ocorre quando um intervalo predefinido para um controle Timer tenha decorrido. A freqncia do intervalo armazenada na propriedade Interval do controle, que especifica a durao do tempo em milisegundos. Sintaxe Private Sub object_Timer([index As Integer]) A sintaxe do evento Timer tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade um controle, caso ele esteja em uma matriz de controle. Comentrios Usa-se este procedimento de evento para informar ao Visual Basic o que fazer aps cada intervalo do controle Timer ter decorrido. Quando se est trabalhando com o evento Timer: A propriedade Interval especifica o intervalo entre eventos Timer em milisegundos. Toda vez que a propriedade Enabled do controle Timer definida como True e a propriedade Interval maior que 0, o evento Timer aguarda pelo perodo especificado na propriedade Interval.

Evento Unload
Ocorre quando um formulrio est para ser removido da tela. Quando este formulrio recarregado, o contedo de todos os seus controles reinicializado. Este evento desencadeado por um usurio fechando o formulrio com o comando Close do menu Control, ou com uma instruo Unload. Sintaxe Private Sub object_Unload(cancel As Integer) A sintaxe do evento Unload tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. Cancel Inteiro que determina se o formulrio removido da tela. Se cancel for 0, o formulrio ser removido. A configurao de cancel como qualquer valor diferente de zero impede a remoo do formulrio.

Comentrios A configurao de cancel como qualquer valor diferente de zero impede que o formulrio seja removido, mas no interrompe outros eventos como, por exemplo, sair do ambiente operacional do Microsoft Windows. Usa-se o evento QueryUnload para impedir a sada do Windows. Usa-se um procedimento de evento Unload para verificar se o formulrio deve ser descarregado, ou para especificar aes que se queira que ocorram quando o formulrio for descarregado. Pode-se ainda incluir qualquer cdigo de validao a nvel de formulrio que seja necessrio para fechar o formulrio ou salvar os dados nele contidos para um arquivo. O evento QueryUnload ocorre antes do evento Unload. O evento Unload ocorre antes do evento Terminate. O evento Unload pode ser provocado pelo uso da instruo Unload ou pela escolha pelo usurio do comando Close em um menu Controle de formulrio, saindo do aplicativo com o boto Finalizar tarefa na Lista de tarefas do Windows, fechando o formulrio MDI do qual filho o formulrio atual, ou saindo do ambiente operacional do Microsoft Windows enquanto o aplicativo est sendo executado.

Funes Internas

275

Exemplo de eventos Activate, Deactivate


Este exemplo atualiza o texto na barra de status para exibir a legenda do formulrio ativo. Para testar este exemplo, crie um objeto Form (Form1) e um novo objeto MDIForm (MDIForm1). No MDIForm1, desenhe um controle PictureBox contendo um controle Label. Em Form1, configure a propriedade MDIChild como True. Cole o cdigo do procedimento de evento MDIForm_Load na seo Declarations do objeto MDIForm. Cole o cdigo do procedimento de evento Form_Activate na seo Declarations do formulrio filho MDI e, em seguida, pressione F5. Private Sub MDIForm_Load () Form1.Caption = "Form #1" ' Definir a legenda de Form1. Dim NewForm As New Form1 ' Criar um novo formulrio filho. Load NewForm NewForm.Caption = "Form #2" ' Definir a legenda do novo formulrio. NewForm.Show ' Exibir o novo formulrio. End Sub Private Sub Form_Activate () ' Definir o texto da barra de status. MDIForm1.Label1.Caption = "Current form: " & Me.Caption End Sub

Exemplo de evento Change


Este exemplo exibe a configurao numrica da propriedade Value de uma barra de rolagem horizontal em um controle TextBox. Para testar este exemplo, crie um formulrio com um controle TextBox e um controle HScrollBar e, em seguida, cole o cdigo na seo Declarations de um formulrio que contenha uma barra de rolagem horizontal (controle HScrollBar) e um controle TextBox. Pressione F5 e clique na barra de rolagem horizontal. Private Sub Form_Load () HScroll1.Min = 0 ' Definir Minimum. HScroll1.Max = 1000 ' Definir Maximum. HScroll1.LargeChange = 100 ' Definir LargeChange. HScroll1.SmallChange = 1 ' Definir SmallChange. End Sub Private Sub HScroll1_Change () Text1.Text = HScroll1.Value End Sub

Exemplo de evento Clic


Neste exemplo, cada vez que um controle PictureBox clicado ele se move diagonalmente pelo formulrio. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um controle PictureBox posicionado no canto inferior esquerdo do formulrio e, em seguida, pressione F5 e clique em PictureBox. Private Sub Picture1_Clic () Picture1.Move Picture1.Left + 750, Picture1.Top - 550 End Sub

Exemplo de evento DragDrop


Este exemplo demonstra o efeito visual de se soltar um controle PictureBox sobre outro controle PictureBox. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha trs controles PictureBox. Defina a propriedade DragMode de Picture1 e Picture2 como 1 (Automtico). Use a propriedade Picture para atribuir bitmaps a Picture1 e Picture2 e, em seguida, pressione F5 e arraste Picture1 ou Picture2 sobre Picture3. Private Sub Picture3_DragDrop (Source As Control, X as Single, Y As Single) If TypeOf Source Is PictureBox Then ' Definir o bitmap Picture3 ao mesmo controle de origem. Picture3.Picture = Source.Picture End If End Sub

Exemplo de evento DragOver


Este exemplo demonstra uma maneira de indicar um alvo vlido para soltar. O ponteiro transforma-se, da seta padro para um cone especial quando um controle TextBox arrastado sobre um controle PictureBox. O ponteiro retorna ao padro quando a origem arrastada para qualquer outro lugar. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um pequeno TextBox e um PictureBox. Defina a propriedade DragMode do controle TextBox como 1 e, em seguida, pressione F5 e arraste o TextBox sobre PictureBox. Private Sub Picture1_DragOver (Source As Control, X As Single, Y As Single, State As Integer) Select Case State Case vbEnter ' Carregar o cone. Source.DragIcon = LoadPicture("ICONS\ARROWS\POINT03.ICO") Case vbLeave Source.DragIcon = LoadPicture() ' Descarregar o cone. End Select End Sub

Funes Internas

276

Private Sub Picture1_DragDrop (Source As Control, X As Single, Y As Single) Source.DragIcon = LoadPicture() ' Descarregar o cone. End Sub

Exemplo de evento DropDown


Este exemplo atualiza um controle ComboBox com base na seleo do usurio em um grupo de botes de opo. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um controle ComboBox e dois controles OptionButton. Defina a propriedade Name de ambos os controles OptionButton como OptionGroup e, em seguida, pressione F5 e clique nos controles OptionButton. O controle ComboBox reflete diferentes couriers, dependendo do OptionButton selecionado. Private Sub Form_Load () Combo1.Text = "" ' Limpar caixa de combinao. End Sub Private Sub Combo1_DropDown () Combo1.Clear ' Excluir itens existentes. If OptionGroup(0).Value = True Then Combo1.AddItem "Gray Goose Express", 0 Combo1.AddItem "Wild Fargo Carriers", 1 Else Combo1.AddItem "Summit Technologies Overnight" End If End Sub

Exemplo de evento GotFocus


Este exemplo exibe uma mensagem de barra de status quando um boto em um grupo OptionButton recebe o foco. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha dois controles OptionButton e um controle Label. Defina a propriedade Name para ambos os controles OptionButton como OptionGroup e, em seguida, pressione F5 e clique nos controles OptionButton. Private Sub Form_Load () Label1.AutoSize = True End Sub Private Sub OptionGroup_GotFocus (Index As Integer) Select Case Index Case 0 Label1.Caption = "Option 1 has the focus." Case 1 Label1.Caption = "Option 2 has the focus." End Select End Sub Private Sub OptionGroup_LostFocus (Index As Integer) Label1.Caption = "" End Sub

Exemplo de eventos eyDown, eyUp


Este exemplo demonstra um identificador genrico de teclado que responde tecla F2 e a todas as combinaes de tecla ALT, SHIFT e CTRL associadas. As constantes de tecla esto listadas na biblioteca de objetos (VB) do Visual Basic no Object Browser. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um controle TextBox e, em seguida, pressione F5 e pressione F2 com diversas combinaes das teclas ALT, SHIFT e CTRL. Private Sub Text1_eyDown (eyCode As Integer, Shift As Integer) Dim ShiftDown, AltDown, CtrlDown, Txt ShiftDown = (Shift And vbShiftMas) > 0 AltDown = (Shift And vbAltMas) > 0 CtrlDown = (Shift And vbCtrlMas) > 0 If eyCode = vbeyF2 Then ' Exibe as combinaes de teclas. If ShiftDown And CtrlDown And AltDown Then Txt = "SHIFT+CTRL+ALT+F2." ElseIf ShiftDown And AltDown Then Txt = "SHIFT+ALT+F2." ElseIf ShiftDown And CtrlDown Then Txt = "SHIFT+CTRL+F2." ElseIf CtrlDown And AltDown Then Txt = "CTRL+ALT+F2." ElseIf ShiftDown Then Txt = "SHIFT+F2." ElseIf CtrlDown Then Txt = "CTRL+F2." ElseIf AltDown Then Txt = "ALT+F2." ElseIf SHIFT = 0 Then Funes Internas

277

Txt = "F2." End If Text1.Text = "You pressed. " & Txt End If End Sub

Exemplo de evento eyPress


Este exemplo converte o texto inserido em um controle TextBox em maisculas. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um TextBox e, em seguida, pressione F5 e digite alguma coisa no TextBox. Private Sub Text1_eyPress (eyAscii As Integer) Char = Chr(eyAscii) eyAscii = Asc(UCase(Char)) End Sub

Exemplo de evento LinError


Este exemplo anexado a um controle TextBox, MyTextBox, que trata erros selecionados. O procedimento exibe uma mensagem (adaptada da lista de erros no tpico de evento LinErros) com base no nmero de erro passado como argumento LinErr. Pode-se adaptar este cdigo para um formulrio de origem substituindo Form_LinError por MyTextBox_LinError. Este exemplo apenas para ilustrao. Private Sub MyTextBox_LinError (LinErr As Integer) Dim Msg Select Case LinErr Case 1 Msg = "Data in wrong format." Case 11 Msg = "Out of memory for DDE." End Select MsgBox Msg, vbExclamation, "MyTextBox" End Sub

Exemplo de evento LinExecute


Este exemplo define um conjunto de comandos para destinos usarem em conversao DDE que ser respondida por seu aplicativo. Este exemplo somente para ilustrao. Private Sub Form_LinExecute (CmdStr As String, Cancel As Integer) Cancel = False Select Case LCase(CmdStr) Case "{big}" WindowState = 2 ' Maximizar window. Case "{little}" WindowState = 1 ' Minimizar window. Case "{hide}" Visible = False ' Ocultar formulrio. Case "{view}" Visible = True ' Exibir formulrio. Case Else Cancel = True ' A execuo no permitida. End Select End Sub

Exemplo de evento LinNotify


Este exemplo est anexado a um controle PictureBox, Picture1, que tem suas propriedades LinTopic e LinItem definidos para especificar um elemento grfico na origem, e sua propriedade LinMode definida como 3 (Notificar). Quando a origem altera estes dados, o procedimento atualiza imediatamente o controle PictureBox somente se PictureBox est no formulrio ativo; caso contrrio ele define um sinalizador de varivel. Este exemplo somente para ilustrao. Private Sub Picture1_LinNotify () If Screen.ActiveForm Is Me Then Picture1.LinRequest ' A figura est no formulrio ativo, portanto atualize. Else NewDataFlag = True ' Pressupe-se que seja uma varivel em nvel de mdulo. End If End Sub

Exemplo de evento Load


Este exemplo carrega itens em um controle ComboBox quando um formulrio carregado. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha uma ComboBox e, em seguida, pressione F5. Private Sub Form_Load () Combo1.AddItem "Mozart" ' Adicionar itens lista. Combo1.AddItem "Beethoven" Combo1.AddItem "Roc 'n Roll" Combo1.AddItem "Reggae" Funes Internas

278

Combo1.ListIndex = 2 End Sub

' Definir a seleo padro.

Funes Internas

279

Exemplo de evento LostFocus


Este exemplo altera a cor de um controle TextBox quando ele recebe ou perde o foco (selecionado com o mouse ou com a tecla TAB) e exibe o texto adequado. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha dois controles TextBox e um controle Label e, em seguida, pressione F5 e mova o foco entre Text1 e Text2. Private Sub Text1_GotFocus () ' Mostrar o foco com vermelho. Text1.BacColor = RGB(255, 0, 0) Label1.Caption = "Text1 has the focus." End Sub Private Sub Text1_LostFocus () ' Mostre a perda do foco com azul. Text1.BacColor = RGB(0, 0, 255) Label1.Caption = "Text1 doesnt have the focus." End Sub

Exemplo de eventos MouseDown, MouseUp


Este exemplo demonstra um aplicativo de pintura simples. O procedimento de evento MouseDown funciona com um procedimento de evento MouseMove relacionado, para permitir a pintura quando qualquer boto do mouse pressionado e arrastado. O procedimento de evento MouseUp desativa a pintura. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5, clique no formulrio e mova o mouse enquanto o boto do mouse est pressionado. Dim PaintNow As Boolean Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = True ' Ativar a pintura. End Sub Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = False ' Desativar a pintura. End Sub Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If PaintNow Then PSet (X, Y) ' Desenhar um ponto. End If End Sub Private Sub Form_Load () DrawWidth = 10 ' Usar um pincel mais largo. ForeColor = RGB(0, 0, 255) ' Definir a cor da pintura. End Sub

Exemplo de evento MouseMove


Este exemplo demonstra um aplicativo simples de pintura. O procedimento de evento MouseDown funciona com um procedimento de evento MouseMove para permitir a pintura quando qualquer boto do mouse estiver pressionado. O procedimento de evento MouseUp desativa a pintura. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5, clique no formulrio e mova o mouse enquanto o boto do mouse est pressionado. Dim PaintNow As Boolean ' Declara varivel. Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = True ' Pincel ativado. End Sub Private Sub Form_MouseUp (Button As Integer, X As Single, Y As Single) PaintNow = False ' Desativar pintura. End Sub Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If PaintNow Then PSet (X, Y) ' Desenhar um ponto. End If End Sub Private Sub Form_Load () DrawWidth = 10 ' Usar pincel mais largo. ForeColor = RGB(0, 0, 255) ' Definir a cor de desenho. End Sub

Funes Internas

280

Exemplo de evento Paint


Este exemplo desenha um diamante que intercepta o ponto mdio de cada lado de um formulrio e se ajusta automaticamente, medida que o formulrio redimensionado. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5 e redimensione o formulrio. Private Sub Form_Paint () Dim HalfX, HalfY ' Declarar variveis. HalfX = ScaleLeft + ScaleWidth / 2 ' Definir com metade da largura. HalfY = ScaleTop + ScaleHeight / 2 ' Definir como metade da altura. ' Desenhar um diamante. Line (ScaleLeft, HalfY) - (HalfX, ScaleTop) Line -(ScaleWidth + ScaleLeft, HalfY) Line -(HalfX, ScaleHeight + ScaleTop) Line -(ScaleLeft, HalfY) End Sub Private Sub Form_Resize Refresh End Sub

Exemplo de evento PathChange


Este exemplo demonstra como atualizar um controle Label para refletir o caminho atual at um controle FileListBox. Clicando-se duas vezes em um nome de diretrio, exibida uma lista dos arquivos do diretrio na FileListBox; ela tambm exibe o caminho completo do diretrio no controle Label. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha o controle Label, um controle DirListBox e um controle FileListBox, e, em seguida, pressione F5. Clique duas vezes em um diretrio para alterar o caminho. Private Sub File1_PathChange () Label1.Caption = "Path: " & Dir1.Path ' Mostrar o caminho em Label. End Sub Private Sub Dir1_Change () File1.Path = Dir1.Path End Sub ' Definir o caminho do arquivo.

Private Sub Form_Load () Label1.Caption = "Path: " & Dir1.Path ' Mostrar o caminho em Label. End Sub

Funes Internas

281

Exemplo de evento PatternChange


Este exemplo atualiza um controle FileListBox contendo arquivos que correspondem ao padro inserido em um controle TextBox. Caso um caminho completo seja inserido na TextBox, por exemplo, C:\BIN\*.EXE, o texto automaticamente dividido nos componentes padro e caminho. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um controle TextBox, um controle Label, um controle FileListBox e um controle CommandButton e, em seguida, pressione F5 e digite um padro vlido de arquivo em TextBox. Private Sub Form_Load () Command1.Default = True ' Definir a propriedade Default. Command1.Caption = "O" ' Definir Caption. End Sub Private Sub Command1_Clic () ' Boto O clicado. ' O texto dividido nos componentes caminho e padro. File1.FileName = Text1.Text Label1.Caption = "Path: " & File1.Path End Sub Private Sub File1_PatternChange () Text1.Text = File1.Pattern ' Definir o Text como o novo padro. End Sub

Exemplo de evento QueryUnload


Este exemplo utiliza um objeto MDIForm contendo dois formulrios filhos MDI. Ao se escolher o comando Close no menu Control para fechar o formulrio, uma mensagem exibida diferente da que seria exibida se fosse escolhido o comando Exit do menu File. Para testar este exemplo, crie um MDIForm e, em seguida, utilize o Menu Editor para criar um menu File contendo um comando Exit chamado FileExit. Certifique-se de que este item de menu esteja ativo. No Form1, defina a propriedade MDIChild como True. Cole o cdigo nas sees Declarations dos respectivos formulrios e, em seguida, pressione F5 para executar o programa. ' Colar na seo Declarations de MDIForm1. Private Sub MDIForm_Load () Dim NewForm As New Form1 ' Nova ocorrncia de Form1. NewForm.Caption = "Form2" ' Definir a legenda e exibir. End Sub Private Sub FileExit_Clic () Unload MDIForm1 ' Sair do aplicativo. End Sub Private Sub MDIForm_QueryUnload (Cancel As Integer, UnloadMode As Integer) Dim Msg' Declarar a varivel. ' Definir o texto da mensagem. Msg = "Do you really want to exit the application?" ' Se o usurio clica no boto No, encerre QueryUnload. If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then Cancel = True End Sub ' Colar na seo Declarations de Form1. Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer) Dim Msg' Declarar a varivel. If UnloadMode > 0 Then ' Se estiver saindo do aplicativo. Msg = "Do you really want to exit the application?" Else ' Se estiver fechando o formulrio. Msg = "Do you really want to close the application?" End If ' Se o usurio clicar no boto No, interrompa QueryUnload. If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then Cancel = True End Sub

Exemplo de evento Resize


Este exemplo redimensiona automaticamente um controle TextBox para preencher o formulrio sempre que o formulrio for redimensionado. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio de propriedade MultiLine que contenha uma TextBox. Defina a propriedade MultiLine do controle TextBox como True, sua propriedade ScrollBars como 3 e sua propriedade BorderStyle como 0; em seguida, pressione F5 e redimensione o formulrio. Private Sub Form_Load () Text1.Text = "" ' Limpar o texto. End Sub Private Sub Form_Resize () Text1.Move 0,0, ScaleWidth, ScaleHeight End Sub

Funes Internas

282

Exemplo de evento Scroll


Este exemplo altera o tamanho de um controle Shape para corresponder ao valor de uma barra de rolagem horizontal (HScrollBar) medida que voc arrasta a caixa de rolagem pela barra de rolagem. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio contendo um controle Shape, um controle Label e um controle HScrollBar. Defina a propriedade Index do controle Shape como 0 para criar uma matriz de controle. A seguir, pressione F5 e mova a barra de rolagem. Private Sub Form_Load () ' Mover e dimensionar o primeiro controle Shape. Shape1(0).Move HScroll1.Left, HScroll1.Top * 1.5, HScroll1.Width, HScroll1.Height Label1.Caption = "" ' Definir a legenda de Label. Load Shape1(1) ' Criar um segundo Shape. ' Mover e dimensionar o segundo controle Shape. Shape1(1).Move Shape1(0).Left, Shape1(0).Top, 1, Shape1(0).Height Shape1(1).BacStyle = 1 ' Definir BacStyle como Opaco. Shape1(1).Visible = True ' Exibir a segunda Shape. HScroll1.Min = 1 ' Definir os valores da barra de rolagem. HScroll1.Max = HScroll1.Width End Sub Private Sub HScroll1_Change () Label1.Caption = "Changed" End Sub ' Exibir mensagem aps a alterao.

Private Sub HScroll1_Scroll () Shape1(1).BacColor = &HFF0000 ' Definir a cor de Shape como Azul. Label1.Caption = "Changing" ' Exibir mensagem durante a rolagem. Shape1(1).Width = HScroll1.Value ' Dimensionar Shape como Scroll Value. End Sub

Exemplo de evento Timer


Este exemplo demonstra um relgio digital. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um controle Label e um controle Timer e, em seguida, pressione F5. Private Sub Form_Load () Timer1.Interval = 1000 ' Definir o intervalo de Timer. End Sub Private Sub Timer1_Timer () Label1.Caption = Time End Sub ' Atualizar a exibio da hora.

Este exemplo move um controle PictureBox por um formulrio. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio que contenha um controle Timer e um controle PictureBox e, em seguida, pressione F5. Para um efeito visual melhor, pode-se atribuir um bitmap PictureBox usando a propriedade Picture. Dim DeltaX, DeltaY As Integer ' Declarar variveis. Private Sub Timer1_Timer () Picture1.Move Picture1.Left + DeltaX, Picture1.Top + DeltaY If Picture1.Left < ScaleLeft Then DeltaX = 100 If Picture1.Left + Picture1.Width > ScaleWidth + ScaleLeft Then DeltaX = -100 End If If Picture1.Top < ScaleTop Then DeltaY = 100 If Picture1.Top + Picture1.Height > ScaleHeight + ScaleTop Then DeltaY = -100 End If End Sub Private Sub Form_Load () Timer1.Interval = 1000 ' Definir Interval. DeltaX = 100 ' Inicializar variveis. DeltaY = 100 End Sub

Exemplo de evento Unload


Este exemplo demonstra um procedimento simples para fechar um formulrio ,enquanto so apresentadas ao usurio diversas caixas de mensagem. Em um aplicativo real, pode-se adicionar chamadas a procedimentos Sub de uso geral que emulem o processamento dos comandos Exit, Save e Save As do menu File do Visual Basic. Para testar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5. Uma vez que o formulrio tenha sido exibido, pressione ALT+F4 para fech-lo. Private Sub Form_Unload (Cancel As Integer) Dim Msg, Response ' Declarar variveis. Msg = "Save Data before closing?"

Funes Internas

283

Response = MsgBox(Msg, vbQuestion + vbYesNoCancel, "Save Dialog") Select Case Response Case vbCancel ' No permitir o fechamento. Cancel = -1 Msg = "Command has been closed." Case vbYes ' Digite o cdigo para salvar dados aqui. Msg = "Data saved."' Case vbNo Msg = "Data not saved." End Select MsgBox Msg, vbOOnly, "Confirm" ' Exibir mensagem. End Sub

Evento ItemChec
Ocorre quando a propriedade Style de um controle ListBox configurada como 1 (caixas de seleo) e a caixa de seleo de um item no controle ListBox est selecionada ou limpa. Sintaxe Private Sub object_ItemChec([index As Integer]) A sintaxe do evento ItemChec tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. index Um inteiro que identifica com exclusividade o item na caixa de listagem que foi clicado. Comentrios Observao: O evento ItemChec no ocorre quando um item de lista est apenas selecionado; ao invs, ele ocorre quando a caixa de seleo do item da lista est selecionada ou em branco. O evento ItemChec tambm pode ocorrer por meio de programa sempre que um elemento em uma matriz Selected da ListBox alterado (e sua propriedade Style configurada como 1.) O evento ItemChec ocorre antes do evento Clic.

Objeto Screen
Manipula formulrios de acordo com sua posio na tela e controla o ponteiro do mouse fora dos formulrios de seu aplicativo durante o tempo de execuo. O objeto Screen acessado com a palavra-chave Screen. Sintaxe Screen Comentrios O objeto Screen a rea de trabalho inteira do Windows. Usando o objeto Screen, voc pode configurar a propriedade MousePointer do objeto Screen como a ampulheta ponteiro enquanto um formulrio de janela estrita exibido.

Mtodo Refresh
Fora uma atualizao grfica completa de um formulrio ou controle. Sintaxe object.Refresh O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Use o mtodo Refresh quando quiser: Exibir completamente um formulrio enquanto outro formulrio est sendo carregado. Atualizar o contedo de uma caixa de listagem do sistema de arquivos como, por exemplo, o controle FileListBox. Atualizar as estruturas de dados de um controle Data. Refresh no pode ser usada em formulrios MDI, mas pode ser usado em formulrios MDI filho. Voc no pode usar Refresh em controles Menu ou Timer. Geralmente, a pintura de um formulrio ou controle tratada automaticamente enquanto nenhum evento est ocorrendo. Entretanto, podem ocorrer situaes onde voc deseje que o formulrio ou controle seja atualizado imediatamente. Por exemplo, se voc usar uma caixa de listagem de arquivo, uma caixa de listagem de diretrio ou uma caixa de listagem de drive para exibir o status atual da estrutura do diretrio, voc pode usar Refresh para atualizar a lista toda vez que ocorrer uma alterao na estrutura do diretrio. Voc pode usar o mtodo Refresh em um controle Data para abrir ou reabrir o banco de dados (se as configuraes da propriedade DatabaseName, ReadOnly, Exclusive ou Connect tiverem sofrido alterao) e recriar o dynaset na propriedade Recordset do controle.

Exemplo do mtodo Refresh


Este exemplo usa o mtodo Refresh para atualizar um controle FileListBox medida que arquivos de teste so criados. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio com um controle FileListBox chamado File1 e, em seguida, execute o exemplo e clique no formulrio. Private Sub Form_Clic () Funes Internas

284

' Declarar variveis. Dim FilName, Msg as String, I as Integer File1.Pattern = "TestFile.*" ' Definir o padro do arquivo. For I = 1 To 8 ' Executar oito vezes. FilName = "TESTFILE." & I ' Criar um arquivo vazio. Open FilName For Output As FreeFile File1.Refresh' Atualizar a caixa de listagem de arquivos. Close ' Fechar o arquivo. Next I Msg = "Escolher O para remover os arquivos de teste criados." MsgBox Msg ' Exibir a mensagem. ill "TESTFILE.*" ' Remover os arquivos de teste. File1.Refresh' Atualizar a caixa de listagem de arquivos. End Sub

Mtodo SetFocus
Move o foco para o controle ou formulrio especificado. Sintaxe object.SetFocus O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O objeto precisa ser um objeto Form, objeto MDIForm ou controle que possa receber o foco. Aps acionar o mtodo SetFocus, qualquer entrada do usurio direcionada ao formulrio ou controle especfico. Voc somente pode mover o foco para um formulrio ou controle visvel quando um formulrio e controles em um formulrio no esto visveis, at que o evento Load do formulrio tenha terminado, voc no pode usar o mtodo SetFocus para mover o foco para o formulrio que est sendo carregado em seu prprio evento Load, a menos que primeiro voc utilize o mtodo Show para exibir o formulrio, antes que o procedimento de evento Form_Load tenha terminado. Voc tambm no pode mover o foco para um formulrio ou controle se a propriedade Enabled estiver configurada como False. Se a propriedade Enabled estiver configurada como False durante o tempo de criao, voc deve primeiro configur-la como True antes que ela possa receber o foco, usando o mtodo SetFocus.

Evento DblClic
Ocorre quando o usurio pressiona e solta o boto do mouse e, em seguida, pressiona e solta novamente sobre um objeto. Para um formulrio, o evento DblClic ocorre quando o usurio clica duas vezes em um controle desativado ou rea vazia de um formulrio. Para um controle, ele ocorre quando o usurio: Clica duas vezes em um controle com o boto esquerdo do mouse. Clica duas vezes em um item em um controle ComboBox cuja propriedade Style esteja configurada como 1 (Simples) ou em um controle FileListBox, ListBox, DBCombo ou DBList. Sintaxe Private Sub Form_DblClic ( ) Private Sub object_DblClic (index As Integer) Parte object Descrio Uma expresso de objeto que avalia para um objeto na lista Applies To.

index

Identifica o controle se ele estiver em uma matriz de controle.

Comentrios O argumento Index identifica com exclusividade um controle se ele estiver em uma matriz de controle. Voc pode usar um procedimento de evento DblClic para uma ao implcita como, por exemplo, clicar duas vezes em um cone para abrir uma janela ou documento. Voc tambm pode usar este tipo de procedimento para executar mltiplas etapas com uma nica ao, como clicar duas vezes para selecionar um item em uma caixa de listagem e para fechar a caixa de dilogo. Para produzir estes efeitos de atalho em Visual Basic, voc pode usar um procedimento de evento DblClic para uma caixa de listagem ou arquivo de caixa de listagem em conjunto com um boto padro um controle CommandButton com sua propriedade Default configurada como True. Como parte do procedimento de evento DblClic para a caixa de listagem, voc simplesmente chama o evento Clic do boto padro. Para aqueles objetos que recebem eventos de mouse, os eventos ocorrem nesta ordem: MouseDown, MouseUp, Clic, DblClic e MouseUp. Se DblClic no ocorrer dentro do limite de tempo de dupla clicagem do sistema, o objeto reconhecer outro evento Clic. O limite de tempo de dupla clicagem pode variar porque o usurio pode configurar a velocidade de dupla clicagem no Painel de controle. Quando voc est anexando procedimentos para estes eventos relacionados, certifique-se de que suas aes no entrem em conflito. Os controles que no recebem eventos DblClic podem receber dois cliques ao invs de um DblClic. Observao: Para distinguir entre os botes esquerdo, direito e central do mouse, use os eventos MouseDown e MouseUp. Se existir cdigo no evento Clic, o evento DblClic nunca ser disparado.

Funes Internas

285

Exemplo do evento DblClic


Este exemplo exibe um item de lista selecionado em um controle TextBox quando o controle CommandButton clicado ou quando um item de lista clicado duas vezes. Para experimentar este exemplo, cole o cdigo na seo Declarations de um objeto Form que contenha um controle ListBox, um controle TextBox e um controle CommandButton. Em seguida, execute o exemplo e clique no controle CommandButton ou clique duas vezes em um item do controle ListBox. Private Sub Form_Load () List1.AddItem "John" ' Adicionar entradas na caixa de listagem. List1.AddItem "Paul" List1.AddItem "George" List1.AddItem "Ringo" End Sub Private Sub List1_DblClic () Command1.Value = True ' Disparar o evento Clic. End Sub Private Sub Command1_Clic () Text1.Text = List1.Text ' Exibir a seleo. End Sub

Propriedade HelpFile (App, CommonDialog, MenuLine)


Especifica o caminho e o nome de um arquivo da Ajuda do Microsoft Windows usado pelo seu aplicativo para exibir a Ajuda ou documentao on-line. Sintaxe object.HelpFile[ = filename] A sintaxe da propriedade HelpFile tem estas partes: Parte Descrio object Uma expresso de objeto que avalia para um objeto na lista Applies To. filename Uma expresso de seqncia de caracteres especificando o caminho e nome de arquivo do arquivo da Ajuda do Windows para seu aplicativo. Comentrios Se voc criou um arquivo da Ajuda do Windows para o seu aplicativo e configurou a propriedade HelpFile do aplicativo, o Visual Basic chama automaticamente a Ajuda quando o usurio pressiona a tecla F1. Se existir um nmero de contexto na propriedade HelpContextID para o controle ativo ou para o formulrio ativo, a Ajuda exibir um tpico correspondente ao contexto da Ajuda atual. De outra forma, ela exibir a tela de contedo principal. Voc tambm pode usar a propriedade HelpFile para determinar qual arquivo da Ajuda ser exibido quando o usurio pedir Ajuda no Object Browser para um componente ActiveX. Observao: Criar um arquivo da Ajuda exige o Microsoft Windows Help Compiler, que est disponvel com o Visual Basic, Professional Edition.

Exemplo da propriedade HelpFile


Este exemplo usa tpicos no arquivo do Visual Basic Help e demonstra como especificar nmeros de contexto para tpicos da Ajuda . Para experimentar este exemplo, cole o cdigo na seo Declarations de um objeto Form que contenha um controle TextBox e um controle Frame com um controle OptionButton dentro dele. Execute o exemplo. Uma vez que o programa esteja sendo executado, mova o foco at um dos componentes e pressione F1. ' Os nmeros de contexto efetivos do arquivo do Visual Basic Help. ' Definir constantes. Const winPictureBox = 2016002 Const winCommandButton = 2007557 Private Sub Form_Load () App.HelpFile = "VB5.HLP" Text1.HelpContextID = winPictureBox Form1.HelpContextID = winCommandButton End Sub

Objeto Clipboard
Proporciona o acesso rea de transferncia do sistema. Sintaxe Clipboard Comentrios

Funes Internas

286

O objeto Clipboard usado para manipular texto e elementos grficos na rea de transferncia. Voc pode usar este objeto para permitir que um usurio copie, recorte e cole texto ou elementos grficos em seu aplicativo. Antes de copiar qualquer material para o objeto Clipboard, voc deve limpar seu contedo executando um mtodo Clear como, por exemplo, Clipboard.Clear. Observe que o objeto Clipboard compartilhado por todos os aplicativos do Windows e, portanto, o contedo est sujeito a alterao quando se alterna para outro aplicativo. O objeto Clipboard pode conter diversos fragmentos de dados, desde que cada fragmento esteja em um formato diferente. Por exemplo voc pode usar o mtodo SetData para colocar um bitmap na rea de transferncia com o formato vbCFDIB e, em seguida, usar o mtodo SetText com o formato vbCFText para colocar texto na rea de transferncia. Em seguida, voc pode usar o mtodo GetText para recuperar o texto ou o mtodo GetData para recuperar o elemento grfico. Dados na rea de transferncia estaro perdidos quando outro conjunto de dados do mesmo formato for colocado na rea de transferncia atravs de cdigo ou de um comando de menu.

Objeto Printer, Coleo Printers


O objeto Printer permite que voc se comunique com uma impressora do sistema (inicialmente a impressora padro do sistema). A coleo Printers permite que voc reuna informaes sobre as impressoras disponveis no sistema. Sintaxe Printer Printers(index) O espao reservado index representa um nmero inteiro com um intervalo de 0 a Printers.Count-1. Comentrios Use mtodos grficos para desenhar texto ou elementos grficos no objeto Printer. Uma vez que o objeto Printer contm o resultado que voc deseja imprimir, voc pode usar o mtodo EndDoc para enviar o resultado diretamente impressora padro do aplicativo. Voc deve verificar, e possivelmente revisar o layout de seus formulrios se voc os imprime. Se voc usa o mtodo PrintForm para imprimir um formulrio, por exemplo, imagens grficas podem ser recortadas na parte inferior da pgina, e o texto transportando para a pgina seguinte. A coleo Printers permite que voc consulte as impressoras disponveis, de modo que se possa especificar uma impressora padro para seu aplicativo. Por exemplo, caso voc queira descobrir qual das impressoras disponveis utiliza um driver de impressora especfico. O cdigo abaixo pesquisa todas as impressoras disponveis para localizar a primeira impressora com sua orientao de pgina configurada como retrato, e a define como impressora padro: Dim X As Printer For Each X In Printers If X.Orientation = vbPRORPortrait Then ' Configurar impressora como padro do sistema. Set Printer = X ' Encerrar a procura de impressora. Exit For End If Next Voc designa uma das impressoras da coleo Printers como impressora padro usando a instruo Set. O exemplo anterior designa a impressora identificada pela varivel de objeto X, a impressora padro do aplicativo. Observao: Se voc usa a coleo Printers para especificar uma determinada impressora, como em Printers(3), voc somente pode acessar propriedades somente para leitura. Para ler e gravar as propriedades de uma impressora individual, voc deve primeiro tornar esta impressora a impressora padro do aplicativo.

Objeto Font
O objeto Font contm informaes necessrias para formatar o texto para ser exibido na interface de um aplicativo ou para resultado impresso. Sintaxe Font Comentrios Com freqncia, voc identifica um objeto Font usando a propriedade Font de um objeto que exibe texto (por exemplo, um objeto Form ou o objeto Printer). Voc no pode criar um objeto Font usando cdigo do tipo Dim X As New Font. Se voc deseja criar um objeto Font, deve usar o objeto StdFont assim: Dim X As New StdFont Se voc coloca um controle TextBox chamado Text1 em um formulrio, pode alterar dinamicamente seu objeto Font para outro usando a instruo Set, como no exemplo abaixo: Dim X As New StdFont X.Bold = True X.Name = "Arial" Set Text1.Font = X

Instruo Load
Carrega um formulrio ou controle na memria. Funes Internas

287

Sintaxe Load object O espao reservado object o nome de um objeto Form, objeto MDIForm ou elemento de matriz de controle a ser carregado. Comentrios Voc no precisa usar a instruo Load com formulrios, a menos que queira carregar um formulrio sem exibi-lo. Qualquer referncia a um formulrio (exceto em uma instruo Set ou If...TypeOf) carrega-o automaticamente, se ele ainda no tiver sido carregado. Por exemplo, o mtodo Show carrega um formulrio antes de exibi-lo. Uma vez que o formulrio tenha sido carregado, suas propriedades e controles podem ser alterados pelo aplicativo, esteja o formulrio visvel ou no. Sob determinadas circunstncias, voc pode carregar todos os seus formulrios durante a inicializao e os exibir posteriormente, medida que forem necessrios. Quando o Visual Basic carrega um objeto Form, ele configura as propriedades do formulrio como seus valores iniciais e, em seguida, executa o procedimento de evento Load. Quando o aplicativo iniciado, o Visual Basic carrega automaticamente e exibe o formulrio de inicializao do aplicativo. Se voc carrega um Form cuja propriedade MDIChild esteja configurada como True (em outras palavras, o formulrio filho) antes de carregar um MDIForm, o MDIForm automaticamente carregado antes do formulrio filho. Formulrios MDI filho no podem ser ocultados e, assim, so imediatamente visveis aps o final do procedimento de evento Form_Load. As caixas de dilogo padro produzidas por funes do Visual Basic como, por exemplo MsgBox e InputBox no precisam ser carregadas, exibidas ou descarregadas, mas podem simplesmente ser acionadas de maneira direta.

Exemplo da instruo Load


Este exemplo usa a instruo Load para carregar um objeto Form. Para experimentar este exemplo, cole o cdigo na seo Declarations de um objeto Form e, em seguida, execute o exemplo e clique no objeto Form. Private Sub Form_Clic () Dim Answer, Msg as String ' Declarar varivel. Unload Form1 ' Descarregar o formulrio. Msg = "Form1 foi descarregado. Escolha Yes para carregar e " Msg = Msg & "exibir o formulrio. Escolha No para carregar o formulrio " Msg = Msg & "e deix-lo invisvel." Answer = MsgBox(Msg, vbYesNo) ' Obter a resposta do usurio. If Answer = vbYes Then ' Avaliar a resposta. Show ' Se for Yes, exibir o formulrio. Else Load Form1 ' Se for No, apenas carregue-o. Msg = "Form1 est agora carregado. Escolha O para exib-lo." MsgBox Msg ' Exibir mensagem. Show ' Exibir o formulrio. End If End Sub

Instruo Unload
Descarrega um formulrio ou controle da memria. Sintaxe Unload object O espao reservado object o nome de um objeto Form ou elemento de matriz de controle a ser descarregado. Comentrios A descarga de um formulrio ou controle pode ser necessria ou conveniente em alguns casos em que a memria usada necessria para alguma outra coisa ou quando voc precisa reconfigurar propriedades como seus valores originais. Antes que um formulrio seja descarregado, ocorrer o procedimento de evento Query_Unload, seguido do procedimento de evento Form_Unload. Configurar o argumento cancel como True em qualquer um destes eventos impede que o formulrio seja descarregado. Para objetos MDIForm o procedimento de evento Query_Unload do objeto MDIForm ocorre seguido do procedimento de evento Query_Unload e procedimento de evento Form_Unload para cada formulrio MDI filhoe finalmente o procedimento de evento Form_Unload do objeto MDIForm. Quando um formulrio descarregado, todos os controles colocados no formulrio durante o tempo de execuo no so mais acessveis. Os controles colocados no formulrio durante o tempo de criao permanecem intactos; qualquer alterao durante o tempo de execuo para aqueles controles e suas propriedades so perdidas quando o formulrio recarregado. Todas as alteraes de propriedades de formulrio tambm se perdem. O acesso a qualquer controle no formulrio provoca sua recarga. Observao: Quando um formulrio descarregado, somente o componente exibido descarregado. O cdigo associado ao mdulo de formulrio permanece na memria. Somente elementos de matriz de controle adicionados a um formulrio durante o tempo de execuo podem ser descarregados com a instruo Unload. As propriedades de controles descarregados so reinicializadas quando os controles so recarregados.

Exemplo da instruo Unload


Este exemplo utiliza a instruo Unload para descarregar um objeto Form. Para experimentar este exemplo, cole o cdigo na seo Declarations de um objeto Form e, em seguida, execute o exemplo e clique no objeto Form. Private Sub Form_Clic () Funes Internas

288

Dim Answer, Msg ' Declarar varivel. Unload Form1 ' Descarregar o formulrio. Msg = "Form1 foi descarregado. Escolha Yes para carregar e " Msg = Msg & "exibir o formulrio. Escolha No para carregar o formulrio " Msg = Msg & "e deix-lo invisvel." Answer = MsgBox(Msg, vbYesNo) ' Obter a resposta do usurio. If Answer = vbYes Then ' Avaliar a resposta. Show ' Se Yes, exibir o formulrio. Else Load Form1 ' Se No, apenas carregue-o. Msg = "Form1 est agora carregado. Escolha O para exibi-lo." MsgBox Msg ' Exibir a mensagem. Show ' Exibir o formulrio. End If End Sub

Funo LoadPicture
Carrega um elemento grfico na propriedade Picture de um formulrio, controle PictureBox ou controle Image. Sintaxe LoadPicture([stringexpression]) O argumento stringexpression o nome de um arquivo de elementos grficos a ser carregado. Comentrios Os formatos grficos reconhecidos pelo Visual Basic incluem arquivos de bitmap (.bmp), arquivos de cones (.ico), arquivos codificados run-length (.rle), metarquivos (.wmf), metarquivos aprimorados (.emf), arquivos GIF e arquivos JPEG (.jpg). Os elementos grficos so apagados de formulrios, caixas de figura e controles de imagem atribuindo LoadPicture sem argumento. Para carregar elementos grficos para exibio em um controle PictureBox, controle Image ou como segundo plano de um formulrio, o valor de retorno de LoadPicture deve ser atribudo propriedade Picture do objeto onde a figura exibida. Por exemplo: Set Picture = LoadPicture("PARTY.BMP") Set Picture1.Picture = LoadPicture("PARTY.BMP") Para designar um cone a um formulrio, configure o valor de retorno da funo LoadPicture como a propriedade Icon do objeto Form: Set Form1.Icon = LoadPicture("MYICON.ICO") Os cones tambm podem ser atribudos propriedade DragIcon de todos os controles, exceto controles Timer e controles Menu. Por exemplo: Set Command1.DragIcon = LoadPicture("MYICON.ICO") Carregue um arquivo de elementos grficos na rea de transferncia usando LoadPicture como a seguir: Clipboard.SetData LoadPicture("PARTY.BMP")

Exemplo da funo LoadPicture


Este exemplo usa a funo LoadPicture para carregar uma figura na propriedade Picture de um formulrio e apagar a figura do objeto Form. Para experimentar este exemplo, cole o cdigo na seo Declarations de um objeto Form e, em seguida, execute o exemplo e clique no objeto Form. Private Sub Form_Clic () Dim Msg as String ' Declarar variveis. On Error Resume Next ' Configurar o tratamento de erro. Height = 3990 Width = 4890' Configurar a altura e largura. Set Picture = LoadPicture("PAPER.BMP") ' Carregar o bitmap. If Err Then Msg = "No foi possvel encontrar o arquivo .BMP." MsgBox Msg ' Exibir as mensagem de erro. Exit Sub ' Sair se ocorrer erro. End If Msg = "Escolher O para limpar o bitmap do formulrio." MsgBox Msg Set Picture = LoadPicture() ' Limpar o formulrio. End Sub

Instruo SavePicture
Salva um elemento grfico da propriedade Picture ou Image de um objeto ou controle (se algum estiver associado a ele) em um arquivo. Funes Internas

289

Sintaxe SavePicture picture, stringexpression A sintaxe da instruo SavePicture tem estas partes: Parte Descrio picture Controle Picture ou Image de onde o arquivo de elementos grficos deve ser criado. Stringexpression Nome de arquivo do arquivo de elementos grficos a ser salvo. Comentrios Se um elemento grfico foi carregado de um arquivo para a propriedade Picture de um objeto durante o tempo de criao ou durante o tempo de execuo e ele um bitmap, cone, metarquivo ou metarquivo aprimorado, ele ento salvo usando o mesmo formato que o arquivo original. Se ele for um arquivo GIF ou JPEG, ele salvo como um arquivo de bitmap. Elementos grficos em uma propriedade Image so sempre salvos como arquivos de bitmap (.bmp), independente dos formatos originais.

Exemplo da instruo SavePicture


Este exemplo usa a instruo SavePicture para salvar um elemento grfico desenhado na propriedade Picture de um objeto Form. Para experimentar este exemplo, cole o cdigo na seo Declarations de um objeto Form e, em seguida, execute o exemplo e clique no objeto Form. Private Sub Form_Clic () ' Declarar variveis. Dim CX, CY, Limit, Radius as Integer, Msg as String ScaleMode = vbPixels ' Configurar a escala como pixels. AutoRedraw = True ' Ativar o AutoRedraw. Width = Height ' Alterar largura para corresponder altura. CX = ScaleWidth / 2 ' Configurar a posio X. CY = ScaleHeight / 2 ' Configurar a posio Y. Limit = CX ' Limitar o tamanho de crculos. For Radius = 0 To Limit ' configurar o raio. Circle (CX, CY), Radius, RGB(Rnd * 255, Rnd * 255, Rnd * 255) DoEvents ' Passar a outro processamento. Next Radius Msg = "Escolha O para salvar os elementos grficos deste formulrio " Msg = Msg & "em um arquivo de bitmap." MsgBox Msg SavePicture Image, "TEST.BMP" ' Salvar a figura em um arquivo. End Sub

Mtodo Circle
Desenha um crculo, elipse ou arco em um objeto. Sintaxe object.Circle [Step] (x, y), radius, [color, start, end, aspect] A sintaxe do mtodo Circle tem os seguintes qualificadores de objeto e partes. Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o Form com o foco seja object. Step Opcional. Palavra-chave especificando que o centro do crculo, elipse ou arco relativo s coordenadas atuais fornecidas pelas propriedades CurrentX e CurrentY de object. (x, y) Obrigatrio. Valores Single indicando as coordenadas do ponto central do crculo, elipse ou arco. A propriedade ScaleMode de object determina a unidade de medida a ser usada. radius Obrigatrio. Valor Single indicando o raio do crculo, elipse ou arco. A propriedade ScaleMode de object determina a unidade de medida usada. color Opcional. Valor inteiro Long indicando a cor RGB do contorno do crculo. Se omitido, o valor da propriedade ForeColor usado. Voc pode usar a funo RGB ou a funo QBColor para especificar a cor. start, end Opcional. Valores de preciso simples. Quando um arco, crculo parcial ou elipse desenhado, start e end especificam (em radianos) as posies de incio e fim do arco. O intervalo para ambos -2 pi radianos a 2 pi radianos. O valor padro para start 0 radianos; o padro para end 2 * pi radianos. Funes Internas

290

aspect

Opcional. Valor de preciso simples indicando a relao de aspecto do crculo. O valor padro 1.0, que produz um crculo perfeito (no-elptico) em qualquer tela.

Comentrios Para preencher um crculo, configure as propriedades FillColor e FillStyle do objeto no qual desenhado o crculo ou elipse. Somente figuras fechadas podem ser preenchidas. Figuras fechadas incluem crculos, elipses ou pedaos de pizza (arcos com linhas de raio em ambas as extremidades). Ao desenhar um crculo parcial ou elipse, se start for negativo, Circle desenha um raio at start, e trata o ngulo como positivo; se end for negativo, Circle desenha um raio at end e trata o ngulo como positivo. O mtodo Circle sempre desenha em sentido anti-horrio (positivo). A espessura da linha usada para desenhar o crculo, elipse ou arco depende da configurao da propriedade DrawWidth. A maneira como o crculo desenhado em segundo plano depende da configurao das propriedades DrawMode e DrawStyle. Ao desenhar pedaos de pizza, para traar um raio com ngulo 0 (produzindo um segmento de linha horizontal direita) especifique um nmero negativo muito pequeno para start, ao invs de zero. Voc pode omitir um argumento no meio da sintaxe, mas precisa incluir a vrgula do argumento antes de incluir o prximo argumento. Se omitir um argumento opcional, omita a virgula que acompanha o ltimo argumento especificado. Quando Circle executado, as propriedades CurrentX e CurrentY so configuradas como ponto central especificado pelos argumentos. Este mtodo no pode ser usado em um bloco WithEnd With.

Exemplo do mtodo Circle


Este exemplo usa o mtodo Circle para desenhar alguns crculos concntricos no centro de um formulrio. Para experimentar este exemplo, cole o cdigo na seo General de um formulrio. Em seguida, pressione F5 e clique no formulrio. Sub Form_Clic () Dim CX, CY, Radius, Limit ' Declarar varivel. ScaleMode = 3 ' Configurar a escala como pixels. CX = ScaleWidth / 2 ' Configurar a posio X. CY = ScaleHeight / 2 ' Configurar a posio Y. If CX > CY Then Limit = CY Else Limit = CX For Radius = 0 To Limit ' configurar o raio. Circle (CX, CY), Radius,RGB(Rnd * 255, Rnd * 255, Rnd * 255) Next Radius End Sub

Mtodo Line
Desenha linhas e retngulos em um objeto. Sintaxe object.Line [Step] (x1, 1) [Step] (x2, y2), [color], [B][F] A sintaxe do mtodo Line tem os seguintes qualificadores de objeto e partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se o objeto for omitido, presumese que o Form com o foco seja object. Step Opcional. Palavra-chave especificando que as coordenadas de ponto de partida so relativas posio grfica atual fornecida pelas propriedades CurrentX e CurrentY. (x1, y1) Opcional. Valores Single indicando as coordenadas do ponto inicial da linha ou retngulo. A propriedade ScaleMode determina a unidade de medida usada. Se omitida, a linha se inicia na posio indicada por CurrentX e CurrentY. Step Opcional. Palavra-chave especificando que as coordenadas de ponto final so relativas ao ponto inicial da linha. (x2, y2) Obrigatria. Valores Single indicando as coordenadas do ponto final para a linha que est sendo desenhada. color Opcional. Valor inteiro Long indicando o valor RGB usado para desenhar a linha. Se for omitida, ser usada a configurao da propriedade ForeColor. Voc pode usar a funo RGB ou a funo QBColor para especificar a cor. B Opcional. Se includo faz com que a caixa seja desenhada usando as coordenadas para especificar cantos opostos da caixa. F Opcional. Se for usada a opo B, a opo F especifica que a caixa preenchida com a mesma cor usada para desenhar a caixa. Voc no pode usar F sem B. Se B for usado sem F, a caixa preenchida com a FillColor e FillStyle atuais. O

Funes Internas

291

valor padro para FillStyle transparente. Comentrios Para desenhar linhas interligadas, comece uma linha subseqente no ponto final da linha anterior. A espessura da linha desenhada depende da configurao da propriedade DrawWidth. A maneira como uma linha ou caixa desenhada em segundo plano depende da configurao das propriedades DrawMode e DrawStyle. Quando Line executado, as propriedades CurrentX e CurrentY so configuradas como o ponto final especificado pelos argumentos. Este mtodo no pode ser usado em um bloco WithEnd With.

Exemplo do mtodo Line


Este exemplo usa o mtodo Line para desenhar caixas concntricas em um formulrio. Para experimentar este exemplo, cole o cdigo na seo General de um formulrio. Em seguida, pressione F5 e clique no formulrio. Sub Form_Clic () Dim CX, CY, F, F1, F2, I ' Declarar variveis ScaleMode = 3 ' Configurar ScaleMode como pixels. CX = ScaleWidth / 2 ' Obter o centro horizontal. CY = ScaleHeight / 2 ' Obter o centro vertical. DrawWidth = 8 ' Configurar DrawWidth. For I = 50 To 0 Step -2 F = I / 50' Executar clculos F1 = 1 - F: F2 = 1 + F ' provisrios. Forecolor = QBColor(I Mod 15) ' Definir a cor de primeiro plano. Line (CX * F1, CY * F1)-(CX * F2, CY * F2), , BF Next I DoEvents ' Passar a outro processamento. If CY > CX Then ' Configurar DrawWidth. DrawWidth = ScaleWidth / 25 Else DrawWidth = ScaleHeight / 25 End If For I = 0 To 50 Step 2 ' Montar loop. F = I / 50' Executar clculos F1 = 1 - F: F2 = 1 + F ' provisrios. Line (CX * F1, CY)-(CX, CY * F1) ' Desenhar superior esquerda. Line -(CX * F2, CY) ' Desenhar superior direita. Line -(CX, CY * F2) ' Desenhar inferior direita. Line -(CX * F1, CY) ' Desenhar inferior esquerda. Forecolor = QBColor(I Mod 15) ' Alterar a cor a cada vez. Next I DoEvents ' Passar a outro processamento. End Sub

Mtodo PSet
Configura um ponto em um objeto como uma cor especificada. Sintaxe object.PSet [Step] (x, y), [color] A sintaxe do mtodo PSet tem os seguintes qualificadores de objeto e partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o Form com o foco seja object. Step Opcional. Palavra-chave especificando que as coordenadas so relativas posio atual dos elementos grficos dadas pelas propriedades CurrentX e CurrentY. (x, y) Obrigatrio. Valores Single indicando as coordenadas horizontal (eixo de x) e vertical (eixo de y) do ponto a ser configurado. color Opcional. Valor inteiro Long indicando a cor RGB especificada para o ponto. Se omitido ser usada a configurao atual da propriedade ForeColor. Voc pode usar a funo RGB ou a funo QBColor para especificar a cor. Comentrios O tamanho do ponto desenhado depende da configurao da propriedade DrawWidth. Quando DrawWidth 1, PSet configura a cor especificada para um nico pixel. Quando DrawWidth maior que 1, o ponto centrado nas coordenadas especificadas. A maneira como o ponto desenhado depende da configurao das propriedades DrawMode e DrawStyle.

Funes Internas

292

Quando PSet executado, as propriedades CurrentX e CurrentY so configuradas como o ponto especificado pelos argumentos. Para apagar um nico pixel com o mtodo PSet, especifique as coordenadas do pixel e use a configurao da propriedade BacColor como argumento color. Este mtodo no pode ser usado em um bloco WithEnd With.

Exemplo do mtodo PSet


Este exemplo usa o mtodo PSet para desenhar confete em um formulrio. Para experimentar este exemplo, cole o cdigo na seo General de um formulrio. Em seguida, pressione F5 e clique no formulrio. Sub Form_Clic () Dim CX, CY, Msg, XPos, YPos ' Declarar variveis. ScaleMode = 3 ' Configurar ScaleMode como ' pixels. DrawWidth = 5 ' Configurar DrawWidth. ForeColor = QBColor(4) ' Configurar o primeiro plano como vermelho. FontSize = 24 ' Configurar o tamanho do ponto. CX = ScaleWidth / 2 ' Obter o centro horizontal. CY = ScaleHeight / 2 ' Obter o centro vertical. Cls ' Limpar o formulrio. Msg = "Feliz Ano Novo!" CurrentX = CX - TextWidth(Msg) / 2 ' Posio Horizontal. CurrentY = CY - TextHeight(Msg) ' Posio vertical. Print Msg ' Imprimir mensagem. Do XPos = Rnd * ScaleWidth ' Obter posio horizontal. YPos = Rnd * ScaleHeight ' Obter posio vertical. PSet (XPos, YPos), QBColor(Rnd * 15) ' Desenhar confete. DoEvents ' Passar a outro Loop ' processamento. End Sub

Mtodo AddItem
Adiciona um item a um controle ListBox ou ComboBox, ou adiciona uma linha a um controle MS Flex Grid. No suporta argumentos nomeados. Sintaxe object.AddItem item, index A sintaxe do mtodo AddItem tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. item Obrigatrio. Expresso de seqncia de caracteres especificando o item a ser adicionado ao objeto. Somente para o controle MS Flex Grid, use o caractere de tabulao (cdigo de caractere 90) para separar seqncias de caracteres mltiplas que voc deseja inserir em cada coluna de uma linha recm-adicionada. index Opcional. Nmero inteiro especificando a posio dentro do objeto onde o novo item ou linha est colocado. Para o primeiro item em um controle ListBox ou ComboBox ou para a primeira linha em um controle MS Flex Grid, index 0. Comentrios Se voc fornece um valor vlido para index, item colocado naquela posio dentro de object. Se index omitido, item adicionado na posio classificada adequada (se a propriedade Sorted estiver configurada como True) ou ao final da lista (se Sorted for configurado como False). Um controle ListBox ou ComboBox que seja acoplado a um controle Data no suporta o mtodo AddItem.

Mtodo Arrange
Organiza as janelas ou cones em um objeto MDIForm. No suporta argumentos nomeados. Sintaxe object.Arrange arrangement A sintaxe do mtodo Arrange tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. arrangement Obrigatrio. Um valor ou constante que especifica como organizar janelas ou cones em um objeto MDIForm,

Funes Internas

293

conforme descrito em Configuraes. Configuraes As configuraes para arrangement so: Constante Valor Descrio vbCascade 0 Coloca em cascata todos os formulrios MDI filho no minimizados vbTileHorizontal 1 Coloca lado a lado horizontalmente todos os MDI filho no minimizados vbTileVertical 2 Coloca lado a lado verticalmente todos os formulrios MDI filho no minimizados vbArrangeIcons 3 Organiza cones para formulrios MDI filho minimizados Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser. Janelas ou cones so organizados, mesmo se o objeto MDIForm est minimizado. Os resultados so visveis quando MDIForm maximizado.

Mtodo Clear (Clipboard, ComboBox, ListBox)


Limpa o contedo de uma ListBox, ComboBox ou a rea de transferncia do sistema. Sintaxe object.Clear O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Um controle ListBox ou ComboBox acoplado a um controle Data no suporta o mtodo Clear.

Mtodo Cls
Limpa elementos grficos e texto gerado durante o tempo de execuo de um Form ou PictureBox. Sintaxe object.Cls O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Se object omitido, pressupe-se que o Form com o foco object. Comentrios Cls limpa texto e elementos grficos gerados durante o tempo de execuo por instrues grficas ou de impresso. Bitmaps de segundo plano configurados usando a propriedade Picture e os controles colocados em um Form durante o tempo de criao no so afetados por Cls. Elementos grficos e texto colocado em um Form ou PictureBox enquanto a propriedade AutoRedraw configurada como True no so afetados se AutoRedraw for configurado como False antes que Cls seja acionado. Isto , voc pode manter texto e elementos grficos em um Form ou PictureBox manipulando a propriedade AutoRedraw do objeto no qual voc est trabalhando. Aps Cls ter sido acionado, as propriedades CurrentX e CurrentY do objeto so reconfiguradas como 0.

Mtodo Drag
Inicia, encerra ou cancela uma operao de arraste de qualquer controle, exceto os controles Line, Menu, Shape, Timer ou CommonDialog. No suporta argumentos nomeados. Sintaxe object.Drag action A sintaxe do mtodo Drag tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, o objeto cujo procedimento de evento contenha o mtodo Drag ser assumido. action Opcional. Uma constante ou valor que especifica a ao a ser executada, conforme descrito em Configuraes. Se action for omitido, o padro iniciar o arraste do objeto. Configuraes As configuraes para action so: Constante Valor vbCancel 0 vbBeginDrag 1 vbEndDrag 2

Descrio Cancela a operao de arraste Inicia o arraste de object Encerra o arrastar-e-soltar o object

Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser.

Funes Internas

294

Somente se exige o uso do mtodo Drag para controlar uma operao de arrastar-e-soltar quando a propriedade DragMode do objeto configurada como Manual (0). Entretanto, voc pode usar Drag em um objeto cuja propriedade DragMode est configurada como Automatic (1 ou vbAutomatic). Se voc deseja que o ponteiro do mouse altere sua forma, enquanto o objeto est sendo arrastado, use qualquer uma das propriedades DragIcon ou MousePointer. A propriedade MousePointer somente usada se nenhum DragIcon for especificado. Em verses anteriores do Visual Basic, Drag era um mtodo assncrono onde as instrues subseqentes eram acionadas, apesar da ao Drag no ter sido encerrada.

Mtodo EndDoc
Encerra uma operao de impresso enviada ao objeto Printer, liberando o documento para o spooler ou dispositivo de impresso. Sintaxe object.EndDoc O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Se EndDoc for imediatamente acionada aps o mtodo NewPage, nenhuma pgina em branco adicional impressa.

Funo GetAutoServerSettings
Retorna informaes sobre o estado do registro de um componente ActiveX. Sintaxe object.GetAutoServerSettings([progid], [clsid]) A sintaxe da funo GetAutoServerSettings tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. progid Opcional. Uma expresso de variante especificando a ProgID do componente. clsid Opcional. Uma expresso de variante especificando a CLSID do componente. Valores de retorno A funo GetAutoServerSettings retorna uma Variant que contm uma matriz de valores sobre o componente ActiveX em particular. Os valores de ndice e descries so: Valor Descrio 1 Verdadeiro se o componente ActiveX for remotamente registrado. 2 Nome da mquina remota. 3 Nome do protocolo RPC. 4 Nvel de autenticao RPC. Comentrios Se um valor estiver faltando ou no estiver disponvel, ele ser uma seqncia de caracteres vazia. Se ocorrer um erro durante o mtodo, o valor de retorno ser uma Variant do tipo Empty.

Mtodo GetData
Retorna um elemento grfico do objeto Clipboard. No suporta argumentos nomeados. Sintaxe object.GetData (format) A sintaxe do mtodo GetData tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. format Opcional. Uma constante ou valor que especifica o formato de elementos grficos do Clipboard, conforme descrito em Configuraes. A constante ou valor deve estar entre parnteses. Se format for 0 ou omitido, GetData usa automaticamente o formato adequado. Configuraes As Configuraes de format so: Constante Valor vbCFBitmap 2 vbCFMetafile 3 vbCFDIB 8 vbCFPalette 9

Descrio Bitmap (arquivos .bmp) Metarquivo (arquivos .wmf) Bitmap independente de dispositivo (DIB) Paleta de cores

Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser.

Funes Internas

295

Se nenhum elemento grfico no objeto Clipboard corresponde ao formato esperado, nada retornado. Se somente uma paleta de cores estiver presente no objeto Clipboard, um DIB de tamanho mnimo (1 x 1) ser criado.

Mtodo GetFormat
Retorna um nmero inteiro indicando se um item no objeto Clipboard corresponde a um formato especificado. No suporta argumentos nomeados. Sintaxe object.GetFormat (format) A sintaxe do mtodo GetFormat tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. format Obrigatrio. Um valor ou objeto que especifica o formato do objeto Clipboard conforme descrito em Configuraes. O valor ou constante deve estar entre parnteses. Configuraes As configuraes para format so: Constante Valor vbCFLin &HBF00 vbCFText 1 vbCFBitmap 2 vbCFMetafile 3 vbCFDIB 8 vbCFPalette 9

Descrio Informaes de conversao DDE Texto Bitmap (arquivos .bmp) Metarquivo (arquivos .wmf) Bitmap independente de dispositivo (DIB) Paleta de cores

Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser. O mtodo GetFormat retorna True se um item no objeto Clipboard corresponde ao formato especificado. Caso contrrio, ele retorna False. Para os formatos vbCFDIB e vbCFBitmap, no importa a paleta de cores usada no Clipboard quando o elemento grfico exibido.

Mtodo GetText
Retorna uma seqncia de caracteres de texto a partir do objeto Clipboard. No suporta argumentos nomeados. Sintaxe object.GetText (format) A sintaxe do mtodo GetText tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. format Opcional. Um valor ou constante que especifica o formato do objeto Clipboard, conforme descrito em Configuraes. O valor ou constante deve estar entre parnteses. Configuraes As configuraes para format so: Constante Valor vbCFLin &HBF00 vbCFText 1 vbCFRTF &HBF01

Descrio Informaes de conversao DDE (Padro) texto Rich Text Format (arquivo .rtf)

Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser. Se nenhuma seqncia de caracteres de texto no objeto Clipboard corresponde ao formato esperado, ser retornada uma seqncia de caracteres de comprimento zero ("").

Mtodo Hide
Oculta um objeto MDIForm ou Form mas no o descarrega. Sintaxe object.Hide O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupe-se que o formulrio com o foco seja object. Comentrios Quando um formulrio est oculto, ele removido da tela e sua propriedade Visible configurada como False. Os controles de um formulrio oculto no esto acessveis ao usurio, mas eles esto disponveis para o aplicativo do Visual

Funes Internas

296

Basic em execuo, para outros processos que possam estar se comunicando com o aplicativo atravs de DDE e para eventos do controle Timer. Quando um formulrio est oculto, o usurio pode interagir com o aplicativo at que todo o cdigo no procedimento de evento que provocou a ocultao do formulrio tenha encerrado sua execuo. Se o formulrio no est carregado quando o mtodo Hide acionado, este mtodo carrega o formulrio, mas no o exibe.

Mtodo illDoc
Encerra imediatamente o trabalho de impresso atual. Sintaxe object.illDoc O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios Se o gerenciador de impresso do sistema operacional est manipulando um trabalho de impresso (o gerenciador de impresso est sendo executado e tem impresso em segundo plano ativada), illDoc exclui o trabalho de impresso atual, e a impressora nada recebe. Se o gerenciador de impresso no estiver manipulando o trabalho de impresso (impresso em segundo plano no est ativada) alguns, ou todos os dados, podem ser enviados impressora antes que illDoc possa estar efetivo. Neste caso, o driver de impressora reconfigura a impressora assim que possvel, e encerra o trabalho de impresso.

Mtodo LinExecute
Envia uma seqncia de caracteres de comando ao aplicativo de origem em uma conversao DDE. No suporta argumentos nomeados. Sintaxe object.LinExecute string A sintaxe do mtodo LinExecute tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. string Obrigatrio. Expresso de seqncia de caracteres contendo um comando reconhecido pelo aplicativo de origem. Comentrios O valor efetivo de string varia dependendo do aplicativo de origem. Por exemplo, o Microsoft Excel e Microsoft Word for Windows aceitam seqncias de caracteres de comando que consistem em seus comandos de macro colocados entre colchetes ([ ]). Para visualizar seqncias de caracteres de comando aceitas por um aplicativo de origem, consulte a documentao do aplicativo.

Mtodo LinPoe
Transfere o contedo de um controle Label, PictureBox ou TextBox para o aplicativo de origem em uma conversao DDE. Sintaxe object.LinPoe O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O object o nome de um Label, PictureBox ou TextBox envolvido em uma conversao DDE como um destino. Se object for um Label, LinPoe transfere o contedo da propriedade Caption para a origem. Se object for uma PictureBox, LinPoe transfere o contedo da propriedade Picture para a origem. Se object for uma TextBox, LinPoe transfere o contedo da propriedade Text para a origem. Tipicamente, as informaes em uma conversao DDE fluem da origem para o destino. Entretanto, LinPoe permite que um objeto de destino fornea dados origem. Nem todos os aplicativos de origem aceitam informaes fornecidas desta forma; se o aplicativo de origem no aceita os dados, ocorre um erro.

Mtodo LinRequest
Pede ao aplicativo de origem em uma conversao DDE que atualize o contedo de um controle Label, PictureBox ou TextBox. Sintaxe object.LinRequest O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O object o nome de um Label, PictureBox ou TextBox envolvido em uma conversao DDE como um destino. LinRequest faz com que o aplicativo de origem envie os dados mais atuais a object, atualizando a configurao da propriedade Caption se object for um Label, a configurao da propriedade Picture se object for uma PictureBox, ou a configurao da propriedade Text se object for uma TextBox. Se a propriedade LinMode de object for configurada como Automatic (1 ou vbLinAutomatic), o aplicativo de origem atualiza automaticamente object e LinRequest no necessrio. Se a propriedade LinMode de object for configurada Funes Internas

297

como Manual (2 ou vbLinManual), o aplicativo de origem somente atualiza object quando LinRequest for usado. Se a propriedade LinMode de object for configurada como Notify (3 ou vbLinNotify), a origem notifica o destino que os dados se alteraram acionando o evento LinNotify. O destino deve, ento, usar LinRequest para atualizar os dados.

Mtodo LinSend
Transfere o contedo de um controle PictureBox para o aplicativo de destino em uma conversao DDE. Sintaxe object.LinSend O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios O object deve ser um objeto PictureBox em um objeto Form que seja uma origem em uma conversao DDE. Quando outros aplicativos estabelecem vnculos automticos com um Form em seu aplicativo, o Visual Basic os notifica quando o contedo de uma TextBox ou um Label no Form se altera. Entretanto, o Visual Basic no notifica automaticamente um aplicativo de destino DDE quando a configurao da propriedade Picture de uma PictureBox em um Form de origem se altera. Como a quantidade de dados em um elemento grfico pode ser muito grande, e porque raramente faz sentido atualizar uma aplicativo de destino, visto que cada pixel na figura se altera, o Visual Basic exige que voc use o mtodo LinSend para notificar explicitamente os aplicativos DDE de destino quando o contedo de uma PictureBox se altera.

Funo LoadResData
Carrega dados de diversos tipos possveis de um arquivo de recursos (.res) e retorna uma matriz Byte. Sintaxe LoadResData(index, format) A sintaxe da funo LoadResData tem estas partes: Parte Descrio index Obrigatrio. Nmero inteiro ou seqncia de caracteres especificando o identificador (ID) dos dados contidos no arquivo de recursos. O recurso cuja ID 1 reservado para o cone do aplicativo. format Obrigatrio. O valor que especifica o formato original dos dados que esto sendo retornados, conforme descrito em Configuraes. O valor tambm pode ser o nome da seqncia de caracteres de um recurso definido pelo usurio. Configuraes As configuraes para format so: Configurao Descrio 1 Recurso de cursor 2 Recurso de bitmap 3 Recurso de cone 4 Recurso de menu 5 Caixa de dilogo 6 Recurso de seqncia de caracteres 7 Recurso de diretrio de fonte 8 Recurso de fonte 9 Tabela de aceleradores 10 Recurso definido pelo usurio 12 Cursor de grupo 14 cone de grupo Comentrios Os dados que LoadResData carrega do arquivo de recursos pode ter at 64. Usar LoadResData com um tipo de recurso bitmap, cone ou cursor retorna uma seqncia de caracteres contendo os bits efetivos no recurso. Se voc deseja usar o verdadeiro bitmap, cone ou recurso, use a funo LoadResPicture. Usar LoadResData til para localizar um aplicativo do Visual Basic porque os recursos que precisam ser traduzidos esto isolados em um arquivo de recursos e no h necessidade de acessar o cdigo fonte ou recompilar o aplicativo.

Funo LoadResPicture
Carrega um bitmap, cone, ou cursor de um arquivo de recursos (.res). Sintaxe LoadResPicture(index, format) A sintaxe da funo LoadResPicture tem estas partes: Parte Descrio index Obrigatrio. Nmero inteiro ou seqncia de caracteres especificando o identificador (ID) dos dados no arquivo de recursos. O recurso cuja ID 1 est reservado para o cone

Funes Internas

298

format

do aplicativo. Obrigatrio. Valor ou constante que especifica o formato dos dados que esto sendo retornados, conforme descrito em Configuraes.

Configuraes As configuraes para format so: Constante Valor VbResBitmap vbResIcon vbResCursor 0 1 2

Descrio Recurso de bitmap Recurso de cone Recurso de cursor

Comentrios Voc pode usar a funo LoadResPicture ao invs de referir-se a elementos grficos armazenados na propriedade Picture de um Form ou controles. Armazenar bitmaps, cones ou cursores e acess-los individualmente na medida das necessidades no arquivo de recurso, ao invs de todos de uma vez quando um Form carregado. Usar LoadResPicture til para localizar um aplicativo do Visual Basic, pois os recursos que se precisa traduzir esto isolados em um arquivo de recursos e no h necessidade de se acessar cdigo ou recompilar o aplicativo.

Funo LoadResString
Carrega uma seqncia de caracteres a partir de um arquivo de recursos (.res). Sintaxe LoadResString(index) A sintaxe da funo LoadResString tem estas partes: Parte Descrio index Obrigatrio. Nmero inteiro especificando o identificador (ID) dos dados contidos no arquivo de recursos. O recurso cuja ID 1 reservado para o cone do aplicativo. Comentrios Voc pode usar a funo LoadResString ao invs de literais de seqncia de caracteres em seu cdigo. Armazenar longas seqncias de caracteres de dados, e acess-las individualmente no arquivo de recursos medida que forem necessrias, melhora o tempo de carga, pois voc pode carreg-las individualmente medida que forem necessrios a partir do arquivo de recursos, ao invs de todos de uma s vez quando o formulrio carregado. Usar LoadResString til para localizar um aplicativo do Visual Basic, pois os recursos que precisam ser traduzidos esto isolados em um arquivo de recursos e no h necessidade de acessar cdigo fonte ou recompilar o aplicativo.

Mtodo Move
Move um MDIForm, Form ou controle. No suporta argumentos nomeados. Sintaxe object.Move left, top, width, height A sintaxe do mtodo Move tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido pressupe-se que o formulrio com o foco seja object. Left Obrigatrio. Valor de preciso simples indicando a coordenada horizontal da borda esquerda de object. Top Opcional. Valor de preciso simples indicando a coordenada vertical (eixo de y) para a borda superior de object. width Opcional. Valor de preciso simples indicando a nova largura de object. height Opcional. Valor de preciso simples indicando a nova altura de object. Comentrios Somente o argumento left obrigatrio. Entretanto, para especificar quaisquer outros argumentos, voc deve especificar todos os argumentos que aparecem na sintaxe antes do argumento que voc deseja especificar. Por exemplo, voc no pode especificar width sem especificar left e top. Qualquer argumento antes dele que no seja especificado permanece inalterado. Para formulrios e controles em um controle Frame, o sistema de coordenadas sempre em twips. Mover um formulrio na tela ou mover um controle em um Frame sempre relativo origem (0,0) que o canto superior esquerdo. Ao mover um controle em um objeto Form ou em uma PictureBox (ou um formulrio MDI filho em um objeto MDIForm), o sistema de coordenadas do objeto recipiente usado. O sistema de coordenadas ou unidade de medida configurado com a propriedade ScaleMode durante o tempo de criao. Voc pode alterar o sistema de coordenadas durante o tempo de execuo com o mtodo Scale. Funes Internas

299

Mtodo NewPage
Fecha a pgina atual e avana at a pgina seguinte no objeto Printer. Sintaxe object.NewPage O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Comentrios NewPage avana uma nova pgina impressa e reconfigura a posio de impresso como o canto superior esquerdo da nova pgina. Ao ser acionado, NewPage incrementa em 1 a propriedade Page do objeto Printer.

Mtodo PaintPicture
Desenha o contedo de um arquivo de elementos grficos (.bmp, .wmf, .emf, .ico ou .dib) em um Form, PictureBox ou Printer. No suporta argumentos nomeados. Sintaxe object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode A sintaxe do mtodo PaintPicture tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupe-se que o objeto Form com o foco seja object. Picture Obrigatrio. A origem do elemento grfico a ser desenhado em object. Deve ser a propriedade Picture de um Form ou PictureBox. x1, y1 Obrigatrio. Valores de preciso simples indicando as coordenadas de destino (eixo de x e eixo de y) em object para a picture a ser desenhada. A propriedade ScaleMode de object determina a unidade de medida usada. Width1 Opcional. Valor de preciso simples indicando a largura de destino de picture. A propriedade ScaleMode de object determina a unidade de medida usada. Se a largura de destino for maior ou menor que a largura de origem (width2), picture esticada ou comprimida para ajustar-se. Se omitida, ser usada a largura de origem. Height1 Opcional. Valor de preciso simples indicando a altura de destino de picture. A propriedade ScaleMode de object determina a unidade de medida usada. Se a altura de destino for maior ou menor que a altura de origem (height2), picture esticada ou comprimida para ajustar-se. Se for omitida, ser utilizada a altura de origem. x2, y2 Opcional. Valores de preciso simples indicando as coordenadas (eixo de x e eixo de y) de uma rea de recorte dentro de picture. A propriedade ScaleMode de object determina a unidade de medida usada. Se for omitida, pressupe-se que seja 0. Width2 Opcional. Valor de preciso simples indicando a largura de origem de uma rea de recorte em picture. A propriedade ScaleMode de object determina a unidade de medida usada. Se for omitida, a largura total de origem ser usada. Height2 Opcional. Valor de preciso simples indicando a altura de origem de uma rea de recorte em picture. A propriedade ScaleMode de object determina a unidade de medida usada. Se for omitida, ser usada a altura de origem completa. Opcode Opcional. Valor ou cdigo Long que somente usado com bitmaps. Ele define uma operao voltada para bits (por exemplo, vbMergeCopy ou vbSrcAnd) que executada sobre picture ao ser desenhada em object. Para uma lista completa de constantes de operador voltada para bits, consulte o tpico RasterOp Constants no Visual Basic Help. Comentrios Voc pode girar horizontalmente ou verticalmente um bitmap usando valores negativos para a altura de destino (height1) e/ou a largura de destino (width1). Voc pode omitir tantos argumentos de preenchimento quantos queira. Se voc omitir um argumento de preenchimento ou argumentos opcionais no use qualquer vrgula aps o ltimo que voc especifica. Se deseja especificar um argumento opcional, voc deve especificar todos os argumentos opcionais que aparecem na sintaxe antes dele.

Funes Internas

300

Mtodo Point
Retorna, como nmero inteiro longo, a cor RGB (vermelho-verde-azul) do ponto especificado em um Form ou PictureBox. No suporta argumentos nomeados. Sintaxe object.Point(x, y) A sintaxe do mtodo Point tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o objeto Form com o foco seja object. x, y Obrigatrio. Valores de preciso simples indicando as coordenadas horizontal (eixo de x) e vertical (eixo de y) do ponto na propriedade ScaleMode do Form ou PictureBox. Os valores devem ser colocados entre parnteses. Comentrios Se o ponto referido pelas coordenadas x e y estiver fora de object, o mtodo Point retorna -1.

Mtodo PopupMenu
Exibe um menu pop-up em um objeto MDIForm ou Form no local atual do mouse, ou em coordenadas especficas. No suporta argumentos nomeados. Sintaxe object.PopupMenu menuname, flags, x, y, boldcommand A sintaxe do mtodo PopupMenu tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o formulrio com o foco seja object. Menuname Obrigatrio. O nome do menu pop-up a ser exibido. O menu especificado deve ter pelo menos um submenu. Flags Opcional. Um valor ou constante que especifica a localizao e comportamento de um menu pop-up, conforme descrito em Configuraes. X Opcional. Especifica a coordenada de x onde o menu pop-up exibido. Se for omitido, ser usada a coordenada do mouse. Y Opcional. Especifica a coordenada de y onde o menu pop-up exibido. Se for omitido, ser usada a coordenada do mouse. boldcommand Opcional. Especifica o nome de um controle de menu no menu pop-up para exibir sua legenda em texto negrito. Se for omitido, nenhum controle do menu pop-up aparecer em negrito. Configuraes As configuraes para flags so: Constante (localizao) vbPopupMenuLeftAlign vbPopupMenuCenterAlign vbPopupMenuRightAlign Constante (comportamento) vbPopupMenuLeftButton

Valor Descrio 0 (Padro) O lado esquerdo do menu pop-up est localizado em x. 4 O menu pop-up est centralizado em x. 8 O lado direito do menu pop-up est localizado em x. Valor Descrio 0 (Padro) Um item no menu pop-up reage a um clique de mouse somente quando voc usa o boto esquerdo do mouse. 2 Um item no menu pop-up reage a um clique de mouse quando voc usa o boto direito ou o boto esquerdo do mouse.

vbPopupMenuRightButton

Funes Internas

301

Observao: O parmetro flags no tem efeito algum sobre aplicativos que so executados sob o Microsoft Windows verso 3.0 ou anterior. Para especificar dois flags, combine uma constante para cada grupo usando o operador Or. Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser. Voc especifica a unidade de medida para as coordenadas x e y usando a propriedade ScaleMode. As coordenadas x e y definem onde a pop-up exibida em relao ao formulrio especificado. Se as coordenadas x e y no esto includas, o menu pop-up exibido na localizao atual do ponteiro do mouse. Quando voc exibe um menu pop-up, o cdigo que aparece aps a chamada do mtodo PopupMenu no executado at que o usurio escolha um comando no menu (caso em que o cdigo para aquele evento Clic do comando executado antes do cdigo posterior instruo PopupMenu) ou cancela o menu. Alm disso, somente um menu pop-up pode ser exibido em um determinado momento; portanto, chamadas a este mtodo so ignoradas se um menu pop-up j estiver sendo exibido, ou se um menu pull-down estiver aberto.

Mtodo PrintForm
Envia uma imagem bit-por-bit de um objeto Form impressora. Sintaxe object.PrintForm O espao reservado object representa uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupe-se que o Form com o foco seja object. Comentrios PrintForm imprime todos os objetos visveis e bitmaps do objeto Form. PrintForm tambm imprime elementos grficos adicionados a um objeto Form ou controle PictureBox durante o tempo de execuo se a propriedade AutoRedraw True quando os elementos grficos so desenhados. A impressora usada por PrintForm determinada pelas configuraes do Painel de controle do sistema operacional.

Mtodo RemoveItem
Remove um item de uma ListBox ou controle ComboBox ou uma linha do e um controle MS Flex Grid. No suporta argumentos nomeados. Sintaxe object.RemoveItem index A sintaxe do mtodo RemoveItem tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. index Obrigatrio. Nmero inteiro representando a posio dentro do objeto do item ou linha a ser removida. Para o primeiro item em uma ListBox ou ComboBox ou para a primeira linha em um controle MS Flex Grid, index = 0. Comentrios Uma ListBox ou ComboBox que seja acoplada a um controle Data no suporta o mtodo RemoveItem.

Mtodo Scale
Define o sistema de coordenadas para um Form, PictureBox ou Printer. No suporta argumentos nomeados. Sintaxe object.Scale (x1, y1) - (x2, y2) A sintaxe do mtodo Scale tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o objeto Form com o foco seja object. x1, y1 Opcional. Valores de preciso simples indicando as coordenadas horizontal (eixo de x) e vertical (eixo de y) que definem o canto superior esquerdo de object. Os valores devem ser colocados entre parnteses. Se for omitido, o segundo conjunto de coordenadas tambm deve ser omitido. x2, y2 Opcional. Valores de preciso simples indicando as coordenadas horizontal e vertical que definem o canto inferior direito de object. Os valores devem ser colocados entre parnteses. Se omitido, o primeiro conjunto de coordenadas tambm deve ser omitido. Comentrios O mtodo Scale permite reconfigurar o sistema de coordenadas como qualquer escala escolhida. Scale afeta o sistema de coordenadas tanto para as instrues de elementos grficos durante o tempo de execuo quanto a colocao de controles.

Funes Internas

302

Se voc usa Scale sem argumentos (ambos os conjuntos de coordenadas omitidos), ele reconfigura o sistema de coordenadas para twips.

Mtodos ScaleX, ScaleY


Converte o valor da largura e altura de um Form, PictureBox ou Printer de uma unidade de medida da propriedade ScaleMode para outra. No suporta argumentos nomeados. Sintaxe object.ScaleX (width, fromscale, toscale) object.ScaleY (height, fromscale, toscale) As sintaxes de mtodo ScaleX e ScaleY tm estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido pressupe-se que o objeto Form com o foco seja object. width Obrigatrio. Especifica o nmero de unidades de medida de object a serem convertidas. height Obrigatrio. Especifica o nmero de unidades de medida de object a serem convertidas. fromscale Opcional. Uma constante ou valor especificando o sistema de coordenadas de onde width ou height de object deve ser convertidos, conforme descrito em Configuraes. Os valores possveis de fromscale so os mesmos que a propriedade ScaleMode, mais um novo valor de HiMetric. toscale Opcional. Uma constante ou valor especificando o sistema de coordenadas para o qual width ou height de object devem ser convertidos, conforme descrito em Configuraes. Os valores possveis de toscale so os mesmos que para a propriedade ScaleMode, mais o novo valor de HiMetric. Configuraes As configuraes para fromscale e toscale so: Constante Valor Descrio vbUser 0 Definida pelo usurio: indica que a largura e altura de object esto definidas como um valor personalizado. vbTwips 1 Twip (1440 twips por polegada lgica; 567 twips por centmetro lgico). vbPoints 2 Ponto (72 pontos por polegada lgica). vbPixels 3 Pixel (menor unidade de monitor ou resoluo de impressora). vbCharacters 4 Caractere (horizontal = 120 twips por unidade; vertical = 240 twips por unidade). vbInches 5 Polegada. vbMillimeters 6 Milmetro. vbCentimeters 7 Centmetro. vbHimetric 8 HiMetric. Se fromscale for omitido, pressupese que HiMetric seja o padro. vbContainerPosition 9 Determina a posio do controle. vbContainerSize 10 Determina o tamanho do controle. Comentrios Os mtodos ScaleX e ScaleY tomam um valor (width ou height), com sua unidade de medida especificada por fromscale, e o convertem para o valor correspondente na unidade de medida especificada por toscale. Voc tambm pode usar ScaleX e ScaleY com o mtodo PaintPicture.

Mtodo SetAutoServerSettings
Define os valores de registro de Remote Automation para atender os requisitos de ActiveX e Remote Automation, incluindo definies de configurao e acesso a servidor remoto. Sintaxe object. SetAutoServerSettings(remote, [progid], [clsid], [servername], [protocol], [authentication]) A sintaxe do mtodo SetAutoServerSettings tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. remote Obrigatrio. Boolean. True se o servidor for remoto, False se for local. progid Opcional. Uma expresso de variante especificando a ProgID do servidor. Funes Internas

303

clsid servername protocol authentication

Opcional. Uma expresso de variante especificando o CLSID do servidor. Opcional. Uma expresso de variante especificando o nome da mquina servidor. Opcional. Uma expresso de variante especificando o nome RPC do protocolo a ser utilizado. Opcional. A expresso de variante especificando o nvel de autenticao RPC.

Valores de retorno O mtodo SetAutoServerSettings retorna os seguintes cdigos de erro: Valor Descrio 0 1 2 3 4 5 6 7 8 Nenhum erro. Ocorreu erro durante o tempo de execuo desconhecido. Nenhum protocolo foi especificado. Nenhum nome de mquina servidora foi especificado. Ocorreu um erro ao ler no registro. Ocorreu um erro ao gravar no registro. Ambos os parmetros ProgID e CLSID faltavam. No existe servidor local (tanto em processo quanto entre processos, 16 bits ou 32 bits). Ocorreu um erro ao procurar as DLLs Proxy, verifique se elas foram corretamente instaladas.

Comentrios O mtodo SetAutoServerSettings toma a CLSID ou a ProgID e configura as informaes do registro como local ou remoto, dependendo do valor do parmetro remote. Se tanto uma CLSID quanto uma ProgID so passadas ao mtodo, o CLSID tem precedncia.

Mtodo SetData
Coloca uma figura no objeto Clipboard usando o formato grfico especificado. No suporta argumentos nomeados. Sintaxe object.SetData data, format A sintaxe do mtodo SetData tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. data Obrigatrio. Um elemento grfico a ser colocado no objeto Clipboard. format Opcional. Uma constante ou valor que especifica um dos formatos de objeto Clipboard reconhecidos pelo Visual Basic, conforme descrito em Configuraes. Se format for omitido, SetData determina automaticamente o formato. Configuraes As configuraes para format so: Constante Valor vbCFBitmap 2 vbCFMetafile 3 vbCFDIB 8 vbCFPalette 9

Descrio Bitmap (arquivos .bmp) Metarquivos (arquivos .wmf) Bitmap independente de (DIB) Paleta de cores

dispositivo

Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser. Voc define o elemento grfico que deve ser colocado no objeto Clipboard com a funo LoadPicture ou a propriedade Picture de um Form, Image ou PictureBox.

Mtodo SetText
Coloca uma seqncia de caracteres de texto no objeto Clipboard usando o formato de objeto Clipboard especificado. No suporta argumentos nomeados. Sintaxe object.SetText data, format A sintaxe do mtodo SetText tem estas partes: Parte Descrio object Obrigatrio. Uma expresso de objeto que avalia para um objeto na lista Applies To. data Obrigatrio. Dados de seqncia de caracteres a serem

Funes Internas

304

Format

colocado na rea de transferncia. Opcional. Uma constante ou valor que especifica um dos formatos reconhecidos pelo Visual Basic, conforme descrito em Configuraes.

Configuraes As configuraes para format so: Constante Valor vbCFLin &HBF00 vbCFRTF vbCFText &HBF01 1

Descrio Informaes de conversao DDE RichText Format (Padro) texto

Comentrios Estas constantes esto listadas na biblioteca de objetos Visual Basic (VB) no Object Browser.

Mtodo Show
Exibe o objeto MDIForm ou Form. No suporta argumentos nomeados. Sintaxe object.Show style, ownerform A sintaxe do mtodo Show tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o formulrio associado ao mdulo do formulrio ativo seja object. style Opcional. Nmero inteiro que determina se o formulrio tem janela restrita ou no. Se style for 0, o formulrio no tem janela restrita; se style for 1, o formulrio tem janela restrita. ownerform Opcional. Uma expresso de seqncia de caracteres que especifica o componente que "proprietrio" do formulrio em exibio. Para formulrio padro do Visual Basic, use a palavra-chave Me Comentrios Se o formulrio especificado no estiver carregado quando o mtodo Show acionado, o Visual Basic o carrega automaticamente. Quando Show exibe um formulrio sem janela restrita, o cdigo subseqente executado como ele encontrado. Quando Show exibe um formulrio de janela restrita, nenhum cdigo subseqente executado at que o formulrio seja ocultado ou descarregado. Quando Show exibe um formulrio de janela restrita, nenhuma entrada (teclado ou clique de mouse) pode ocorrer, exceto em objetos no formulrio de janela restrita. O programa deve ocultar ou descarregar um formulrio de janela restrita (normalmente em resposta a alguma ao de usurio) antes que entrada em outro formulrio possa ocorrer. Um MDIForm no pode ser de janela restrita. Embora outros formulrios em seu aplicativo estejam desativados quando um formulrio de janela restrita exibido, os outros aplicativos no esto. O formulrio de inicializao de um aplicativo automaticamente exibido aps seu evento Load ter sido acionado. Aqui est um exemplo de como o argumento ownerform usado com o mtodo Show: Private Sub cmdShowResults_Clic() ' Exibir um formulrio de janela restrita chamado frmResults. frmResults.Show vbModal, Me End Sub

Mtodo TextHeight
Retorna a altura de uma seqncia de caracteres de texto como ela seria impressa na fonte atual de um Form, PictureBox ou Printer. No suporta argumentos nomeados. Sintaxe object.TextHeight(string) A sintaxe do mtodo TextHeight tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o objeto Form com o foco seja object. String Obrigatrio. Uma expresso de seqncia de caracteres que avalia para uma seqncia de caracteres cuja altura de texto determinada. A expresso de seqncia de caracteres deve estar entre parnteses. Comentrios

Funes Internas

305

A altura expressa em termos da configurao da propriedade ScaleMode ou sistema de coordenadas do mtodo Scale vlidas para object. Use TextHeight para determinar a quantidade de espao vertical exigido para exibir o texto. A altura retornada inclui o espao normal que precede o texto, acima e abaixo, de modo que voc pode usar a altura para calcular e posicionar linhas mltiplas de texto dentro de object. Se string contm retornos de linha, TextHeight retorna a altura acumulada das linhas, incluindo o espao que precede cada linha, acima e abaixo.

Mtodo TextWidth
Retorna a largura de uma seqncia de caracteres de texto, como ela seria impressa na fonte atual de um Form, PictureBox ou Printer. No suporta argumentos nomeados. Sintaxe object.TextWidth(string) A sintaxe do mtodo TextWidth tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o Form com o foco seja object. String Obrigatrio. Uma expresso de seqncia de caracteres que avalia para uma seqncia de caracteres cuja largura determinada. A expresso de seqncia de caracteres deve estar entre parnteses. Comentrios A largura expressa em termos da configurao da propriedades ScaleMode ou do sistema de coordenadas do mtodo Scale vlidos para object. Use TextWidth para determinar a quantidade de espao horizontal exigido para exibir o texto. Se string contm retornos de linha incorporados, TextWidth retorna a largura da linha mais longa.

Mtodo ZOrder
Coloca um MDIForm, Form ou controle especificado frente ou atrs na ordem-z dentro de seu nvel grfico. No suporta argumentos nomeados. Sintaxe object.ZOrder position A sintaxe do mtodo ZOrder tem estas partes: Parte Descrio object Opcional. Uma expresso de objeto que avalia para um objeto na lista Applies To. Se object for omitido, pressupese que o formulrio com o foco seja object. Position Opcional. Nmero inteiro indicando a posio de object em relao a outras ocorrncias do mesmo object. Se a posio for 0 ou omitida, object posiciona na frente, na ordem-z. Se a posio for 1, object posicionado atrs na ordem-z. Comentrios A ordem-z de objetos pode ser definida durante o tempo de criao escolhendo o comando de menu Bring To Front ou Send To Bac no menu Edit. Dentro de um objeto MDIForm, ZOrder envia formulrios MDI filho para a frente ou para trs da rea MDI cliente, dependendo do valor de position. Para um MDIForm ou objeto Form, ZOrder envia o formulrio para a frente ou para trs da tela, dependendo do valor de position. Como resultado, os formulrios podem ser exibidos frente ou atrs de outros aplicativos em execuo. Trs camadas grficas so associadas a formulrios e recipientes. A camada de trs o espao de desenho onde os resultados dos mtodos grficos so exibidos. A seguir est a camada mdia onde os objetos grficos e os controles Label so exibidos. A camada frontal onde todos os controles no-grficos como CommandButton, ChecBox ou ListBox so exibidos. Qualquer coisa contida em uma camada mais prxima do primeiro plano cobre tudo o que est contido na(s) camada(s) atrs dele. ZOrder dispe os objetos somente dentro da camada onde o objeto exibido.

Exemplo do mtodo AddItem


Este exemplo utiliza o mtodo AddItem para adicionar 100 itens a uma caixa de listagem. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio contendo um controle ListBox chamado List1 e, em seguida, pressione F5 e clique no formulrio. Private Sub Form_Clic () Dim Entry, I, Msg ' Declarar variveis. Msg = "Choose O to add 100 items to your list box." MsgBox Msg ' Exibir mensagem. For I = 1 To 100 ' Contar de 1 a 100. Entry = "Entry " & I ' Criar entrada. List1.AddItem Entry ' Adicionar a entrada. Next I

Funes Internas

306

Msg = "Choose O to remove every other entry." MsgBox Msg ' Exibir mensagem. For I = 1 To 50 ' Determinar como List1.RemoveItem I ' remover um em cada dois Next I ' itens. Msg = "Choose O to remove all items from the list box." MsgBox Msg ' Exibir mensagem. List1.Clear ' Limpar a caixa de listagem. End Sub

Exemplo do mtodo Arrange


Este exemplo usa o mtodo Arrange para organizar janelas e cones em um formulrio MDI. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio MDI chamado MDIForm1 que tenha um formulrio MDI filho (chamado Form1, com sua propriedade MDIChild definida como True) e uma caixa de figura no formulrio MDI (chamado Picture1). Pressione F5 e clique em qualquer lugar na caixa de figura para ver os efeitos do mtodo Arrange. Const FORMCOUNT = 5 Dim F(1 To FORMCOUNT) As New Form1 Private Sub MDIForm_Load () Dim I ' Declarar a varivel local. Load Form1 ' Carregar o Form1 original. For I = 1 To FORMCOUNT F(I).Caption = "Form" & I + 1 ' Alterar a legenda em cpias. Next I End Sub Private Sub Picture1_Clic () Static ClicCount ' Declarar as variveis. Dim I, PrevWidth, Start ClicCount = ClicCount + 1 ' Incrementar o contador de cliques. Select Case ClicCount Case 1 MDIForm1.Arrange 1 ' Organizar lado a lado horizontalmente. Case 2 MDIForm1.Arrange 2 ' Organizar lado a lado verticalmente. Case 3 ' Minimizar cada formulrio. PrevWidth = MDIForm1.Width ' Obter a largura do formulrio MDI. MDIForm1.Width = PrevWidth / 2 ' Dividi-lo na metade. Form1.WindowState = 1 ' Minimizar o original. For I = 1 To FORMCOUNT' Olhar cada ocorrncia de F. F(I).WindowState = 1 ' Minimizar cada cpia de F. Next I Start = Timer Do Loop Until Timer = Start + 5 MDIForm1.Width = PrevWidth ' Redimensionar ao tamanho original. MDIForm1.Arrange 3 ' Organizar os cones. End Select End Sub

Exemplo do mtodo Clear


Este exemplo usa o mtodo Clear para limpar todos os itens de uma caixa de listagem. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio com um controle ListBox chamado List1 e, em seguida, pressione F5 e clique no formulrio. Private Sub Form_Clic () Dim Entry, I, Msg ' Declarar as variveis. Msg = "Choose O to remove every other entry." MsgBox Msg ' Exibir mensagem. For I = 1 To 100 ' Contar de 1 a 100. Entry = "Entry " & I ' Criar entrada. List1.AddItem Entry ' Adicionar a entrada. Next I Msg = "Choose O to remove every other entry." MsgBox Msg ' Exibir mensagem. For I = 1 To 50 ' Determinar como List1.RemoveItem I ' remover um em cada dois Next I ' itens. Msg = "Choose O to remove all items from the list box." MsgBox Msg ' Exibir mensagem. List1.Clear ' Limpar a caixa de listagem.

Funes Internas

307

End Sub Este exemplo usa o mtodo Clear para limpar o objeto Clipboard. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5 e clique no formulrio. Private Sub Form_Clic () Const CF_BITMAP = 2 ' Definir o formato de bitmap. Dim Msg' Declarar a varivel. On Error Resume Next ' Configurar o tratamento de erro. Msg = "Choose O to load a bitmap onto the Clipboard." MsgBox Msg ' Exibir mensagem. Clipboard.Clear ' Limpar Clipboard. Clipboard.SetData LoadPicture("PAPER.BMP") ' Obter bitmap. If Err Then Msg = "Can't find the .BMP file." MsgBox Msg ' Exibir mensagem de erro. Exit Sub End If Msg = "A bitmap is now on the Clipboard. Choose O to copy " Msg = Msg & "the bitmap from the Clipboard to the form." MsgBox Msg ' Exibir mensagem. Picture = Clipboard.GetData() ' Copiar da rea de transferncia. Msg = "Choose O to clear the picture." MsgBox Msg ' Exibir mensagem. Picture = LoadPicture() ' Limpar a figura. End Sub

Exemplo do mtodo Cls


Este exemplo usa o mtodo Cls para excluir informaes impressas de um formulrio. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5 e clique no formulrio. Private Sub Form_Clic () Dim Msg' Declarar varivel. AutoRedraw = -1 ' Ativa AutoRedraw. ForeColor = QBColor(15) ' Configurar o primeiro plano como branco. BacColor = QBColor(1) ' Configurar o segundo plano como azul. FillStyle = 7 ' Configurar hachura diagonal. Line (0, 0)-(ScaleWidth, ScaleHeight), , B ' Colocar uma caixa no formulrio. Msg = "This is information printed on the form bacground." CurrentX = ScaleWidth / 2 - TextWidth(Msg) / 2 ' Configura a posio X. CurrentY = 2 * TextHeight(Msg) ' Configurar a posio Y. Print Msg ' Imprimir mensagem em formulrio. Msg = "Choose O to clear the information and bacground " Msg = Msg & "pattern just displayed on the form." MsgBox Msg ' Exibir mensagem. Cls ' Limpar o segundo plano do formulrio. End Sub

Exemplo do mtodo Drag


Este exemplo utiliza o mtodo Drag para arrastar o nome do arquivo de um arquivo bitmap (.bmp) para uma caixa de figura onde o bitmap exibido. Para experimentar este exemplo, cole todo o cdigo na seo Declarations de um formulrio que contenha controles DriveListBox, DirListBox, FileListBox, PictureBox e Label. Use os nomes padro para todos os controles. Dimensione e posicione todos os controles de modo que eles possam ser facilmente vistos e utilizados. O tamanho e posio do rtulo no importante pois ele alterado durante o tempo de execuo. Quando o programa se inicia, voc pode pesquisar seu sistema de arquivo e carregar quaisquer bitmaps. Uma vez que tenha localizado um bitmap que queira exibir, clique no nome do arquivo daquele bitmap e arraste-o para a caixa de figura. Private Sub Form_Load () Picture1.AutoSize = -1' Ativar o AutoSize. Label1.Visible = 0' Tornar o rtulo invisvel . File1.Pattern = "*.BMP; *.ICO; *.WMF"' Definir padres de arquivo. End Sub Private Sub Dir1_Change () ' Qualquer alterao em Dir1 File1.Path = Dir1.Path ' refletida em File1. End Sub Private Sub Drive1_Change () Dir1.Path = Drive1.Drive End Sub ' Qualquer alterao em Drive1 ' refletida em Dir1.

Private Sub File1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) Dim DY ' Declarar varivel. Funes Internas

308

DY = TextHeight("A") ' Obter a altura de uma linha. Label1.Move File1.Left, File1.Top + Y - DY /2, File1.Width, DY Label1.Drag ' Arrastar o contorno do rtulo. End Sub Private Sub Dir1_DragOver (Source As Control, X As Single, Y As Single, State As Integer) ' Alterar o ponteiro para no-soltar. If State = 0 Then Source.MousePointer = 12 ' Usar o ponteiro de mouse padro. If State = 1 Then Source.MousePointer = 0 End Sub Private Sub Drive1_DragOver (Source As Control, X As Single, Y As Single, State As Integer) ' Alterar ponteiro para no-soltar. If State = 0 Then Source.MousePointer = 12 ' Usar o ponteiro de mouse padro. If State = 1 Then Source.MousePointer = 0 End Sub Private Sub Form_DragOver (Source As Control, X As Single, Y As Single, State As Integer) ' Alterar o ponteiro para no-soltar. If State = 0 Then Source.MousePointer = 12 ' Usar o ponteiro de mouse padro. If State = 1 Then Source.MousePointer = 0 End Sub Private Sub File1_DragOver (Source As Control, X As Single, Y As Single, State As Integer) On Error Resume Next If State = 0 And Right$(File1.Filename,4) = ".ICO" Then Label1.DragIcon = LoadPicture(File1.Path + "\" + File1.Filename) If Err Then MsgBox "The icon file can't be loaded." ElseIf State = 1 Then Label1.DragIcon = LoadPicture () ' Usar o cone no-arrastar. End If End Sub Private Sub Picture1_DragDrop (Source As Control, X As Single, Y As Single) On Error Resume Next Picture1.Picture = LoadPicture(File1.Path + "\" + File1.Filename) If Err Then MsgBox "The picture file can't be loaded." End Sub

Exemplo do mtodo EndDoc


Este exemplo usa o mtodo EndDoc para encerrar um documento aps imprimir duas pginas, cada uma delas com uma linha centralizada de texto indicando o nmero da pgina. Para experimentar este exemplo, cole o cdigo na seo Declarations de um formulrio e, em seguida, pressione F5 e clique no formulrio. Private Sub Form_Clic () Dim HWidth, HHeight, I, Msg ' Declarar as variveis. On Error GoTo Err