Você está na página 1de 11

A introduo do captulo 97 a VBA no 2001 SYBEX do copyright de AutoCAD, Inc.

, Alameda,
bsico visual do CA www.sybex.com para as aplicaes (VBA) integrada como uma parte
padro de AutoCAD 2002. Isto significa que voc pode usar VBA para todas suas tarefas do
desenvolvimento de AutoCAD, em vez (ou alm) de ObjectARX e de AutoLISP. Se you.re j
familiar com algum dialect de BASIC, achado de you.ll que VBA fcil de aprender. Se you.re
um colaborador seasoned de AutoLISP, voc puder encontrar a maneira de VBA de fazer
coisas para ser impar, mas aps um quando far o sentido. There.s uma tabela no fim deste
captulo que lhe ajudar traduzir conceitos de AutoLISP a seus equivalentes de VBA.
Automatizao Compreensiva De ActiveX. Cdigo Da Escrita VBA. Usando Procedimentos.
Variveis e constantes. Controle Estruturas. Constr- Em Funes. Manipulao De Erro.
Converter-se de AutoLISP a VBA. Se voc quiser experimentar. Copyright o 2001 SYBEX, Inc.,
Alameda, CA www.sybex.com que comea comeado com fontes do pacote de VBA Microsoft.s
VBA duas coisas a AutoCAD. Primeiramente, there.s o motor prprio da lngua de VBA, que faz
o trabalho de interpretar todo o cdigo de VBA voc escreve quando sua aplicao
executada. Em segundo, there.s o VBA integrou o ambiente do desenvolvimento (IDE), que o
fornece com as ferramentas para editar e eliminar erros de seu cdigo de VBA. Neste captulo,
you.ll aprendem os princpios da lngua de VBA prprios. O captulo seguinte, encontrado
tambm neste CD, descreve o IDE e como integrar o cdigo de VBA com o usurio
interface.However de AutoCAD, voc necessita saber apenas bastante sobre o IDE para
datilografar dentro e executar procedimentos para seguir junto com este captulo, assim here.s
uma introduo rpida. Lanar o VBA IDE para comear comeou, you.ll querem tornar-se
familiares com o ambiente integrado VBA do desenvolvimento de AutoCAD, ou o IDE. As
seguintes etapas mostram-lhe como abrir o IDE. 1. Selecione o editor bsico do Visual do
Macro das ferramentas de um menu drop-down de AutoCAD. Isto abre o editor de VBA em uma
janela separada. 2. Com o IDE aberto, voc tem diversas opes a mover-se entre o IDE e a
janela de AutoCAD. Estale a tecla da vista AutoCAD na extremidade esquerda do editor toolbar,
ou selecione o AutoCAD da vista de um menu do editor. 3. A combinao Alt+F11 chave moveo tambm do editor para trs para AutoCAD. Pressione Alt+F11 para ir para trs da janela
principal de AutoCAD ao editor de VBA. Voc pode tambm abrir o editor automaticamente
quando voc carrega um projeto de VBA. Para fazer assim, para escolher o projeto do Load do
Macro das ferramentas e para fazer certo a caixa de verificao bsica visual aberta do editor
selecionada. Criando um mdulo novo em toda a hora dada, voc pode ter mais de um projeto
de VBA aberto em AutoCAD. (voc no necessita ter nenhum projeto aberto, entretanto.) Todos
os componentes em um projeto so carregados ento o projeto projeto de opened.A pode
consistir em alguns destes componentes: . Mdulos. Mdulos da classe. UserForms que
COMEA COMEADO COM 2001 SYBEX do copyright de VBA 3, Inc., Alameda, mdulo do
CA www.sybex.com A um recipiente para a classe que de VBA code.A o mdulo o
componente de VBA usado definir um tipo novo de object.A UserForm um componente
customizable da relao de usurio. Os mdulos da classe so um tpico avanado, e you.ll
aprendem sobre UserForms no captulo 99 (que est tambm neste CD), mas para agora, let.s
cram apenas um mdulo padro. Este ser um lugar onde voc possa executar amostras do
cdigo. Se voc tivesse AutoCAD aberto com um desenho em branco do defeito carregado, o
achado de you.ll que este desenho inclui um projeto do defeito VBA nomeou ACADProject. 1.
Para introduzir um mdulo novo, um Module seleto da insero dos menus do IDE, ou para
estalar a tecla do mdulo da insero no padro toolbar. Isto cra um mdulo novo e abre esse
mdulo no editor. O editor pode indicar muitos mdulos em uma vez, desde it.s uma aplicao
mltipla da relao do original (MDI). 2. Quando you.re que aprende VBA, achado de you.ll
provavelmente ele til maximize o mdulo you.re que trabalha com. Estale a tecla do maximize
na janela Module1 para ampli-la. Os mdulos novos criadores e funcionando de um
procedimento prendem o cdigo de VBA, mas um mdulo pode conter muitos do cdigo. Em
VBA, o cdigo quebrado acima em procedures.You.ll aprende sobre os tipos diferentes de
procedimentos em um momento, mas para agora, let.s cram apenas um. 1. Na janela
Module1, datilografe HelloWorld secundrio e pressione a entrada key.VBA introduzir
parnteses no fim da definio do procedimento, e cram automaticamente uma linha do
submarino da extremidade para marcar o fim do procedimento. 2. Datilografe agora o mundo
do Hello de MsgBox. entre nas linhas secundrias do submarino e da extremidade. Observe
que VBA o fornece com o Info rpido sobre os argumentos para a funo de MsgBox. Para
agora, voc pode apenas ignorar estes. 3. Estale o rato em qualquer lugar fora da linha you.ve
datilografada apenas para aceit-la e desobstrudo o Info rpido. 4. Agora que you.ve criou um
procedimento, procedimentos de funcionamento da lata do funcionamento it.You de let.s

