vba_excel

Embed Size (px)

DESCRIPTION

vba excel

Citation preview

  • Visual Basic for Applications: # 1

    Visual Basic for Applications

    Introduo uma linguagem de programao baseada na conhecida linguagem BASICEst concebida para funcionar em conjunto com diferentes aplicaes, de forma a potenciar a robustez das mesmasEnquadra-se nos ambientes de programao baseados no processamento de sequncia de eventos (event-driven programming)

    HistriaFoi inicialmente integrada com o Excel 5 em 1994 e a partir da a sua expanso para outras aplicaes foi gradualFoi com a sada do Office 97 em 1997 que a Microsoft concretizou um dos seus grandes objectivos: ter um ambiente de programao completamente integrado entre os seus quatro famosos produtos: Word, Excel, Access e PowerPointActualmente, o VBA j por si s um produto independente, que outras companhias podem adoptar e incorporar nas suas aplicaes

  • Visual Basic for Applications: # 2

    Variveis IDeclarao explcita de variveis

    Declarar uma varivel VAR: Dim VARDeclarar uma varivel VAR como sendo do tipo TYPE: Dim VAR As TYPE

    Declarao implcita de variveisPossibilidade de no declarar variveisVariveis no declaradas ou sem declarao de tipo tm por defeito o tipo VariantNo permitir o uso de variveis implcitas: Option Explicit

    Visibilidade e longevidade de uma varivelPublic: visvel em todos os mdulos e durante toda a execuoPrivate ou Dim: visvel dentro do seu mdulo e durante toda a execuoDim: visvel dentro do seu procedimento e durante a sua execuoStatic: visvel dentro do seu procedimento e durante toda a execuo

    ConstantesSystem-defined constants: True; False; Null; Empty; NothingIntrinsic constants (bibliotecas do VBA): Const LEFT_BUTTON = 1Symbolic constants: Const PI = 3,14

  • Visual Basic for Applications: # 3

    Variveis IITipo de variveis

    Variant tipo genricoByte 0 at 255Boolean True ou FalseInteger -32.768 at 32.767Long -2.147.483.648 at 2.147.483.647Single -3,402823E38 at -1,401298E-45 (para valores negativos)

    1,401298E-45 at 3,402823E38 (para valores positivos)Double -1,79769313486232E308 at -4,94065645841247E-324 (negativos)

    4,94065645841247E-324 at 1,79769313486232E308 (positivos)Currency -922.337.203.685.477,5808 at 922.337.203.685.477,5807Decimal +/-79.228.162.514.264.337.593.543.950.335 (sem casas decimais)

    +/-7,9228162514264337593543950335 (com casas decimais)Date 1 de Janeiro de 100 at 31 de Dezembro de 9999String 1 at aproximadamente 2 bilies de caracteres (65.400 se tamanho fixo)Type definido pelo utilizadorObject referncia a objectos

  • Visual Basic for Applications: # 4

    Operadores I

    Aritmticos+ (adio) - (subtraco e negao) * (multiplicao)/ (diviso) \ (diviso inteira) ^ (exponenciao)Mod (resto da diviso)

    Relacionais= (igual a) > (maior que) < (menor que) (diferente de) >= (maior ou igual)

  • Visual Basic for Applications: # 5

    Operadores IIPrecedncias

    Operador Operao

    ^ exponenciao- negao* , / multiplicao e diviso\ diviso inteiraMod resto da diviso+ , - adio e subtraco& concatenao= , > , < , , >= ,

  • Visual Basic for Applications: # 6

    ProcedimentosProcedimentos Sub

    [Public | Private] [Static] Sub nome ( [argumentos] ) [...][Exit Sub][...]

    End Sub

    Procedimentos Function[Public | Private] [Static] Function nome ( [argumentos] ) [As tipo]

    [...][nome = expresso][Exit Function] [...][nome = expresso]

    End Function

  • Visual Basic for Applications: # 7

    ArgumentosDeclarar argumentos

    [Optional] [ByRef | ByVal] [ParamArray] argumento[( )] [As tipo] [=valor_por_defeito]

    Passar e nomear argumentosExemplo: Function area (comp As Integer, alt As Integer) As IntegerPassar argumentos: var = area(5, 4)Nomear argumentos: var = area (alt:= 4, comp:= 5)

    Opes de declaraoByRef: declara que o argumento passado por referncia (o procedimento recebe o prprio endereo da varivel passada como argumento)ByVal: declara que o argumento passado por valor (o procedimento apenas recebe o valor da varivel passada como argumento)Optional: declara que o argumento no obrigatrio (esta declarao implica que os restantes argumentos sejam igualmente declarados como Optional)ParamArray: declara um nmero arbitrrio de argumentos no obrigatrios (esta declarao s pode ser utilizada como ltimo argumento na lista de argumentos)

  • Visual Basic for Applications: # 8

    ArraysDeclarar arrays

    Dim nome (limite_superior) As tipoDim nome (limite_inferior To limite_superior) As tipoOption Base 1

    Preencher arraysAtribuio directa por elementoFuno Array

    Arrays com mais do que uma dimensoDim nome (limite_superior_1, ... , limite_superior_n) As tipo

    Arrays dinmicosReDim: redefine os limites de um dado arrayRedim Preserve: redefine os limites de um dado array e preserva os valores nele existentes ( aplicvel apenas quando se redefine a ltima dimenso do array)LBound: devolve o limite inferior de um dado arrayUBound: devolve o limite superior de um dado array

  • Visual Basic for Applications: # 9

    Estruturas de DecisoExecuo condicionalIf condio_1 Then

    [...]...[ElseIf condio_n Then

    [...]][Else

    [...]]End If

    Mltiplos testesSelect Case expresso_a_testar

    Case lista_de_expresses_1[...]

    ...[Case lista_de_expresses_n

    [...]][Case Else

    [...]]End Select

    MacrosIIf (condio, valor_se_verdade, valor_se_falso)Switch (condio_1, valor_1, , condio_n, valor_n)Choose (ndice, valor_1, , valor_n)

  • Visual Basic for Applications: # 10

    Cdigo em CicloCiclos condicionais

    Do {While | Until} condio[...][Exit Do][...]

    Loop

    Do[...][Exit Do][...]

    Loop {While | Until} condio

    Ciclos numerveisFor contador = incio To fim [Step incremento]

    [...][Exit For][...]

    Next [contador]

    For Each elemento In coleco[...][Exit For][...]

    Next [elemento]

  • Visual Basic for Applications: # 11

    Funes Bsicas IConverso de dados

    CBool (expresso) CByte (expresso)CCur (expresso) CDate (expresso)CDbl (expresso) CInt (expresso)CLng (expresso) CSng (expresso)CVar (expresso) CStr (expresso)

    Testes sobre os dadosIsArray (varivel) IsDate (expresso)IsEmpty (varivel) IsNumeric (expresso)IsNull (varivel) IsMissing (argumento)TypeName (varivel) VarType (varivel)

    Caixas de mensagemMsgBox (mensagem [, ]) InputBox (mensagem [, ])

  • Visual Basic for Applications: # 12

    Funes Bsicas IIManipulao de strings

    Asc (string) Chr (cdigo)LCase (string) Len (string | varivel)Mid (string, incio [, comprimento]) Left (string, comprimento)Trim (string) LTrim (string)Str (nmero) Val (string)InStr ([incio,] string_geral, string_procura) StrComp (string1, string2 [, mtodo])

    Manipulao de datas e horasDate Year (data)Time Month (data)Now Day (data)DateSerial (ano, ms, dia) Hour (hora)TimeSerial (hora, minuto, segundo) Minute (hora)Weekday (data) Second (hora)

  • Visual Basic for Applications: # 13

    VBA e Excel IMacros

    Menu seguido da opo Gravar macros: botes e

    Executar e editar macros

  • Visual Basic for Applications: # 14

    VBA e Excel IIFormulrios

    Menu seguido das opes e Ligar clulas aos controlos: menu seguido daopo e doseparador Atribuir macros aos controlos:Menu especfico sobre o controlo seguido da opo

  • Visual Basic for Applications: # 15

    VBA e Excel IIIEditor do Visual Basic

    ProjectoPropriedadesCdigo

  • Visual Basic for Applications: # 16

    Cdigo VBA e Funes do ExcelCdigo VBA como funo do Excel

    Funes do Excel como cdigo VBA

  • Visual Basic for Applications: # 17

    Objectos IConceito

    Qualquer coisa que numa aplicao se pode ver e manipular de algum modo

    Formas de manipular um objectoAlterar o seu conjunto de propriedadesActivar mtodos especficos do objecto para executar determinadas tarefasAssociar procedimentos aos eventos que podem ocorrer sobre o objecto

    PropriedadesAs propriedades so os atributos que definem as caractersticas dos objectos

    ActiveCell.Formula = "=A1*10"Certas propriedades so elas mesmas objectos

    ActiveCell.Font.Italic = TrueExistem propriedades que so s de leitura

    col = ActiveCell.Column

  • Visual Basic for Applications: # 18

    Objectos IIMtodos

    Os mtodos so aces que descrevem o que os objectos podem fazerSo executados sobre os objectos e podem conter ou no argumentos

    ActiveCell.ClearActiveCell.AddComment "comentrio"

    EventosOs eventos so algo que acontece aos objectosOcorrem como resultado de aces do utilizador, do sistema ou do prprio cdigo

    Private Sub Worksheet_Activate()

    Classes e instnciasClasse de objectos: conjunto de objectos com as mesmas propriedades, com os mesmos mtodos e que respondem aos mesmos eventosInstncia: todo o objecto particular de uma classe

  • Visual Basic for Applications: # 19

    Objectos IIIHierarquia de objectos

    Application: objecto de topo da hierarquia de objectosCaminhos hierrquicos

    Application.Workbooks(Livro1).Worksheets(Folha1)Caminhos nicos podem ser abreviados

    Worksheets(Folha1)ActiveCell

    Collection: tipo de objecto que resulta da coleco de outros objectos Variveis como objectos

    Tipo de dados ObjectA instruo SetA constante NothingO operador IsA varivel Me

    Mltiplas aces sobre um objectoWith objecto[...]End With

  • Visual Basic for Applications: # 20

    Objectos WorkbookReferenciao

    [Application.]Workbooks(Livro1) [Application.]Workbooks(1)[Application.]ActiveWorkbook [Application.]ThisWorkbook

    Workbooks Collection[Application.]Workbooks.Add [Application.]Workbooks.Open(FileName)[Application.]Workbooks.Close [Application.]Workbooks.Count

    Propriedadesworkbook.Name workbook.Pathworkbook.FullName workbook.Saved

    Mtodosworkbook.Activate workbook.Saveworkbook.Close(SaveChanges, FileName) workbook.SaveAs(FileName) workbook.Protect(Password, Structure, Windows) workbook.Unprotect(Password)

    EventosPrivate Sub Workbook_Activate()Private Sub Workbook_Open()Private Sub Workbook_Newsheet(ByVal Sh As Object)

  • Visual Basic for Applications: # 21

    Objectos WorksheetReferenciao

    Sheets = Worksheets + Charts[ActiveWorkbook.]Worksheets(Folha1) [ActiveWorkbook.]Worksheets(1)[ActiveWorkbook.]ActiveSheet

    Worksheets Collection[ActiveWorkbook.]Worksheets.Add(Before, After, Count)[ActiveWorkbook.]Worksheets.Count

    Propriedadesworksheet.Name worksheet.Visible

    Mtodosworksheet.Activate worksheet.Copy(Before, After)worksheet.Delete worksheet.Move(Before, After)worksheet.Protect(Passwd, DrawingObjs, Contents) worksheet.Calculate

    EventosPrivate Sub Worksheet_Calculate()Private Sub Worksheet_Change(ByVal Target As Excel.Range)

  • Visual Basic for Applications: # 22

    Objectos RangeReferenciao

    [ActiveSheet.]Range(B2:C3) [ActiveSheet.]Range(A1, B2:C3)[ActiveSheet.]Range(Lucro) [ActiveSheet.]Range(B2, C3)[ActiveSheet.]Cells(1, 2) [ActiveSheet.]Range(B2:C3).Cells(1, 2)

    Propriedadesrange.Row range.Columnrange.Rows(Index) range.Columns(Index)range.Offset(RowOffset, ColumnOffset) range.Valuerange.Formula range.FormulaLocalrange.FormulaR1C1 range.FormulaR1C1Localrange.Address(RowAbsolute, ColumnAbsolute) range.Count

    Mtodosrange.Select range.Calculaterange.Copy(Destination) range.Cut(Destination)range.Clear range.ClearCommentsrange.ClearContents range.ClearFormatsrange.FillDown range.FillUprange.FillLeft range.FillRight