VBA Introdução

16
A introdução do capítulo 97 a VBA no 2001 SYBEX do copyright de AutoCAD, Inc., Alameda, básico visual do CA www.sybex.com para as aplicações (VBA) é integrada como uma parte padrão de AutoCAD 2002. Isto significa que você pode usar VBA para todas suas tarefas do desenvolvimento de AutoCAD, em vez (ou além) de ObjectARX e de AutoLISP. Se you.re já familiar com algum dialect de BASIC, achado de you.ll que VBA é fácil de aprender. Se you.re um colaborador seasoned de AutoLISP, você puder encontrar a maneira de VBA de fazer coisas para ser impar, mas após um quando fará o sentido. There.s uma tabela no fim deste capítulo que lhe ajudará traduzir conceitos de AutoLISP a seus equivalentes de VBA. Automatização Compreensiva De ActiveX. Código Da Escrita VBA. Usando Procedimentos. Variáveis e constantes. Controle Estruturas. Constr- Em Funções. Manipulação De Erro. Converter-se de AutoLISP a VBA. Se você quiser experimentar. Copyright o 2001 SYBEX, Inc., Alameda, CA www.sybex.com que começa começado com fontes do pacote de VBA Microsoft.s VBA duas coisas a AutoCAD. Primeiramente, there.s o motor próprio da língua de VBA, que faz o trabalho de interpretar todo o código de VBA você escreve quando sua aplicação é 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 código de VBA. Neste capítulo, you.ll aprendem os princípios da língua de VBA próprios. O capítulo seguinte, encontrado também neste CD, descreve o IDE e como integrar o código de VBA com o usuário interface.However de AutoCAD, você necessita saber apenas bastante sobre o IDE para datilografar dentro e executar procedimentos para seguir junto com este capítulo, assim here.s uma introdução rápida. Lançar o VBA IDE para começar começou, 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 básico 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 opções 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 combinação Alt+F11 chave move-o também do editor para trás para AutoCAD. Pressione Alt+F11 para ir para trás da janela principal de AutoCAD ao editor de VBA. Você pode também 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 verificação básica visual aberta do editor é selecionada. Criando um módulo novo em toda a hora dada, você pode ter mais de um projeto de VBA aberto em AutoCAD. (você não necessita ter nenhum projeto aberto, entretanto.) Todos os componentes em um projeto são carregados então o projeto é projeto de opened.A pode consistir em alguns destes componentes: . Módulos. Módulos da classe. UserForms que COMEÇA COMEÇADO COM 2001 SYBEX do copyright de VBA 3, Inc., Alameda, módulo do CA www.sybex.com A é um recipiente para a classe que de VBA code.A o módulo é o componente de VBA usado definir um tipo novo de object.A UserForm é um componente customizable da relação de usuário. Os módulos da classe são um tópico avançado, e you.ll aprendem sobre UserForms no capítulo

description

Comandos Básicos de Auto Lisp

Transcript of VBA Introdução

Page 1: VBA Introdução

A introdução do capítulo 97 a VBA no 2001 SYBEX do copyright de AutoCAD, Inc., Alameda, básico visual do CA www.sybex.com para as aplicações (VBA) é integrada como uma parte padrão de AutoCAD 2002. Isto significa que você pode usar VBA para todas suas tarefas do desenvolvimento de AutoCAD, em vez (ou além) de ObjectARX e de AutoLISP. Se you.re já familiar com algum dialect de BASIC, achado de you.ll que VBA é fácil de aprender. Se you.re um colaborador seasoned de AutoLISP, você puder encontrar a maneira de VBA de fazer coisas para ser impar, mas após um quando fará o sentido. There.s uma tabela no fim deste capítulo que lhe ajudará traduzir conceitos de AutoLISP a seus equivalentes de VBA. Automatização Compreensiva De ActiveX. Código Da Escrita VBA. Usando Procedimentos. Variáveis e constantes. Controle Estruturas. Constr- Em Funções. Manipulação De Erro. Converter-se de AutoLISP a VBA. Se você quiser experimentar. Copyright o 2001 SYBEX, Inc., Alameda, CA www.sybex.com que começa começado com fontes do pacote de VBA Microsoft.s VBA duas coisas a AutoCAD. Primeiramente, there.s o motor próprio da língua de VBA, que faz o trabalho de interpretar todo o código de VBA você escreve quando sua aplicação é 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 código de VBA. Neste capítulo, you.ll aprendem os princípios da língua de VBA próprios. O capítulo seguinte, encontrado também neste CD, descreve o IDE e como integrar o código de VBA com o usuário interface.However de AutoCAD, você necessita saber apenas bastante sobre o IDE para datilografar dentro e executar procedimentos para seguir junto com este capítulo, assim here.s uma introdução rápida. Lançar o VBA IDE para começar começou, 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 básico 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 opções 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 combinação Alt+F11 chave move-o também do editor para trás para AutoCAD. Pressione Alt+F11 para ir para trás da janela principal de AutoCAD ao editor de VBA. Você pode também 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 verificação básica visual aberta do editor é selecionada. Criando um módulo novo em toda a hora dada, você pode ter mais de um projeto de VBA aberto em AutoCAD. (você não necessita ter nenhum projeto aberto, entretanto.) Todos os componentes em um projeto são carregados então o projeto é projeto de opened.A pode consistir em alguns destes componentes: . Módulos. Módulos da classe. UserForms que COMEÇA COMEÇADO COM 2001 SYBEX do copyright de VBA 3, Inc., Alameda, módulo do CA www.sybex.com A é um recipiente para a classe que de VBA code.A o módulo é o componente de VBA usado definir um tipo novo de object.A UserForm é um componente customizable da relação de usuário. Os módulos da classe são um tópico avançado, e you.ll aprendem sobre UserForms no capítulo 99 (que está também neste CD), mas para agora, let.s críam apenas um módulo padrão. Este será um lugar onde você possa executar amostras do código. 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 módulo novo, um Module seleto da inserção dos menus do IDE, ou para estalar a tecla do módulo da inserção no padrão toolbar. Isto cría um módulo novo e abre esse módulo no editor. O editor pode indicar muitos módulos em uma vez, desde it.s uma aplicação múltipla da relação do original (MDI). 2. Quando you.re que aprende VBA, achado de you.ll provavelmente ele útil maximize o módulo you.re que trabalha com. Estale a tecla do maximize na janela Module1 para ampliá-la. Os módulos novos criadores e funcionando de um procedimento prendem o código de VBA, mas um módulo pode conter muitos do código. Em VBA, o código é quebrado acima em procedures.You.ll aprende sobre os tipos diferentes de procedimentos em um momento, mas para agora, let.s críam apenas um. 1. Na janela Module1, datilografe HelloWorld secundário e pressione a entrada key.VBA introduzirá parênteses no fim da definição do procedimento, e críam 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 secundárias do submarino e da extremidade. Observe que VBA o fornece com o Info rápido sobre os argumentos para a função 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 desobstruído o Info rápido. 4. Agora que you.ve criou um procedimento, procedimentos de funcionamento da lata do