interativamente no ambiente de VBA usando a janela imediata (chamada s vezes a janela


eliminar erros). Esta janela pode j ser indicada no fundo do IDE. If.not, voc pode abri-la que
usa a janela do Immediate da vista ou a combinao do keystroke de Ctrl+G. CAPTULO
NINETY-SEVEN. INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 4, Inc.,
Alameda, tipo HelloWorld do CA www.sybex.com 5. na janela imediata para dizer VBA para
executar o procedimento de HelloWorld que voc criou apenas. A indicao de MsgBox cra
uma mensagem em sua janela de AutoCAD (e, incidentally, em makes do popup a janela de
AutoCAD a janela ativa, como mostrado em figura 97.1). 6. Estale EST BEM nesta caixa de
dilogo para retornar ao VBA IDE. Se you.ve seguir junto com as instrues nesta seo, sua
tela olhar como figura 97.2. Figura 97.1 os resultados de COMEAR do procedimento de
HelloWorld COMEARAM COM 2001 SYBEX do copyright de VBA 5, Inc., Alameda, figura
97.2 do CA www.sybex.com o procedimento de HelloWorld nos atalhos de VBA IDE lanar o
editor bsico do Visual seleto bsico visual do Macro das ferramentas do editor. Para carregar
um projeto de VBA selecione o projeto do Load do Macro das ferramentas. Para criar um
procedimento novo datilografe o submarino ou a funo e o nome do procedimento em um
mdulo. Para testar um procedimento na janela imediata, para datilografar o nome de um
submarino, ou de uma marca de pergunta, e para datilografar dentro o nome da funo, mais
alguns argumentos requeridos nos parnteses. CAPTULO NINETY-SEVEN. INTRODUO A
VBA no 2001 SYBEX do copyright de AUTOCAD 6, Inc., Alameda, CA www.sybex.com para
definir um uso varivel no ofuscante mais o nome e o tipo variveis. Para definir um uso
constante Const mais o nome e os dados constantes. Para impedir que a soletrao os erros
cre variveis no desejadas colocam a opo explcita no alto de cada mdulo. Ao mltiplo de
loja os artigos da informao declaram e usam uma disposio para um nmero fixo dos
artigos, ou uma coleo para um nmero varivel dos artigos. Para ramificar dentro de seu
cdigo use If.Then.Else ou selecione o caso. Para dar laos dentro de seu cdigo use a para o
lao para um nmero fixo das iteraes, ou a d laos para um nmero varivel das iteraes.
Para indicar uma mensagem ao usurio use a funo de MsgBox. Para pedir a entrada do
usurio use a funo de InputBox. Para segurar o uso dos erros no erro goTo dirigir todos os
erros a uma armadilha do erro em seu cdigo. Os procedimentos seu cdigo de VBA so
armazenados nos procedimentos, que eles mesmos so agrupados nos mdulos. Os
procedimentos vm em dois sabores: procedimentos da funo, e procedimentos secundrios,
funes chamadas geralmente justas e submarinos. Nesta seo, you.ll aprendem como criar e
chamar ambos os tipos de procedimentos e como passar a informao para a frente e para trs
entre procedimentos. Os PROCEDIMENTOS 7 copyright o 2001 SYBEX, Inc., Alameda, os
submarinos e as funes a diferena entre submarinos e as funes do CA www.sybex.com
so que as funes retornam um valor ao chamador, e os submarinos no . Realmente, it.s
mais correto dizer que as funes podem retornar um valor, desde que voc pode executar
uma funo com uma sintaxe que diga VBA para jogar afastado o valor do retorno. Este
captulo, embora, concentrar em aprender bastante VBA fazer to rapidamente o trabalho til
como possvel, sem escavar em cada canto da lngua. Para uma discusso mais avanada de
VBA, veja o manual de VBA Developer.s, edio, por Ken Getz e microfone Gilbert (Sybex,
2001) ou dominar AutoCAD VBA, por Marion Cottingham (Sybex, 2001). Quando houver um
artigo do Procedure da insero no menu de VBA, it.s realmente desnecessrio. That.s porque,
porque voc viu previamente para um submarino, it.s mais simples apenas datilografar dentro o
keyword do submarino ou da funo, para nomear o procedimento, e deixou VBA fazem o
rest.As ilustrado no seguinte exemplo, voc pode criar um de cada tipo de procedimento. 1. Na
janela Module1, mova o cursor abaixo da indicao do submarino da extremidade, e datilografe
ShowSquare(). secundrio. A indicao do submarino da extremidade aparece abaixo de sua
indicao nova, assim como uma linha que divide o submarino precedente da extremidade da
linha que voc incorporou apenas. 2. Coloque o cursor abaixo da indicao do submarino da
extremidade e do tipo funo Return-Square().. A janela Module1 deve indicar as seguintes
linhas novas, com uma linha horizontal que divide cada entrada: Argumentos secundrios da
funo do fim de ReturnSquare() da funo do submarino da extremidade de ShowSquare()
nossos procedimentos de ShowSquare e de ReturnSquare ambos quadrado que um nmero
forneceu pelo usurio. Para fazer este, voc necessita equipa cada procedimento com um
argumento de argument.An um placeholder para a informao que ser fornecida no runtime.
Let.s vem como os argumentos trabalham: 1. Vai adiante e adiciona o cdigo a estes dois
procedimentos para faz-los entregar o square.Here.s a verso modificada: CAPTULO
Secundrio NINETY-SEVEN De ShowSquare(x). A INTRODUO A VBA no 2001 SYBEX do
copyright de AUTOCAD 8, Inc., Alameda, funo do fim do CA www.sybex.com Debug.Print x *

funo ReturnSquare(x) ReturnSquare = x do submarino da extremidade de x * x em cada um


destes procedimentos, x um runtime de argument.At (isto , quando voc executa realmente
o procedimento) que voc deve fornecer um valor para o argumento. 2. Estale abaixo da
entrada de HelloWorld na janela imediata e entre em ShowSquare 5.. 3. Em seguida, incorpore
o?ReturnSquare (7).. Figura 97.3 mostra a janela imediata aps ter executado cada um destes
procedimentos. Figura 97.3 executando os procedimentos de ShowSquare e de ReturnSquare
observe que a sintaxe de chamada difere entre funes e submarinos. Para um submarino,
voc fornece simplesmente o nome do procedimento, seguido por todos os argumentos as
tomadas do submarino, sem parnteses. Para chamar uma funo da janela imediata, voc
usa? o operador seguiu por todos os argumentos as tomadas da funo, cercadas por
parnteses. Voc pode pensar do? o operador como o What do meaning o valor de?..
Embora ambos os procedimentos forneam a mesma sada na amostra, usam mtodos
diferentes fornecer essa sada. O submarino chama Debug.Print, que um bocado especial da
sintaxe de VBA que faz exame de o que quer que o segue na linha e o imprime janela
imediata. A funo atribui o resultado a seu prprio nome. Isto tem o efeito de fazer que o valor
do retorno da funo. Naturalmente, um procedimento pode chamar outros procedimentos. No
seguinte exemplo, o procedimento de CallBoth executa ambos os outros dois procedimentos:
Sub CallBoth(x) y no ofuscante ShowSquare x y = 2001 SYBEX do copyright dos
PROCEDIMENTOS 9 do submarino da extremidade de ReturnSquare(x), Inc., Alameda, CA
www.sybex.com aqui, y uma varivel local: um lugar para armazenar um pouco de
informao (you.ll aprendem mais sobre variveis na seo seguinte). Para chamar um
procedimento da funo dentro de um outro procedimento, voc atribui o valor do procedimento
da funo a uma varivel local. Voc pode tambm executar um procedimento secundrio
usando o keyword especial da chamada, que no caso os argumentos de procedure.s devem
ser includos nos parnteses. Isto , as indicaes ShowSquare 4 e a chamada ShowSquare(4)
so colaboradores de equivalent.Most usam a sintaxe anterior porque requer mais menos
datilografar. Argumento opcional e nomeado VBA suporta argumentos opcionais: os
argumentos que voc pode, mas no so requeridos a, fonte a um procedimento. Alm, voc
pode fornecer argumentos pela posio (de acordo com sua posio na lista do argumento) ou
pelo nome (de acordo com o nome do argumento). Para ver o efeito de argumentos opcionais e
nomeados na sintaxe de VBA, voc pode experimentar com esta funo: A funo
Increment(Original, uma quantidade opcional = 1) incremento = original + funo do fim de uma
quantidade neste exemplo, original e quantidade nomeada argumentos. Alm, uma
quantidade um argumento opcional, com um valor de defeito de 1.You pode executar o
procedimento do incremento da janela imediata em uma variedade das maneiras: ?
Increment(5,2) ?Increment(5) ?Increment(Original:=5) ?Increment(Original:=5, Amount:=2)?
Increment(Amount:=2, Original:=5) o primeiro exemplo tratam os argumentos positionally,
fornecendo um valor para cada em ordem. O segundo exemplo faz o mesmo, mas no fornece
um valor para o argumento de uma quantidade. Neste caso, o argumento de uma quantidade
opta 1, e o resultado da funo 6 (tentativa ele voc mesmo!). O terceiro exemplo omite
tambm o argumento opcional, mas usos a sintaxe nomeada do argumento de Name:=Value
fazer-lhe o espao livre que informao est sendo fornecida. Os quartos e quintos exemplos
mostram que voc pode fornecer argumentos em o que ordem voc gosta se you.re usando
argumentos nomeados. CAPTULO NINETY-SEVEN. INTRODUO A VBA no 2001 SYBEX
do copyright de AUTOCAD 10, Inc., Alameda, tentativa do CA www.sybex.com Don.t para
misturar argumentos nomeados e posicionais. Se voc fornecesse um argumento nomeado
para qualquer argumento a um procedimento, o uso nomeou argumentos para toda a
informao que voc passa. Variveis e constantes at agora, voc haven.t aprendeu
aproximadamente uma poro grande de a maioria de declaraes de procedimento reais:
tipos de dados. Tcnica, todos os argumentos e o retorno avaliam at este ponto foram
variants.You podem pensar de um variant enquanto um tipo de dados de mltiplos propsitos
que possa prender qualquer coisa. Nesta seo, you.ll vem que h tambm uns tipos de
dados special-purpose, as.well.as algumas outras maneiras armazenar dados do que em
variveis simples. Os tipos de dados VBA suportam dez tipos especficos de dados. A tabela
97.1 mostra estes tipos de dados e a escala dos dados que cada pode prender. Os tipos de
dados TIPO da tabela 97.1 VBA de DADOS PRENDEM verdadeiro ou falso booleano (VBA
considera o 1 ser o valor verdadeiro nativo, mas interpretar todo o valor non-zero como
verdadeiro.) O byte 0 a 255, sem arredondar o 32,768 do inteiro a 32.767, sem arredondar o
2,147,483,648 longo a 2.147.483.647, sem arredondar o 922,337,203,685,477.5808 da moeda
corrente a 922.337.203.685.477.5807, sem arredondar o nico 3.402823E38 ao 1.401298E.45