Page 2: VBA Introdução

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 combinação do keystroke de Ctrl+G. CAPÍTULO NINETY-SEVEN. INTRODUÇÃO 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 indicação de MsgBox cría 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 diálogo para retornar ao VBA IDE. Se you.ve seguir junto com as instruções nesta seção, sua tela olhará como figura 97.2. Figura 97.1 os resultados de COMEÇAR do procedimento de HelloWorld COMEÇARAM 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 lançar o editor básico do Visual seleto básico 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 função e o nome do procedimento em um módulo. 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 função, mais alguns argumentos requeridos nos parênteses. CAPÍTULO NINETY-SEVEN. INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 6, Inc., Alameda, CA www.sybex.com para definir um uso variável não ofuscante mais o nome e o tipo variáveis. Para definir um uso constante Const mais o nome e os dados constantes. Para impedir que a soletração os erros críe variáveis não desejadas colocam a opção explícita no alto de cada módulo. Ao múltiplo de loja os artigos da informação declaram e usam uma disposição para um número fixo dos artigos, ou uma coleção para um número variável dos artigos. Para ramificar dentro de seu código use If.Then.Else ou selecione o caso. Para dar laços dentro de seu código use a para o laço para um número fixo das iterações, ou a dá laços para um número variável das iterações. Para indicar uma mensagem ao usuário use a função de MsgBox. Para pedir a entrada do usuário use a função de InputBox. Para segurar o uso dos erros no erro goTo dirigir todos os erros a uma armadilha do erro em seu código. Os procedimentos seu código de VBA são armazenados nos procedimentos, que eles mesmos são agrupados nos módulos. Os procedimentos vêm em dois sabores: procedimentos da função, e procedimentos secundários, funções chamadas geralmente justas e submarinos. Nesta seção, you.ll aprendem como criar e chamar ambos os tipos de procedimentos e como passar a informação para a frente e para trás entre procedimentos. Os PROCEDIMENTOS 7 copyright o 2001 SYBEX, Inc., Alameda, os submarinos e as funções a diferença entre submarinos e as funções do CA www.sybex.com são que as funções retornam um valor ao chamador, e os submarinos não . Realmente, it.s mais correto dizer que as funções podem retornar um valor, desde que você pode executar uma função com uma sintaxe que diga VBA para jogar afastado o valor do retorno. Este capítulo, embora, concentrará em aprender bastante VBA fazer tão rapidamente o trabalho útil como possível, sem escavar em cada canto da língua. Para uma discussão mais avançada de VBA, veja o manual de VBA Developer.s, à edição, por Ken Getz e microfone Gilbert (Sybex, 2001) ou dominar AutoCAD VBA, por Marion Cottingham (Sybex, 2001). Quando houver um artigo do Procedure da inserção no menu de VBA, it.s realmente desnecessário. That.s porque, porque você viu previamente para um submarino, it.s mais simples apenas datilografar dentro o keyword do submarino ou da função, 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 indicação do submarino da extremidade, e datilografe ShowSquare(). secundário. A indicação do submarino da extremidade aparece abaixo de sua indicação nova, assim como uma linha que divide o submarino precedente da extremidade da linha que você incorporou apenas. 2. Coloque o cursor abaixo da indicação do submarino da extremidade e do tipo função Return-Square().. A janela Module1 deve indicar as seguintes linhas novas, com uma linha horizontal que divide cada entrada: Argumentos secundários da função do fim de ReturnSquare() da função do submarino da extremidade de ShowSquare() nossos procedimentos de ShowSquare e de ReturnSquare ambos quadrado que um número forneceu pelo usuário. Para fazer este, você necessita equipa cada procedimento com um argumento de argument.An é um placeholder para a informação que será fornecida no runtime. Let.s vêem como os argumentos trabalham: 1. Vai adiante e adiciona o código a estes dois procedimentos para fazê-los entregar o square.Here.s a versão modificada: CAPÍTULO Secundário NINETY-SEVEN De ShowSquare(x). A INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 8, Inc.,

Page 3: VBA Introdução