e o 1.401298E.45 a 3.402823E38, possivelmente com arredondar o 1.79769313486232E308


dobro ao 4.94065645841247E.324 e o 4.94065645841247E.324 a 1.79769313486232E308,
possivelmente com arredondar a data todos os dados do texto da corda do valor da data ou da
hora de 0 preenso variant da lata dos carteres 2E31 dos outros tipos as.well.as (um valor
especial para uninitialized variants e campos da base de dados) as VARIVEIS E AS
CONSTANTES nulas 11 copyright o 2001 SYBEX, Inc., Alameda, CA www.sybex.com que voc
pode declarar o tipo de um argumento do procedimento, uma varivel, ou um retorno da funo
datilografe com como o keyword. Para o exemplo, voc pde reescrever os procedimentos de
ShowSquare, de ReturnSquare, e de CallBoth esta maneira: ShowSquare(x secundrio como o
inteiro) Debug.Print x * funo ReturnSquare(x do submarino da extremidade de x como o
inteiro) como ReturnSquare longo = x * submarino CallBoth(x da funo do fim de x como o
inteiro) y no ofuscante como ShowSquare longo x y = submarino da extremidade de
ReturnSquare(x) muitos colaboradores e autores que trabalham com VBA usa uma conveno
nomeando que especifique carteres do prefixo para nomes variveis para indicar seu tipo.
Para o exemplo, um inteiro pde ser nomeado intX e um strName da varivel da corda. Os
exemplos mais adiantados neste captulo didn.t usam uma conveno nomeando. De aqui
sobre, embora, este captulo usar o Reddick VBA que nomeia a conveno, que
provavelmente usado o mais extensamente nomeando a conveno na indstria. Voc pode
explicitamente declarar uma varivel como o variant, e usa-o prender qualquer tipo de dados
que VBA capaz de handling.You pode tambm sair como a clusula fora de uma declarao
varivel inteiramente, em que o caso VBA fornece implicitamente um variant.While que esta
tcnica o livra de ter que se preocupar tambm sobre tipos de dados, ele meios que VBA won.t
fazem verificar no runtime para ver se os dados so razoveis. Se voc declarar uma varivel
como o inteiro e a tentar pr uma corda de carter nela, VBA dar-lhe- um erro; se voc
declarar a mesma varivel que o variant, VBA no tem nenhuma idia que voc didn.t o quer
aceitar cordas. As variveis do espao e da vida declaradas dentro dos procedimentos so
variveis locais. They.re do uso somente a esse procedimento, e certamente, somente quando
o procedimento funcionar. Mas VBA fornece diversas outras maneiras declarar variveis. Este
fragmento do cdigo mostra a todos os a necessidade de you.ll geralmente:
GstrSharedWithEveryone pblico explcito da opo como o mstrSharedRightHere confidencial
da corda como o CAPTULO NINETY-SEVEN da corda. INTRODUO A VBA no 2001
SYBEX, Inc., Alameda, submarino pblico Procedure1(varArg1 do copyright de AUTOCAD 12
do CA www.sybex.com como o intI no ofuscante do variant) como o submarino confidencial
Helper(varArg2 do submarino da extremidade do inteiro como o intJ de esttica do variant)
como o submarino que da extremidade do inteiro voc pode quebrar abaixo estas declaraes
como segue: . o gstrSharedWithEveryone uma varivel pblica (chamada uma varivel global
em verses mais adiantadas de VBA). Esta varivel pode ser usada por todo o procedimento
em qualquer mdulo no projeto. o mstrSharedRightHere uma varivel do mdulo-nvel. Esta
varivel pode ser usada por todo o procedimento no mdulo onde it.s definiu. varArg1 e
varArg2 so argumentos locais. Podem ser usados somente pelos procedimentos cuja na lista
do argumento aparecem. o intI uma varivel local. Pode ser usado somente pelo
procedimento em que definido. o intJ tambm uma varivel local. Pode ser usado somente
pelo procedimento em que definido. Estes pblico de distinction.between, mdulo-nvel, e
variables.is local consultaram geralmente como ao espao do variable.Using o exemplo
precedente, o gstrSharedWithEveryone tem o espao global, o mstrSharedRightHere tem o
espao do mdulo, e o intI tem o espao local. There.s tambm um segundo fator a considerar
em declarar as variveis, aquela da vida. As variveis globais e do mdulo do espao tm a
vida do projeto: So criados quando o projeto carregado, e se voc ajustar um valor em uma
destas variveis, mantm esse valor at que o projeto esteja descarregado (ou voc ajusta
deliberadamente um outro valor nelas). As variveis locais tm a vida do procedimento: They.re
criou quando voc executa o procedimento, e rejeitou-o quando o procedimento
finished.However, voc pode usar o keyword de esttica (como mostrado para o intJ acima)
declarar uma varivel local com o projeto lifetime.What este meios que o valor da varivel
persiste atravs das chamadas ao procedimento. Se voc o funcionar o ajudante mais de uma
vez (e contem o cdigo adicional, no mostra aqui, para atribuir um valor varivel), achado de
you.ll que o intJ contem o ltimo valor que voc se ajusta nele, melhor que reinitialized cada
vez. AS VARIVEIS E AS CONSTANTES 13 copyright o 2001 SYBEX, Inc., Alameda, CA
www.sybex.com a indicao que explcita da opo voc pode ter observado a linha opo
explcita no exemplo do cdigo na seo precedente. Esta uma indicao de VBA que voc
possa introduzir em alguns de seus mdulos do cdigo (uma vez por o mdulo, e pela

conveno no alto). O efeito desta indicao deve dizer a VBA que voc pretende declarar
explicitamente todas suas variveis antes de as usar. Se voc omitir a opo explcita, VBA
criar automaticamente um variant-tipo varivel para toda a varivel que voc se usar sem
declarao. Esta opo pode proteg-lo de encontro a irritar e duro--encontra o erro. Para o
exemplo, se voc don.t tiver o jogo explcito da opo, este VBA legal: Funo Oops() como
LongVariableName no ofuscante longo como o inteiro LongVariableName = 4 Oops = funo
mesmo que it.s legal, a funo como escrita retorne 0, no 16 do fim de LongVariableName *
de LongVarriableName, porque um dos nomes variveis soletrado diferentemente do que os
outros dois, fazendo com que VBA atribua-lhe o armazenamento separado. Se voc tentar
funcionar este procedimento em um mdulo com jogo explcito da opo, embora, you.ll
comeam um erro imediato da compilao: Varivel no definida de VBA. Voc pode verificar
para ver se h erros de compilao em qualquer altura que dentro em VBA selecionando
elimina erros do Compile ACADproject. Ajustar a opo explcita assim importante que there.s
uma maneira dizer VBA para fazer este para voc em cada mdulo novo. 1. Os Options seletos
das ferramentas do VBA menus.You drop-down vem a caixa de dilogo das opes do editor,
mostrada em figura 97.4. 2. Verifique a caixa de verificao varivel da declarao reque (pelo
defeito it.s unchecked) e you.ll nunca tm que preocupar-se sobre incluir a opo explcita outra
vez voc mesmo. Faa a isto a primeira coisa que voc faz aps AutoCAD instalando, antes
que voc escreva todo o cdigo em tudo. CAPTULO NINETY-SEVEN. A INTRODUO A VBA
no 2001 SYBEX do copyright de AUTOCAD 14, Inc., Alameda, figura 97.4 do CA
www.sybex.com as constantes VBA da caixa de dilogo das opes do editor suporta
constants.names para os valores que a mudana de won.t durante seu application.You pode
usar constantes fazer seu cdigo mais readable. Para o exemplo, mesmo que VBA doesn.t
forneam uma funo automtica aos graus do converso em radianos, it.s fcil bastante de
escrever um: Funo DegreesToRadians1(dblDegrees como o dobro) _ como dobro
DegreesToRadians1 = (dblDegrees/180) * funo que de 3.14159 fins o underscore (_) seguido
pela combinao da chave de entrada (.) serve como um carter da linha-continuao em VBA,
assim que as primeiras duas linhas deste exemplo so uma linha tanto quanto o intrprete de
VBA. AS VARIVEIS E AS CONSTANTES 15 copyright o 2001 SYBEX, Inc., Alameda, CA
www.sybex.com embora it.s fcil bastante de ver o que este exemplo faz, voc possa fazer lhe
um bocado mais desobstrudo usando uma constante representar o nmero mgico: A funo
DegreesToRadians2(dblDegrees como o dobro) _ como Const dobro Pi = 3.14159
DegreesToRadians2 = (dblDegrees/180) * funo do fim do Pi gosta de variveis, constantes
pode ser declarada com local, mdulo, ou espao global. Se voc Pi needed em muitos
lugares, voc puder o definir como uma constante global preferivelmente: Const pblico Pi =
3.14159 a funo DegreesToRadians3(dblDegrees como o dobro) _ como dobro
DegreesToRadians3 = (dblDegrees/180) * disposies da funo do fim do Pi voc pode
agrupar variveis de VBA em colees de arrays.numbered das variveis do mesmo tipo. Para
declarar uma disposio, voc diz simplesmente a VBA quantos elementos ter: StrK(1 no
ofuscante a 5) porque a corda isto cra uma disposio, strK, com o armazenamento para cinco
cordas, numerado 1 5.You direto pode atribuir valores aos membros de uma disposio, ou llos para fora outra vez: ArrayDemo() Secundrio strK(1 No ofuscante A 5) Como A Corda
strK(1) = H. StrK(2) = e. strK(3) = l. strK(4) = l. strK(5) = o. Debug.Print strK(1), strK(2), strK(3),
_ strK(4), strK(5) disposies do submarino da extremidade tendem a ser de uso limitado em
VBA; em muitos exemplos, as colees (discutidas abaixo) provam mais useful.However,
they.re crtico para uma coisa em AutoCAD: o CAPTULO NINETY-SEVEN de VBA. A
INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 16, Inc., Alameda,
respresentao do CA www.sybex.com de um ponto no espao modelo de AutoCAD.s como
uma disposio de doubles.Here.s o que o cdigo para extrair uma linha em AutoCAD pde
olhar como: DrawLine() secundrio ptStart(1 no ofuscante a 3) como ptEnd(1 no ofuscante
dobro a 3) como o dobro ptStart(1) = os 1 ptStart(2) = 1 ptStart(3) = 1 ptEnd(1) = 2 ptEnd(2) = 2
ptStart de ptEnd(3) = 2 ThisDrawing.ModelSpace.AddLine, submarino cada um do fim do ptEnd
das disposies mantem a informao necessria encontrar um ponto. Os primeiros, segundos,
e terceiros elementos da preenso da disposio, respectivamente, do x -, y -, e z-coordenam
do ponto no espao modelo de AutoCAD.s. As colees das colees VBA fornecem uma
alternativa s disposies mantendo-se a par de artigos mltiplos. Ao contrrio das
disposies, que so projetadas prender as coisas que podem ser identificadas pelo nmero,
as colees so projetadas para access.You aleatrio podem pensar de uma coleo como um
lugar para stash qualquer coisa que voc gosta e para o recuperar mais tarde pelo nome. O
procedimento de CollectionDemo demonstra a sintaxe que voc usa trabalhar com colees:

Coluna no ofuscante secundria de CollectionDemo() como coleo ajustada coluna =


coleo nova. Adicione trs artigos coleo col.Add 5, First. Col.Add 9, Second. Col.Add 12,
Third.. Recupere artigos pelo nome Debug.Print col.Item(.First.) Debug.Print col(.Second.)
Debug.Print col(.Third.) AS VARIVEIS E AS CONSTANTES 17 copyright o 2001 SYBEX, Inc.,
Alameda, CA www.sybex.com. Recupere artigos pelo ndice Debug.Print col.Item(1)
Debug.Print col(2) Debug.Print col(3). Remova um artigo da coleo col.Remove 2. E mostre
quantos artigos so deixados o submarino da extremidade de Debug.Print col.Count embora
voc declare uma coleo com o mesmo keyword no ofuscante que voc usa para outras
variveis, voc deva tambm inicializar a coleo. That.s porque uma coleo um tipo de
objeto variable.one que tem umas propriedades mais complexas do que apenas uma posio
do armazenamento para dados. Inicializar a varivel a finalidade desta linha: Ajuste coluna =
coleo que nova o keyword novo diz VBA para criar um objeto do tipo coleo, e o keyword do
jogo diz VBA que uso de you.ll a varivel da coluna consultar a este objeto novo. Adicione um
mtodo do objeto da coleo. Este mtodo faz exame de dois argumentos, primeiro ser o artigo
a adicionar, e o segundo que um valor chave que possa ser usado mais tarde consultar ao
item.You pode adicionar qualquer coisa a uma coleo. Neste caso, em you.re adicionando os
trs nmeros 9, 5, e 12. As duas sees seguintes da amostra mostram que voc pode
recuperar artigos pela chave ou pelo ndice (posio) dentro do collection.Note que o artigo do
keyword pode ser especificado ou omitido ao usar uma ou outra sintaxe. That.s porque o artigo
o mtodo do defeito do objeto da coleo. Finalmente, voc pode usar o mtodo remover
remover um artigo de uma coleo, e a propriedade da contagem para mostrar o nmero atual
dos artigos em uma coleo. Os objetos, os mtodos, e as propriedades You.ll funcionam em
objetos, em mtodos, e em propriedades durante todo VBA. Se you.ve olhar o modelo do
objeto de AutoCAD, you.ve funcionam j atravs de todos os trs destes: . Um objeto
qualquer tipo de varivel que tem o comportamento complexo. Para o exemplo, o objeto do
original em AutoCAD representa uma lima extraindo inteira. CAPTULO NINETY-SEVEN.
INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 18, Inc., Alameda, CA
www.sybex.com. Um mtodo qualquer coisa que um objeto sabe a. Os mtodos do objeto do
original incluem o aberto e Regen methods.You pode pensar dos mtodos como os verbos para
um objeto. Uma propriedade qualquer coisa que descreve um objeto. As propriedades do
objeto do original incluem o nome e ActiveLinetype properties.You pode pensar das
propriedades como os adjetivos que descrevem um objeto. Alm aos objetos forneceu por
AutoCAD, por VBA tem um nmero de objetos do built-in, including o objeto you.ve da coleo
visto apenas. Mais tarde neste captulo you.ll aprenda como usar os mdulos da classe criar
seus prprios objetos. Controle as estruturas embora a lngua original do BASIC falte muitas
caractersticas, a maioria daquelas deficincias foram remediados em verses modernas do
BASIC, tais como VBA.VBA agora uma lngua de programao estruturada desenvolvida,
com um jogo cheio de estruturas do controle para dar laos, ramificar, e fluxo do controle. Esta
seo descrever as estruturas do controle que so o mais frequentemente teis nas
aplicaes. A estrutura de If.Then.Else para segurar ramificar, VBA usa uma estrutura de
If.Then.Else, como mostrado no seguinte exemplo: Funo IfDemo(intNum como o inteiro)
como a corda se intNum = 1 ento IfDemo = One. IntNum de ElseIf = 2 ento IfDemo = Two.
IntNum de ElseIf = 3 ento IfDemo = Three. Dunno outro de IfDemo = de I. Termine se a funo
nesta estrutura, cada uma se ou o keyword de ElseIf estiver seguido por uma condio
booleana algo que pode ser avaliado como ou rectificam ou False.When VBA encontra uma
circunstncia que avale como verdadeiro, ele do fim executar as indicaes que seguem essa
circunstncia. Se voc CONTROLAR AS ESTRUTURAS 19 copyright o 2001 SYBEX, Inc.,
Alameda, CA www.sybex.com incluem uma clusula outra, que se ajuste das indicaes seja
executada se nenhuma das circunstncias for verdadeira. Observe que uma extremidade se a
indicao for requerida para terminar o condicional. Figura 97.5 mostra o resultado de executar
IfDemo com uma variedade das entradas. Figura 97.5 testando o procedimento de IfDemo os
laos profundamente aninhados seletos da indicao If.Then.Else do caso podem ser muito
difceis de decifrar. Beware sempre do cdigo difcil, porque it.s um nightmare potencial do
maintainability: Se voc necessitar modificar tal cdigo, toda a possibilidade de introduzir um
erro novo demasiado grande. Felizmente, VBA fornece uma estrutura ramificando alternativa
para tais situaes, o caso seleto statement.Here.s um exemplo da sintaxe seleta da indicao
do caso: Funo CaseDemo(intNum como o inteiro) como o caso seleto 1 CaseDemo = One
Do intNum da caixa da corda. Caso 2 CaseDemo = Two. Caso 3 a 5 CaseDemo = Between
Trs e cinco. Caso 7, 9 CaseDemo = 7 ou 9. Caso dunno outro de CaseDemo = de I. _
extremidade seleto extremidade funo seleto caixa indicao trabalh compar especific