Alameda, função do fim do CA www.sybex.com Debug.Print x * função 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 após 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 funções e submarinos. Para um submarino, você fornece simplesmente o nome do procedimento, seguido por todos os argumentos as tomadas do submarino, sem parênteses. Para chamar uma função da janela imediata, você usa? o operador seguiu por todos os argumentos as tomadas da função, cercadas por parênteses. Você pode pensar do? o operador como o What do meaning é o valor de?.. Embora ambos os procedimentos forneçam a mesma saída na amostra, usam métodos diferentes fornecer essa saída. 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 função atribui o resultado a seu próprio nome. Isto tem o efeito de fazer que o valor do retorno da função. Naturalmente, um procedimento pode chamar outros procedimentos. No seguinte exemplo, o procedimento de CallBoth executa ambos os outros dois procedimentos: Sub CallBoth(x) y não 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 variável local: um lugar para armazenar um pouco de informação (you.ll aprendem mais sobre variáveis na seção seguinte). Para chamar um procedimento da função dentro de um outro procedimento, você atribui o valor do procedimento da função a uma variável local. Você pode também executar um procedimento secundário usando o keyword especial da chamada, que no caso os argumentos de procedure.s devem ser incluídos nos parênteses. Isto é, as indicações ShowSquare 4 e a chamada ShowSquare(4) são 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 não são requeridos a, fonte a um procedimento. Além, você pode fornecer argumentos pela posição (de acordo com sua posição 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 função: A função Increment(Original, uma quantidade opcional = 1) incremento = original + função do fim de uma quantidade neste exemplo, original e quantidade é nomeada argumentos. Além, 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 não fornece um valor para o argumento de uma quantidade. Neste caso, o argumento de uma quantidade opta 1, e o resultado da função é 6 (tentativa ele você mesmo!). O terceiro exemplo omite também o argumento opcional, mas usos a sintaxe nomeada do argumento de Name:=Value fazer-lhe o espaço livre que informação 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. CAPÍTULO NINETY-SEVEN. INTRODUÇÃO 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 informação que você passa. Variáveis e constantes até agora, você haven.t aprendeu aproximadamente uma porção grande de a maioria de declarações de procedimento reais: tipos de dados. Tècnica, todos os argumentos e o retorno avaliam até este ponto foram variants.You podem pensar de um variant enquanto um tipo de dados de múltiplos propósitos que possa prender qualquer coisa. Nesta seção, you.ll vêem que há também uns tipos de dados special-purpose, as.well.as algumas outras maneiras armazenar dados do que em variáveis simples. Os tipos de dados VBA suportam dez tipos específicos 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

Page 4: VBA Introdução

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 à preensão variant da lata dos caráteres 2E31 dos outros tipos as.well.as (um valor especial para uninitialized variants e campos da base de dados) as VARIÁVEIS 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 variável, ou um retorno da função datilografe com como o keyword. Para o exemplo, você pôde reescrever os procedimentos de ShowSquare, de ReturnSquare, e de CallBoth esta maneira: ShowSquare(x secundário como o inteiro) Debug.Print x * função ReturnSquare(x do submarino da extremidade de x como o inteiro) como ReturnSquare longo = x * submarino CallBoth(x da função do fim de x como o inteiro) y não ofuscante como ShowSquare longo x y = submarino da extremidade de ReturnSquare(x) muitos colaboradores e autores que trabalham com VBA usa uma convenção nomeando que especifique caráteres do prefixo para nomes variáveis para indicar seu tipo. Para o exemplo, um inteiro pôde ser nomeado intX e um strName da variável da corda. Os exemplos mais adiantados neste capítulo didn.t usam uma convenção nomeando. De aqui sobre, embora, este capítulo usará o Reddick VBA que nomeia a convenção, que é provavelmente usado o mais extensamente nomeando a convenção na indústria. Você pode explicitamente declarar uma variável como o variant, e usa-o prender qualquer tipo de dados que VBA é capaz de handling.You pode também sair como a cláusula fora de uma declaração variável inteiramente, em que o caso VBA fornece implicitamente um variant.While que esta técnica o livra de ter que se preocupar também sobre tipos de dados, ele meios que VBA won.t fazem verificar no runtime para ver se os dados são razoáveis. Se você declarar uma variável como o inteiro e a tentar pôr uma corda de caráter nela, VBA dar-lhe-á um erro; se você declarar a mesma variável que o variant, VBA não tem nenhuma idéia que você didn.t o quer aceitar cordas. As variáveis do espaço e da vida declaradas dentro dos procedimentos são variáveis locais. They.re do uso somente a esse procedimento, e certamente, somente quando o procedimento funcionar. Mas VBA fornece diversas outras maneiras declarar variáveis. Este fragmento do código mostra a todos os a necessidade de you.ll geralmente: GstrSharedWithEveryone público explícito da opção como o mstrSharedRightHere confidencial da corda como o CAPÍTULO NINETY-SEVEN da corda. INTRODUÇÃO A VBA no 2001 SYBEX, Inc., Alameda, submarino público Procedure1(varArg1 do copyright de AUTOCAD 12 do CA www.sybex.com como o intI não ofuscante do variant) como o submarino confidencial Helper(varArg2 do submarino da extremidade do inteiro como o intJ de estática do variant) como o submarino que da extremidade do inteiro você pode quebrar abaixo estas declarações como segue: . o gstrSharedWithEveryone é uma variável pública (chamada uma variável global em versões mais adiantadas de VBA). Esta variável pode ser usada por todo o procedimento em qualquer módulo no projeto. o mstrSharedRightHere é uma variável do módulo-nível. Esta variável pode ser usada por todo o procedimento no módulo onde it.s definiu. varArg1 e varArg2 são argumentos locais. Podem ser usados somente pelos procedimentos cuja na lista do argumento aparecem. o intI é uma variável local. Pode ser usado somente pelo procedimento em que é definido. o intJ é também uma variável local. Pode ser usado somente pelo procedimento em que é definido. Estes público de distinction.between, módulo-nível, e variables.is local consultaram geralmente como ao espaço do variable.Using o exemplo precedente, o gstrSharedWithEveryone tem o espaço global, o mstrSharedRightHere tem o espaço do módulo, e o intI tem o espaço local. There.s também um segundo fator a considerar em declarar as variáveis, aquela da vida. As variáveis globais e do módulo do espaço têm a vida do projeto: São criados quando o projeto é carregado, e se você ajustar um valor em uma destas variáveis, mantêm esse valor até que o projeto esteja descarregado (ou você ajusta deliberadamente um outro valor nelas). As variáveis locais têm 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 estática (como mostrado para o intJ acima) declarar uma variável local com o projeto lifetime.What este meios é que o valor da variável persiste através das chamadas ao procedimento. Se você o funcionar o ajudante mais de uma vez (e contem o código adicional, não mostra aqui, para atribuir um valor à variável), achado de you.ll que o intJ contem o último valor que você se ajusta nele, melhor que reinitialized cada vez. AS VARIÁVEIS E AS CONSTANTES 13 copyright o 2001 SYBEX, Inc., Alameda, CA www.sybex.com a indicação que explícita da opção você pode ter observado a linha opção explícita no exemplo do código na seção precedente. Esta é uma indicação de VBA que você possa introduzir em alguns de seus módulos do código (uma vez por o módulo, e pela

Page 5: VBA Introdução

convenção no alto). O efeito desta indicação deve dizer a VBA que você pretende declarar explicitamente todas suas variáveis antes de as usar. Se você omitir a opção explícita, VBA criará automaticamente um variant-tipo variável para toda a variável que você se usar sem declaração. Esta opção pode protegê-lo de encontro a irritar e duro-à-encontra o erro. Para o exemplo, se você don.t tiver o jogo explícito da opção, este é VBA legal: Função Oops() como LongVariableName não ofuscante longo como o inteiro LongVariableName = 4 Oops = função mesmo que it.s legal, a função como escrita retorne 0, não 16 do fim de LongVariableName * de LongVarriableName, porque um dos nomes variáveis é soletrado diferentemente do que os outros dois, fazendo com que VBA atribua-lhe o armazenamento separado. Se você tentar funcionar este procedimento em um módulo com jogo explícito da opção, embora, you.ll começam um erro imediato da compilação: Variável não definida de VBA. Você pode verificar para ver se há erros de compilação em qualquer altura que dentro em VBA selecionando elimina erros do Compile ACADproject. Ajustar a opção explícita é assim importante que there.s uma maneira dizer VBA para fazer este para você em cada módulo novo. 1. Os Options seletos das ferramentas do VBA menus.You drop-down vêem a caixa de diálogo das opções do editor, mostrada em figura 97.4. 2. Verifique a caixa de verificação variável da declaração reque (pelo defeito it.s unchecked) e you.ll nunca têm que preocupar-se sobre incluir a opção explícita outra vez você mesmo. Faça a isto a primeira coisa que você faz após AutoCAD instalando, antes que você escreva todo o código em tudo. CAPÍTULO NINETY-SEVEN. A INTRODUÇÃO 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 diálogo das opções do editor suporta constants.names para os valores que a mudança de won.t durante seu application.You pode usar constantes fazer seu código mais readable. Para o exemplo, mesmo que VBA doesn.t forneçam uma função automática aos graus do converso em radianos, it.s fácil bastante de escrever um: Função DegreesToRadians1(dblDegrees como o dobro) _ como dobro DegreesToRadians1 = (dblDegrees/180) * função que de 3.14159 fins o underscore (_) seguido pela combinação da chave de entrada (.) serve como um caráter da linha-continuação em VBA, assim que as primeiras duas linhas deste exemplo são uma linha tanto quanto o intérprete de VBA. AS VARIÁVEIS E AS CONSTANTES 15 copyright o 2001 SYBEX, Inc., Alameda, CA www.sybex.com embora it.s fácil bastante de ver o que este exemplo faz, você possa fazer lhe um bocado mais desobstruído usando uma constante representar o número mágico: A função DegreesToRadians2(dblDegrees como o dobro) _ como Const dobro Pi = 3.14159 DegreesToRadians2 = (dblDegrees/180) * função do fim do Pi gosta de variáveis, constantes pode ser declarada com local, módulo, ou espaço global. Se você Pi needed em muitos lugares, você puder o definir como uma constante global preferivelmente: Const público Pi = 3.14159 a função DegreesToRadians3(dblDegrees como o dobro) _ como dobro DegreesToRadians3 = (dblDegrees/180) * disposições da função do fim do Pi você pode agrupar variáveis de VBA em coleções de arrays.numbered das variáveis do mesmo tipo. Para declarar uma disposição, você diz simplesmente a VBA quantos elementos terá: StrK(1 não ofuscante a 5) porque a corda isto cría uma disposição, strK, com o armazenamento para cinco cordas, numerado 1 5.You direto pode atribuir valores aos membros de uma disposição, ou lê-los para fora outra vez: ArrayDemo() Secundário strK(1 Não 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) disposições do submarino da extremidade tendem a ser de uso limitado em VBA; em muitos exemplos, as coleções (discutidas abaixo) provam mais useful.However, they.re crítico para uma coisa em AutoCAD: o CAPÍTULO NINETY-SEVEN de VBA. A INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 16, Inc., Alameda, respresentação do CA www.sybex.com de um ponto no espaço modelo de AutoCAD.s é como uma disposição de doubles.Here.s o que o código para extrair uma linha em AutoCAD pôde olhar como: DrawLine() secundário ptStart(1 não ofuscante a 3) como ptEnd(1 não 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 disposições mantem a informação necessária encontrar um ponto. Os primeiros, segundos, e terceiros elementos da preensão da disposição, respectivamente, do x -, y -, e z-coordenam do ponto no espaço modelo de AutoCAD.s. As coleções das coleções VBA fornecem uma alternativa às disposições mantendo-se a par de artigos múltiplos. Ao contrário das disposições, que são projetadas prender as coisas que podem ser identificadas pelo número, as coleções são projetadas para access.You aleatório podem pensar de uma coleção 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 coleções:

Page 6: VBA Introdução

Coluna não ofuscante secundária de CollectionDemo() como coleção ajustada coluna = coleção nova. Adicione três artigos à coleção 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 VARIÁVEIS 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 coleção col.Remove 2. E mostre quantos artigos são deixados o submarino da extremidade de Debug.Print col.Count embora você declare uma coleção com o mesmo keyword não ofuscante que você usa para outras variáveis, você deva também inicializar a coleção. That.s porque uma coleção é um tipo de objeto variable.one que tem umas propriedades mais complexas do que apenas uma posição do armazenamento para dados. Inicializar a variável é a finalidade desta linha: Ajuste coluna = coleção que nova o keyword novo diz VBA para criar um objeto do tipo coleção, e o keyword do jogo diz VBA que uso de you.ll a variável da coluna consultar a este objeto novo. Adicione é um método do objeto da coleção. Este método 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 coleção. Neste caso, em you.re adicionando os três números 9, 5, e 12. As duas seções seguintes da amostra mostram que você pode recuperar artigos pela chave ou pelo índice (posição) 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 método do defeito do objeto da coleção. Finalmente, você pode usar o método remover remover um artigo de uma coleção, e a propriedade da contagem para mostrar o número atual dos artigos em uma coleção. Os objetos, os métodos, e as propriedades You.ll funcionam em objetos, em métodos, e em propriedades durante todo VBA. Se you.ve olhar o modelo do objeto de AutoCAD, you.ve funcionam já através de todos os três destes: . Um objeto é qualquer tipo de variável que tem o comportamento complexo. Para o exemplo, o objeto do original em AutoCAD representa uma lima extraindo inteira. CAPÍTULO NINETY-SEVEN. INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 18, Inc., Alameda, CA www.sybex.com. Um método é qualquer coisa que um objeto sabe a. Os métodos do objeto do original incluem o aberto e Regen methods.You pode pensar dos métodos 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. Além aos objetos forneceu por AutoCAD, por VBA tem um número de objetos do built-in, including o objeto you.ve da coleção visto apenas. Mais tarde neste capítulo you.ll aprenda como usar os módulos da classe criar seus próprios objetos. Controle as estruturas embora a língua original do BASIC falte muitas características, a maioria daquelas deficiências foram remediados em versões modernas do BASIC, tais como VBA.VBA é agora uma língua de programação estruturada desenvolvida, com um jogo cheio de estruturas do controle para dar laços, ramificar, e fluxo do controle. Esta seção descreverá as estruturas do controle que são o mais frequentemente úteis nas aplicações. A estrutura de If.Then.Else para segurar ramificar, VBA usa uma estrutura de If.Then.Else, como mostrado no seguinte exemplo: Função IfDemo(intNum como o inteiro) como a corda se intNum = 1 então IfDemo = One. IntNum de ElseIf = 2 então IfDemo = Two. IntNum de ElseIf = 3 então IfDemo = Three. Dunno outro de IfDemo = de I. Termine se a função nesta estrutura, cada uma se ou o keyword de ElseIf estiver seguido por uma condição booleana algo que pode ser avaliado como ou rectificam ou False.When VBA encontra uma circunstância que avalíe como verdadeiro, ele do fim executar as indicações que seguem essa circunstância. Se você CONTROLAR AS ESTRUTURAS 19 copyright o 2001 SYBEX, Inc., Alameda, CA www.sybex.com incluem uma cláusula outra, que se ajuste das indicações seja executada se nenhuma das circunstâncias for verdadeira. Observe que uma extremidade se a indicação 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 laços profundamente aninhados seletos da indicação If.Then.Else do caso podem ser muito difíceis de decifrar. Beware sempre do código difícil, porque it.s um nightmare potencial do maintainability: Se você necessitar modificar tal código, toda a possibilidade de introduzir um erro novo é demasiado grande. Felizmente, VBA fornece uma estrutura ramificando alternativa para tais situações, o caso seleto statement.Here.s um exemplo da sintaxe seleta da indicação do caso: Função 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 Três e cinco. Caso 7, 9 CaseDemo = 7 ou 9. Caso dunno outro de CaseDemo = de I. _ extremidade seleto extremidade função seleto caixa indicação trabalh compar especific

Page 7: VBA Introdução

expressão (este exemplo, intNum) cada caixa por sua vez, até que encontr um que matches.At que apont, código que particular caixa est executed.Here, do retorno valor procedimento est CAPÍTULO NINETY-SEVEN. A INTRODUÇÃO 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 coleção dos valores (7, 9).You podem usar a indicação seleta do caso com qualquer tipo de variável. Os valores dos casos individuais devem ser o mesmo tipo de dados que a variável. Para laços às vezes seu programa necessitará executar os mesmos tempos do múltiplo da operação; para o exemplo, adicionar um logo a todos os desenhos relacionados a um project.VBA fornece diversas estruturas dando laços para repetitiva executar o código. Para o laço é talvez o mais simples destes, fornecendo uma maneira executar um jogo das indicações um número predeterminado das épocas. Para o laço trabalha incrementando ou decrecendo um contador: IntI não ofuscante secundário de ForDemo() como o inteiro. Simples para o laço: o intI é incrementado perto. um cada vez que o laço é executado para o intI = intI seguinte do intI de 1 a 5 Debug.Print. Para o laço com incremento: neste caso. 2 são adicionados ao intI com cada laço para o intI = 1 a 5 intI seguinte do intI da etapa 2 Debug.Print. Inverta para o laço: aqui, o intI é. decrecido cada vez através do laço para o intI = 5 a 1 submarinos seguintes da extremidade do intI do intI de etapa -1 Debug.Print para laços são os mais úteis quando você sabe exatamente quantas vezes você necessita executar o laço. Frequentemente, uso a de you.ll para que o laço processe os elementos em uma disposição. Se you.re que trata de uma coleção, você puder ser melhor fora de usar a dê laços, como mostrado na seção seguinte. CONTROLE o 2001 SYBEX do copyright das ESTRUTURAS 21, Inc., Alameda, CA www.sybex.com fazem laços fazem laços fornecem uma alternativa para aos laços quando você don.t sabe quantas vezes você necessita executar o laço mas para saber quando você necessita parar. O mais simples dão laços executam uma indicação tão por muito tempo como alguma circunstância é verdadeira e param-na assim que for falsa: DoDemo1(intInput secundários como o inteiro) fizerem quando intInput do intInput 0 Debug.Print; intInput = intInput - 1 figura 97.6 do submarino da extremidade do laço mostra a saída deste laço. Figura 97.6 a saída de um simples dá laços no semicolon no fim da indicação de Debug.Print diz VBA para pôr resultados adicionais sobre a mesma linha da saída. Você pode também causar a dá laços para ser executado tão por muito tempo como uma condição particular é falsa se usando até em vez de quando: DoDemo2(intInput secundários como o inteiro) até o intInput = 0 intInput de Debug.Print; intInput = intInput - 1 submarino da extremidade do laço faz laços permite também que você teste a circunstância na extremidade do laço melhor que no alto, como mostrado nos dois exemplos seguintes: DoDemo3(intInput Secundário Como o CAPÍTULO NINETY-SEVEN Do Inteiro). A INTRODUÇÃO 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 laço quando o submarino secundário DoDemo4(intInput da extremidade do intInput 0 como o inteiro) fizer o intInput de Debug.Print; intInput = intInput - 1 laço até que o intInput = 0 submarinos A da extremidade dê laços com o teste em sua extremidade executará sempre ao menos uma vez, mesmo se seria saltada inteiramente se o teste estiver no início do laço. O operador goTo além a ramificar e a dar laços, 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 execução recomece em um ponto diferente (uma etiqueta) no procedimento: Sub o In de GoToDemo() Debug.Print o programa demostrativo. Cópia goTo dos This won.t de GoHere Debug.Print. GoHere: Os This de Debug.Print imprimirão. Termine o submarino neste exemplo, GoHere é uma etiqueta, uma indicação nonexecutable que sirva marcar somente um lugar no procedimento. Embora usando uma indicação goTo seja associado frequentemente com o sloppy, duro-à-decifre programando, esta indicação é essencial na manipulação de erro em VBA, como you.ll vêem mais tarde neste capítulo. Se não, você pode quase sempre evitar indicações goTo em seu código. Constr- em funções que de VBA VBA inclui uma variedade larga de functions.While interno esta tampa todo da seção can.t, você aprenderá sobre as mais úteis here.You pode querer rever o 2001 SYBEX do copyright das FUNÇÕES 23 de BUILT-IN VBA, Inc., Alameda, seção do Functions. do CA www.sybex.com do VBA a ajuda em linha para um list.You mais detalhado pode também usar o browser do objeto (veja o capítulo 99 neste CD) ver todas as funções de VBA. Os operadores VBA incluem a sustentação para uma variedade dos operadores. A tabela 97.2 sumaria estes operadores. Embora VBA inclua as réguas de precedência razoavelmente complexas do operador que governam a ordem em que os operadores são avaliados, você pode sempre usar parênteses forçar uma ordem particular das operações. Exponenciação do MEANING do OPERADOR dos operadores da tabela 97.2

Page 8: VBA Introdução

VBA ^ (2^3 = 8) - negação, ou subtração * Multiplicação (2*3 = 6)/divisão (divisão de 6/3 = de 2) \ inteiro (8\3 = 2) modulus da modificação + concatenação da adição & da corda (A. & B. = AB.) = igualdade lógica (se A = 5) desigualdade lógico (se um 5) mais grande do que = mais grande do que ou o igual à comparação semelhante da corda do wildcard são equivalência do objeto nao lógica não e lógica e ou o exclusive lógico ou de Xor ou o CAPÍTULO lógico NINETY-SEVEN. INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 24, Inc., Alameda, implicação lógica Eqv Info rápido de equivalência lógico do imp dos operadores da tabela 97.2 (continuada) VBA do CA www.sybex.com com a variedade das funções internas que VBA fornece, você pôde encontrá-lo difícil de recordar os argumentos que você tem que fornecer para fazer cada trabalho da função. That.s porque VBA fornece o Info rápido, uma maneira de alertá-lo na tela para os argumentos a uma função. Figura 97.7 mostras Info rápido na ação. Figura 97.7 VBA Info rápido neste exemplo, o argumento alerta é requerido. Os outros argumentos são opcionais, como mostrado pelos suportes quadrados que cercam cada argumento. As teclas como o argumento devem ser um dos valores na enumeração interna VbMsgBoxStyle, que você pode ver usando o browser do objeto ou começando incorporar o argumento. Finalmente, o valor do retorno da função será um dos valores permitidos pela enumeração de VbMsgBoxResult. Como você trabalha com VBA, de you.ll o achado Info rápido provavelmente muito útil. Se você alcançar o ponto onde você aprendeu os argumentos para cada função e Info rápido se estiver tornando intrusive, você pode incapacitá-lo selecionando o Editor dos Options das ferramentas. As funções VBA da relação de usuário fornecem duas funções que são extremamente úteis para criar uma relação de usuário a seus procedimentos. A função de MsgBox indica uma caixa de diálogo na tela, e retorna a informação sobre que tecla o usuário estalou para demitir a caixa de diálogo. A função de InputBox alerta o usuário para a informação. a função de MsgBox e de InputBox faz a tecnologia do uso ofMicrosoft.s IntelliSense para antecipar suas necessidades, em uma maneira similar a verificar automático do período e da gramática encontrado na palavra de Microsoft. BUILT-IN VBA FUNCIONA 2001 SYBEX de 25 copyright, Inc., Alameda, CA www.sybex.com que a função 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 título fornecem o texto e subtitulam-no para a caixa de diálogo. O argumento das teclas controla a aparência da caixa de diálogo; aceita uma série das constantes que você pode ver verificando a ajuda de IntelliSense para ver se há a função. Os últimos dois argumentos permitem que você especifique uma lima da ajuda e ajude ao tópico ser usado se o usuário pressionar F1 quando a caixa de diálogo estiver indicada. Figura 97.8 mostra a caixa de diálogo produzida pela seguinte indicação: Unable De MsgBox para conservar a lima, _ vbAbortRetryIgnore + vbCritical, erro do File. Figura 97.8 a caixa de diálogo da amostra de MsgBox o valor do retorno de uma chamada à função de MsgBox é uma constante que indique que tecla o usuário estalou. Embora estas constantes sejam numéricas, você deve sempre usar as constantes internas de VBA avaliar este valor do retorno. Que os makes seu código mais readable, e o protegem de encontro às mudanças futuras potenciais aos valores literais das várias constantes. O procedimento de MsgBoxDemo mostra esta técnica. IntRet não ofuscante secundário 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. CAPÍTULO NINETY-SEVEN. A INTRODUÇÃO 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 função 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 título controlam o texto e o subtítulo da caixa de diálogo. O argumento do defeito fornece um valor do retorno do defeito, e os dois argumentos seguintes permitem que você especifique onde a caixa de diálogo parecerá em screen.As um exemplo, figura 97.9 mostram a caixa de diálogo gerada pela seguinte chamada: O Enter de InputBox um número, alerta do Numeric, 27 o valor do retorno da função de InputBox é um variant que contem o valor que o usuário datilografou no controle de edição na caixa de diálogo. Figura 97.9 as funções VBA da corda de InputBox da amostra suportam uma variedade larga da manipulação functions.Historically da texto-corda, os dialects do BASIC foram muito fortes na corda que segura, e VBA não é nenhuma exceção. A tabela 97.3 mostra o mais importante destas funções. 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

Page 9: VBA Introdução

RESULTADOS da FUNÇÃO das funções da corda de algum VBA o valor do ASCII do primeiro caráter em strX. Chr(n) retorna uma corda cujo o valor do ASCII seja n. InStr(Start, str1, str2) retorne a posição em str1 onde str2 ocorre como um substring. Começos que olham o começo da posição. LCase(strU) retorna a tradução lowercase do strU. Len(strX) retorna o número dos caráteres em strX. LTrim(strX) remove os espaços principais de strX. Mid(strX, começo, comprimento) retorna uma corda dos caráteres do comprimento que começam no começo da posição em strX. Right(strX, n) retornos os caráteres de n que do fim direito de strX. RTrim(strX) removem os espaços arrastando dos retornos de strX. Space(n) uma corda que consiste em n espaça. Trim(strX) remove conduzir e arrastar espaços dos retornos de strX. UCase(strL) a tradução caixa das funções matemáticas VBA de strL. inclui a maioria das funções matemáticas comuns (além aos operadores matemáticos esse you.ve visto já). A tabela 97.4 alista o mais importante destas funções. A tabela 97.4 RESULTADOS matemáticos Abs(x) da FUNÇÃO das funções 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 logarítmo natural do CAPÍTULO NINETY-SEVEN do x.. A INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 28, Inc., Alameda, tabela 97.4 do CA www.sybex.com (continuada) funções matemáticas Rnd(x) de algum VBA retorna um número aleatório 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 funções trigonometric estejam expressados nos radianos. As funções VBA do date/Time têm uma seleção das funções para ajudar-lhe trabalhar com datas e épocas. It.s também possível fazer sua própria aritmética da data e da hora, uma vez que você compreende como as datas e os tempos são data de stored.All e variáveis do tempo é pontos flutuando double-precision, e conter um número de dias e dias parciais desde uma data zero arbitrária. Isso significa que você pode adicionar 7, para o exemplo, a uma variável da data, e começa o mesmo dia na seguinte semana. A tabela 97.5 mostra algumas das funções internas que lhe ajudarão trabalhar com datas e épocas em seu código. Dois destas funções, de DateAdd e de DateDiff, trabalho com intervalos. Os códigos permissíveis do intervalo são mostrados na tabela 97.6. A tabela 97.5 alguns de RESULTADOS Time() da FUNÇÃO das funções 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, número, data) adiciona o número especificado dos intervalos à data especificada. DateDiff(Interval, Date1, Date2) retorna o número 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 mês y do ano q m do INTERVALO do CÓDIGO dos códigos do intervalo da tabela 97.6 do CA www.sybex.com da manipulação 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 código de VBA segura todos os erros que ocorrerem no curso de sua aplicação. Meio dos erros don.t necessariamente que código escrito you.ve do bad.. Em VBA, it.s frequentemente necessário provocar erros no curso normal de uma aplicação. Para o exemplo, para determinar se there.s um diskette em uma movimentação, it.s o mais simples tentar apenas escrever uma lima a essa movimentação e interceptar o erro que ocorre se a movimentação estiver vazia. Nesta seção, you.ll aprendem como desenvolver o código com manipulação de erro e ver como usar o err e eliminar erros de objetos para derivar a informação sobre erros. Usar-se no comportamento goTo do defeito do erro VBA.s em resposta aos erros é completamente simples: It.s projetou parar operações e notificar o usuário. Para o exemplo, suponha-o funcionar esta função da janela imediata com uma entrada de 0: Função ErrorDemo1(intX como o inteiro) como inteiro ErrorDemo1 = CAPÍTULO NINETY-SEVEN da função do fim de 10/intX. INTRODUÇÃO 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 usuários da extremidade v o código em seu projeto, se houve um erro ou não, usando a proteção do projeto. Dos menus de VBE, escolha propriedades do Project das ferramentas, selecione a aba da proteção, e verifique o projeto do fechamento para ver se há a caixa de verificação da visão. Na caixa de diálogo que relata o erro runtime, estalar a tecla da extremidade terminará simplesmente a execução de todo o código, quando estalar a tecla eliminar erros suspenderá a execução do código e destacará a linha que causou o erro. Em a maioria de aplicações, este comportamento do defeito é uso de unacceptable.You.ll geralmente o VBA na indicação goTo do erro emitir todos os erros a um ponto particular (etiqueta) em seu

Page 10: VBA Introdução

código, e em negócio com os erros lá, para impedir que a manipulação de erro do defeito de VBA.s faça exame sobre. A função ErrorDemo2 mostra como esta pôde ser realizada para nossa função da amostra. Função ErrorDemo2(intX como o inteiro) como o inteiro no erro HandleErr goTo ErrorDemo2 = 10/intX ExitHere: Retire A Função 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 divisão pelo Zero zero de MsgBox não é uma entrada legal. Caso MsgBox Outro Err.Number &. . & Err.Description, _ vbCritical, Error Em ErrorDemo2. Função seleta Here.s do fim de ExitHere do resumo da extremidade uma análise passo a passo desta função. 1. Sobre a indicação goTo do erro diz a VBA que caso que de todo o erro, deve recomeçar a execução na etiqueta HandleErr. 2. A função continua então com sua operação normal. 3. Se nada for erradamente, a indicação da função da saída será a última indicação a ser executada. 4. Se qualquer erro ocorrer, a execução continua em HandleErr. 5. A indicação seleta do caso faz uma decisão baseada no número do erro (veja a seção seguinte para uma discussão do objeto do err). 6. A função inclui uma mensagem especial para um erro particular, divisão por 0, que o desenhador da função antecipava. 7. Para todo o outro erro, a função afixa uma mensagem da informação ao usuário. Este doesn.t fornece todo o excesso adicional da informação isso que VBA fornece pelo defeito, mas segurando o erro, a função impede que a execução esteja parada. 8. A indicação de ExitHere do resumo cancela a condição de erro e permite que a execução continue na etiqueta de ExitHere. Sempre retirando a função no mesmo ponto, você pode evitar alguns problemas futuros da manutenção. O esqueleto demanipulação usado nesta função é típico da manipulação de erro de VBA. Se you.re que constroem uma aplicação para a distribuição a outros, you.ll quiserem incluir um alimentador do erro similar a este em cada procedimento. CAPÍTULO NINETY-SEVEN. INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 32, Inc., Alameda, CA www.sybex.com o objeto no código demanipulação da amostra, você do err pode ter observado as referências a Err.Number e a Err.Description. Estas são duas propriedades do objeto do err, uma parte self-contained de funcionalidade construída em VBA. Apenas porque AutoCAD tem um modelo do objeto (discutido extensivamente no capítulo 98 neste CD), vba próprio fornece alguns objetos. Se um erro ocorrer em seu código, 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 número do número do MEANING da PROPRIEDADE do erro o mais recente. Texto da descrição 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 formulário, a fonte seja MSForms. Número 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 código é o objeto eliminar erros. O objeto eliminar erros suporta um único método, a cópia, que permite que seu código emita uma mensagem à janela imediata. Se você figura de can.t para fora de what.s que vai erradamente quando o código misbehaving, você puder usar o objeto eliminar erros ajudar para fora a coisas da sorte. Para o exemplo, se there.s um lngCount variável que esteja começando o jogo a um valor inesperado, você puder fazer com que seu código imprima o valor atual da variável à 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 código no editor. Quando os usuários interagem com sua aplicação, won.t vêem 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 não é uma recolocação para AutoLISP. Há ainda muitas coisas que são fáceis de fazer em AutoLISP mas está difícil ou impossível de VBA.You shouldn.t suponha que VBA é a tecnologia preferível apenas porque it.s mais novo. Na outra mão, a facilidade de projetar caixas de diálogo com o UserForms (coberto no capítulo 99) e a acessibilidade de VBA fazem-lhe uma língua compelindo para as aplicações simples que requerem um usuário que interface.You pode se encontrar código existente movendo de AutoLISP parcialmente ou inteiramente às utilidades novas de VBA para empregar características 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 línguas de programação. Se o familiar com AutoLISP, achado de you.re de you.ll as equivalências na tabela 97.8 útil como você vier até a velocidade em VBA. Tabela 97.8 AutoLISP ao EQUIVALENTE do COMANDO VBA das conversões AUTOLISP de VBA + + - - * *// = =/= = = ~ não 1+ + 1 1 - 1 abs ads Application.ListADS MsgBox alerta e e CAPÍTULO NINETY-SEVEN do abs. INTRODUÇÃO A VBA no 2001 SYBEX do copyright de AUTOCAD 34, Inc., Alameda, tabela 97.8 (continuada)

Page 11: VBA Introdução

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 conversões 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 conversões 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 preferências 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 mínimo mínimo do máximo do máximo do imp do logior ou do lsh