expresso (este exemplo, intNum) cada caixa por sua vez, at que encontr um que matches.At
que apont, cdigo que particular caixa est executed.Here, do retorno valor procedimento est
CAPTULO NINETY-SEVEN. A INTRODUO A VBA no 2001 SYBEX do copyright de
AUTOCAD 20, Inc., Alameda, CA www.sybex.com determinado pelo case.As que combinando
voc pode ver, o caso pode ser um valor particular, uma escala dos valores (3 a 5), ou de uma
coleo dos valores (7, 9).You podem usar a indicao seleta do caso com qualquer tipo de
varivel. Os valores dos casos individuais devem ser o mesmo tipo de dados que a varivel.
Para laos s vezes seu programa necessitar executar os mesmos tempos do mltiplo da
operao; para o exemplo, adicionar um logo a todos os desenhos relacionados a um
project.VBA fornece diversas estruturas dando laos para repetitiva executar o cdigo. Para o
lao talvez o mais simples destes, fornecendo uma maneira executar um jogo das indicaes
um nmero predeterminado das pocas. Para o lao trabalha incrementando ou decrecendo
um contador: IntI no ofuscante secundrio de ForDemo() como o inteiro. Simples para o lao:
o intI incrementado perto. um cada vez que o lao executado para o intI = intI seguinte do
intI de 1 a 5 Debug.Print. Para o lao com incremento: neste caso. 2 so adicionados ao intI
com cada lao para o intI = 1 a 5 intI seguinte do intI da etapa 2 Debug.Print. Inverta para o
lao: aqui, o intI . decrecido cada vez atravs do lao para o intI = 5 a 1 submarinos seguintes
da extremidade do intI do intI de etapa -1 Debug.Print para laos so os mais teis quando
voc sabe exatamente quantas vezes voc necessita executar o lao. Frequentemente, uso a
de you.ll para que o lao processe os elementos em uma disposio. Se you.re que trata de
uma coleo, voc puder ser melhor fora de usar a d laos, como mostrado na seo
seguinte. CONTROLE o 2001 SYBEX do copyright das ESTRUTURAS 21, Inc., Alameda, CA
www.sybex.com fazem laos fazem laos fornecem uma alternativa para aos laos quando
voc don.t sabe quantas vezes voc necessita executar o lao mas para saber quando voc
necessita parar. O mais simples do laos executam uma indicao to por muito tempo como
alguma circunstncia verdadeira e param-na assim que for falsa: DoDemo1(intInput
secundrios como o inteiro) fizerem quando intInput do intInput 0 Debug.Print; intInput =
intInput - 1 figura 97.6 do submarino da extremidade do lao mostra a sada deste lao. Figura
97.6 a sada de um simples d laos no semicolon no fim da indicao de Debug.Print diz VBA
para pr resultados adicionais sobre a mesma linha da sada. Voc pode tambm causar a d
laos para ser executado to por muito tempo como uma condio particular falsa se usando
at em vez de quando: DoDemo2(intInput secundrios como o inteiro) at o intInput = 0 intInput
de Debug.Print; intInput = intInput - 1 submarino da extremidade do lao faz laos permite
tambm que voc teste a circunstncia na extremidade do lao melhor que no alto, como
mostrado nos dois exemplos seguintes: DoDemo3(intInput Secundrio Como o CAPTULO
NINETY-SEVEN Do Inteiro). A INTRODUO A VBA no 2001 SYBEX do copyright de
AUTOCAD 22, Inc., Alameda, CA www.sybex.com faz o intInput de Debug.Print; intInput =
intInput - 1 lao quando o submarino secundrio DoDemo4(intInput da extremidade do intInput
0 como o inteiro) fizer o intInput de Debug.Print; intInput = intInput - 1 lao at que o intInput = 0
submarinos A da extremidade d laos com o teste em sua extremidade executar sempre ao
menos uma vez, mesmo se seria saltada inteiramente se o teste estiver no incio do lao. O
operador goTo alm a ramificar e a dar laos, VBA inclui um operador para transferir o fluxo do
controle a um outro lugar no programa. Este o goTo infamous, que faz com que a execuo
recomece em um ponto diferente (uma etiqueta) no procedimento: Sub o In de GoToDemo()
Debug.Print o programa demostrativo. Cpia goTo dos This won.t de GoHere Debug.Print.
GoHere: Os This de Debug.Print imprimiro. Termine o submarino neste exemplo, GoHere
uma etiqueta, uma indicao nonexecutable que sirva marcar somente um lugar no
procedimento. Embora usando uma indicao goTo seja associado frequentemente com o
sloppy, duro--decifre programando, esta indicao essencial na manipulao de erro em
VBA, como you.ll vem mais tarde neste captulo. Se no, voc pode quase sempre evitar
indicaes goTo em seu cdigo. Constr- em funes que de VBA VBA inclui uma variedade
larga de functions.While interno esta tampa todo da seo can.t, voc aprender sobre as mais
teis here.You pode querer rever o 2001 SYBEX do copyright das FUNES 23 de BUILT-IN
VBA, Inc., Alameda, seo do Functions. do CA www.sybex.com do VBA a ajuda em linha para
um list.You mais detalhado pode tambm usar o browser do objeto (veja o captulo 99 neste
CD) ver todas as funes de VBA. Os operadores VBA incluem a sustentao para uma
variedade dos operadores. A tabela 97.2 sumaria estes operadores. Embora VBA inclua as
rguas de precedncia razoavelmente complexas do operador que governam a ordem em que
os operadores so avaliados, voc pode sempre usar parnteses forar uma ordem particular
das operaes. Exponenciao do MEANING do OPERADOR dos operadores da tabela 97.2

VBA ^ (2^3 = 8) - negao, ou subtrao * Multiplicao (2*3 = 6)/diviso (diviso de 6/3 = de 2)


\ inteiro (8\3 = 2) modulus da modificao + concatenao da adio & da corda (A. & B. = AB.)
= igualdade lgica (se A = 5) desigualdade lgico (se um 5) mais grande do que = mais grande
do que ou o igual comparao semelhante da corda do wildcard so equivalncia do objeto
nao lgica no e lgica e ou o exclusive lgico ou de Xor ou o CAPTULO lgico NINETYSEVEN. INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 24, Inc., Alameda,
implicao lgica Eqv Info rpido de equivalncia lgico do imp dos operadores da tabela 97.2
(continuada) VBA do CA www.sybex.com com a variedade das funes internas que VBA
fornece, voc pde encontr-lo difcil de recordar os argumentos que voc tem que fornecer
para fazer cada trabalho da funo. That.s porque VBA fornece o Info rpido, uma maneira de
alert-lo na tela para os argumentos a uma funo. Figura 97.7 mostras Info rpido na ao.
Figura 97.7 VBA Info rpido neste exemplo, o argumento alerta requerido. Os outros
argumentos so opcionais, como mostrado pelos suportes quadrados que cercam cada
argumento. As teclas como o argumento devem ser um dos valores na enumerao interna
VbMsgBoxStyle, que voc pode ver usando o browser do objeto ou comeando incorporar o
argumento. Finalmente, o valor do retorno da funo ser um dos valores permitidos pela
enumerao de VbMsgBoxResult. Como voc trabalha com VBA, de you.ll o achado Info rpido
provavelmente muito til. Se voc alcanar o ponto onde voc aprendeu os argumentos para
cada funo e Info rpido se estiver tornando intrusive, voc pode incapacit-lo selecionando o
Editor dos Options das ferramentas. As funes VBA da relao de usurio fornecem duas
funes que so extremamente teis para criar uma relao de usurio a seus procedimentos.
A funo de MsgBox indica uma caixa de dilogo na tela, e retorna a informao sobre que
tecla o usurio estalou para demitir a caixa de dilogo. A funo de InputBox alerta o usurio
para a informao. a funo de MsgBox e de InputBox faz a tecnologia do uso ofMicrosoft.s
IntelliSense para antecipar suas necessidades, em uma maneira similar a verificar automtico
do perodo e da gramtica encontrado na palavra de Microsoft. BUILT-IN VBA FUNCIONA 2001
SYBEX de 25 copyright, Inc., Alameda, CA www.sybex.com que a funo de MsgBox faz
exame de cinco argumentos: Os suportes quadrados de Msgbox(Prompt[, de Buttons][, de Title]
[, de HelpFile, de contexto ] em exemplos da sintaxe de VBA indicam argumentos opcionais. Os
argumentos do alerta e do ttulo fornecem o texto e subtitulam-no para a caixa de dilogo. O
argumento das teclas controla a aparncia da caixa de dilogo; aceita uma srie das
constantes que voc pode ver verificando a ajuda de IntelliSense para ver se h a funo. Os
ltimos dois argumentos permitem que voc especifique uma lima da ajuda e ajude ao tpico
ser usado se o usurio pressionar F1 quando a caixa de dilogo estiver indicada. Figura 97.8
mostra a caixa de dilogo produzida pela seguinte indicao: Unable De MsgBox para
conservar a lima, _ vbAbortRetryIgnore + vbCritical, erro do File. Figura 97.8 a caixa de dilogo
da amostra de MsgBox o valor do retorno de uma chamada funo de MsgBox uma
constante que indique que tecla o usurio estalou. Embora estas constantes sejam numricas,
voc deve sempre usar as constantes internas de VBA avaliar este valor do retorno. Que os
makes seu cdigo mais readable, e o protegem de encontro s mudanas futuras potenciais
aos valores literais das vrias constantes. O procedimento de MsgBoxDemo mostra esta
tcnica. IntRet no ofuscante secundrio de MsgBoxDemo() como o intRet do inteiro = o
MsgBox(.Unable para conservar a lima, _ vbAbortRetryIgnore + erro vbCritical, do File.) O You
seleto do vbAbort Debug.Print do caso do intRet do caso escolheu o aborto. CAPTULO
NINETY-SEVEN. A INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 26, Inc.,
Alameda, You VbRetry do caso Debug.Print do CA www.sybex.com escolheu a nova tentativa.
O You do vbIgnore Debug.Print do caso escolheu ignora. O submarino seleto da extremidade
da extremidade a funo de InputBox usa sete argumentos, embora a maioria dos argumentos
sejam opcionais: InputBox(Prompt[, Title][, Default][, XPos][, YPos ] _ [, HelpFile, contexto ]
outra vez, os argumentos do alerta e do ttulo controlam o texto e o subttulo da caixa de
dilogo. O argumento do defeito fornece um valor do retorno do defeito, e os dois argumentos
seguintes permitem que voc especifique onde a caixa de dilogo parecer em screen.As um
exemplo, figura 97.9 mostram a caixa de dilogo gerada pela seguinte chamada: O Enter de
InputBox um nmero, alerta do Numeric, 27 o valor do retorno da funo de InputBox um
variant que contem o valor que o usurio datilografou no controle de edio na caixa de
dilogo. Figura 97.9 as funes VBA da corda de InputBox da amostra suportam uma
variedade larga da manipulao functions.Historically da texto-corda, os dialects do BASIC
foram muito fortes na corda que segura, e VBA no nenhuma exceo. A tabela 97.3 mostra
o mais importante destas funes. BUILT-IN VBA FUNCIONA 2001 SYBEX de 27 copyright,
Inc., Alameda, tabela do CA www.sybex.com 97.3 retornos que de Asc(strX) dos RESULTADOS

da FUNO das funes da corda de algum VBA o valor do ASCII do primeiro carter em strX.
Chr(n) retorna uma corda cujo o valor do ASCII seja n. InStr(Start, str1, str2) retorne a posio
em str1 onde str2 ocorre como um substring. Comeos que olham o comeo da posio.
LCase(strU) retorna a traduo lowercase do strU. Len(strX) retorna o nmero dos carteres
em strX. LTrim(strX) remove os espaos principais de strX. Mid(strX, comeo, comprimento)
retorna uma corda dos carteres do comprimento que comeam no comeo da posio em
strX. Right(strX, n) retornos os carteres de n que do fim direito de strX. RTrim(strX) removem
os espaos arrastando dos retornos de strX. Space(n) uma corda que consiste em n espaa.
Trim(strX) remove conduzir e arrastar espaos dos retornos de strX. UCase(strL) a traduo
caixa das funes matemticas VBA de strL. inclui a maioria das funes matemticas comuns
(alm aos operadores matemticos esse you.ve visto j). A tabela 97.4 alista o mais importante
destas funes. A tabela 97.4 RESULTADOS matemticos Abs(x) da FUNO das funes de
algum VBA retorna o valor absoluto de retornos que do x. Atn(x) o arctangent de x. Cos(x)
retorna o cosine de retornos do x. Int(x) o inteiro o maior mais menos do que ou o igual a x.
Log(x) retorna o logartmo natural do CAPTULO NINETY-SEVEN do x.. A INTRODUO A
VBA no 2001 SYBEX do copyright de AUTOCAD 28, Inc., Alameda, tabela 97.4 do CA
www.sybex.com (continuada) funes matemticas Rnd(x) de algum VBA retorna um nmero
aleatrio se x for positivo. Sgn(x) retorna 1 se x for positivo e 1 se x for negativo. Sin(x) retorna
o seno de retornos que do x. Sqr(x) a raiz quadrada de x. Tan(x) retorna o tangent de x. Como
AutoCAD, VBA requer que os argumentos s funes trigonometric estejam expressados nos
radianos. As funes VBA do date/Time tm uma seleo das funes para ajudar-lhe trabalhar
com datas e pocas. It.s tambm possvel fazer sua prpria aritmtica da data e da hora, uma
vez que voc compreende como as datas e os tempos so data de stored.All e variveis do
tempo pontos flutuando double-precision, e conter um nmero de dias e dias parciais desde
uma data zero arbitrria. Isso significa que voc pode adicionar 7, para o exemplo, a uma
varivel da data, e comea o mesmo dia na seguinte semana. A tabela 97.5 mostra algumas
das funes internas que lhe ajudaro trabalhar com datas e pocas em seu cdigo. Dois
destas funes, de DateAdd e de DateDiff, trabalho com intervalos. Os cdigos permissveis do
intervalo so mostrados na tabela 97.6. A tabela 97.5 alguns de RESULTADOS Time() da
FUNO das funes de data e de hora de VBA.s retorna o tempo atual. Date() retorna a data
atual. Now() retorna a data atual e a hora. DateAdd(Interval, nmero, data) adiciona o nmero
especificado dos intervalos data especificada. DateDiff(Interval, Date1, Date2) retorna o
nmero dos intervalos entre Date1 e Date2. Weekday(Date) retorna o dia da semana em que a
data especificada cai. BUILT-IN VBA FUNCIONA 2001 SYBEX de 29 copyright, Inc., Alameda,
dia de um quarto yyyy do ms y do ano q m do INTERVALO do CDIGO dos cdigos do
intervalo da tabela 97.6 do CA www.sybex.com da manipulao de erro minuciosa It.s da hora n
s segundo da semana h do ww do weekday do dia w do ano (1 a 366) d importante certificar-se
de que seu cdigo de VBA segura todos os erros que ocorrerem no curso de sua aplicao.
Meio dos erros don.t necessariamente que cdigo escrito you.ve do bad.. Em VBA, it.s
frequentemente necessrio provocar erros no curso normal de uma aplicao. Para o exemplo,
para determinar se there.s um diskette em uma movimentao, it.s o mais simples tentar
apenas escrever uma lima a essa movimentao e interceptar o erro que ocorre se a
movimentao estiver vazia. Nesta seo, you.ll aprendem como desenvolver o cdigo com
manipulao de erro e ver como usar o err e eliminar erros de objetos para derivar a
informao sobre erros. Usar-se no comportamento goTo do defeito do erro VBA.s em resposta
aos erros completamente simples: It.s projetou parar operaes e notificar o usurio. Para o
exemplo, suponha-o funcionar esta funo da janela imediata com uma entrada de 0: Funo
ErrorDemo1(intX como o inteiro) como inteiro ErrorDemo1 = CAPTULO NINETY-SEVEN da
funo do fim de 10/intX. INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 30,
Inc., Alameda, CA www.sybex.com naturalmente, voc can.t divide-se por 0, assim que esta
chamada causar um erro runtime. Figura 97.10 mostra o resultado. Figura 97.10 erro runtime
de Untrapped voc pode impedir que os usurios da extremidade v o cdigo em seu projeto, se
houve um erro ou no, usando a proteo do projeto. Dos menus de VBE, escolha
propriedades do Project das ferramentas, selecione a aba da proteo, e verifique o projeto do
fechamento para ver se h a caixa de verificao da viso. Na caixa de dilogo que relata o
erro runtime, estalar a tecla da extremidade terminar simplesmente a execuo de todo o
cdigo, quando estalar a tecla eliminar erros suspender a execuo do cdigo e destacar a
linha que causou o erro. Em a maioria de aplicaes, este comportamento do defeito uso de
unacceptable.You.ll geralmente o VBA na indicao goTo do erro emitir todos os erros a um
ponto particular (etiqueta) em seu cdigo, e em negcio com os erros l, para impedir que a

manipulao de erro do defeito de VBA.s faa exame sobre. A funo ErrorDemo2 mostra
como esta pde ser realizada para nossa funo da amostra. Funo ErrorDemo2(intX como o
inteiro) como o inteiro no erro HandleErr goTo ErrorDemo2 = 10/intX ExitHere: Retire A Funo
HandleErr: BUILT-IN VBA FUNCIONA 2001 SYBEX de 31 copyright, Inc., Alameda, CA
www.sybex.com seleciona o caso 11 do caso Err.Number. A diviso pelo Zero zero de MsgBox
no uma entrada legal. Caso MsgBox Outro Err.Number &. . & Err.Description, _ vbCritical,
Error Em ErrorDemo2. Funo seleta Here.s do fim de ExitHere do resumo da extremidade
uma anlise passo a passo desta funo. 1. Sobre a indicao goTo do erro diz a VBA que
caso que de todo o erro, deve recomear a execuo na etiqueta HandleErr. 2. A funo
continua ento com sua operao normal. 3. Se nada for erradamente, a indicao da funo
da sada ser a ltima indicao a ser executada. 4. Se qualquer erro ocorrer, a execuo
continua em HandleErr. 5. A indicao seleta do caso faz uma deciso baseada no nmero do
erro (veja a seo seguinte para uma discusso do objeto do err). 6. A funo inclui uma
mensagem especial para um erro particular, diviso por 0, que o desenhador da funo
antecipava. 7. Para todo o outro erro, a funo afixa uma mensagem da informao ao usurio.
Este doesn.t fornece todo o excesso adicional da informao isso que VBA fornece pelo
defeito, mas segurando o erro, a funo impede que a execuo esteja parada. 8. A indicao
de ExitHere do resumo cancela a condio de erro e permite que a execuo continue na
etiqueta de ExitHere. Sempre retirando a funo no mesmo ponto, voc pode evitar alguns
problemas futuros da manuteno. O esqueleto demanipulao usado nesta funo tpico da
manipulao de erro de VBA. Se you.re que constroem uma aplicao para a distribuio a
outros, you.ll quiserem incluir um alimentador do erro similar a este em cada procedimento.
CAPTULO NINETY-SEVEN. INTRODUO A VBA no 2001 SYBEX do copyright de
AUTOCAD 32, Inc., Alameda, CA www.sybex.com o objeto no cdigo demanipulao da
amostra, voc do err pode ter observado as referncias a Err.Number e a Err.Description. Estas
so duas propriedades do objeto do err, uma parte self-contained de funcionalidade construda
em VBA. Apenas porque AutoCAD tem um modelo do objeto (discutido extensivamente no
captulo 98 neste CD), vba prprio fornece alguns objetos. Se um erro ocorrer em seu cdigo,
voc pode determinar o que o erro verificando as propriedades do objeto do err, que refletir
o erro o mais recente (se nenhum erro ocorreu, Err.Number ser 0). A tabela 97.7 mostra as
propriedades as mais importantes do objeto do err. As propriedades da tabela 97.7 do err
objetam o nmero do nmero do MEANING da PROPRIEDADE do erro o mais recente. Texto
da descrio do erro o mais recente. Fonte da fonte do erro o mais recente. Para o exemplo, se
um erro ocorrer ao trabalhar com controles em um formulrio, a fonte seja MSForms. Nmero
do erro de LastDllError de uma chamada a Windows API. O objeto eliminar erros um outro
objeto de VBA que possa ser til ao tratar do cdigo o objeto eliminar erros. O objeto eliminar
erros suporta um nico mtodo, a cpia, que permite que seu cdigo emita uma mensagem
janela imediata. Se voc figura de can.t para fora de what.s que vai erradamente quando o
cdigo misbehaving, voc puder usar o objeto eliminar erros ajudar para fora a coisas da sorte.
Para o exemplo, se there.s um lngCount varivel que esteja comeando o jogo a um valor
inesperado, voc puder fazer com que seu cdigo imprima o valor atual da varivel janela
imediata introduzindo a seguinte linha: O lngCount de Debug.Print o objeto eliminar erros tiver
um efeito somente quando you.re que funciona seu cdigo no editor. Quando os usurios
interagem com sua aplicao, won.t vem estas mensagens. BUILT-IN VBA FUNCIONA 2001
SYBEX de 33 copyright, Inc., Alameda, CA www.sybex.com que converte-se de AutoLISP a
VBA VBA no uma recolocao para AutoLISP. H ainda muitas coisas que so fceis de
fazer em AutoLISP mas est difcil ou impossvel de VBA.You shouldn.t suponha que VBA a
tecnologia prefervel apenas porque it.s mais novo. Na outra mo, a facilidade de projetar
caixas de dilogo com o UserForms (coberto no captulo 99) e a acessibilidade de VBA fazemlhe uma lngua compelindo para as aplicaes simples que requerem um usurio que
interface.You pode se encontrar cdigo existente movendo de AutoLISP parcialmente ou
inteiramente s utilidades novas de VBA para empregar caractersticas de VBA. Quando
there.s nenhuma ferramenta automatizada para se converter de AutoLISP a VBA, nem os
equivalentes exatos para cada AutoLISP comandam, l forem similaridades entre qualquer par
de lnguas de programao. Se o familiar com AutoLISP, achado de you.re de you.ll as
equivalncias na tabela 97.8 til como voc vier at a velocidade em VBA. Tabela 97.8
AutoLISP ao EQUIVALENTE do COMANDO VBA das converses AUTOLISP de VBA + + - - *
*// = =/= = = ~ no 1+ + 1 1 - 1 abs ads Application.ListADS MsgBox alerta e e CAPTULO
NINETY-SEVEN do abs. INTRODUO A VBA no 2001 SYBEX do copyright de AUTOCAD 34,
Inc., Alameda, tabela 97.8 (continuada) AutoLISP do CA www.sybex.com do cond atan do fim

do fim de Chr do chr de Cint do atoi do atof CDbl do arxunload Application.UnloadARX ascii Asc
ao dictsearch seleto Dictionary.GetName do dictrename Dictionary.Rename do dictremove
Dictionary.Delete do dictnext Dictionaries.Item do dictadd Dictionaries.Add de cos Cos do caso
Atn do arxload Application.LoadARX do arx Application.ListARX dos angtos Utility.AngleToString
do angtof Utility.AngleToReal do ngulo Utility.AngleFromXAxis das converses de VBA, entupd
Entity.Update Eqv igual do entmake ActiveDocument.AddXXXX de Dictionary.GetObject * erro *
err o flutuador findfile CDbl do reparo, interno, ou de Cint do reparo de Dir do expt de Exp do
exp ^ que CONVERTE-SE DE AUTOLISP ao 2001 SYBEX do copyright de VBA 35, Inc.,
Alameda, tabela 97.8 (continuada) AutoLISP do CA www.sybex.com ao foreach das converses
de VBA para o getcfg do getangle Utility.GetAngle de Each/Next, getpoint getorient
Utility.GetPoint Utility.GetReal getreal do getkword Utility.GetKeyword Utility.GetOrientation do
getint Utility.GetInteger do getdist Utility.GetDistance do getcorner Utility.GetCorner do objeto
das preferncias do getenv que getstring a propriedade handent getvar do punho do graphscr
Application.Caption de Utility.GetString Application.GetVariable se str logand do itoa de
If/Then/Else do registro do registro de IsArray do listp de ReDim da lista de Ubound do ltimo e
minusp mnimo mnimo do mximo do mximo do imp do logior ou do lsh

Você também pode gostar