Você está na página 1de 26

VBA e Excel I

Macros
Menu <Ferramentas> seguido da opo <Macro> Gravar macros: botes <Terminar gravao> e <Referncia relativa> Gravar macros uma forma simples e rpida de visualizar os objectos, as propriedades ou os mtodos envolvidos em certas operaes sobre as quais queremos escrever cdigo

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 26

VBA e Excel II
Formulrios
Menu <Ver> seguido das opes <Barras de ferramentas> e <Formulrios> Permite inserir controlos bsicos nas folhas de clculo para personalizar certas tarefas

Ligar clulas a controlos


Menu <Formatar> seguido da opo <Controlo...> e do separador <Controlo>

Atribuir macros a controlos


Menu especfico sobre o controlo seguido da opo <Atribuir macro...> Aos controlos de formulrios apenas possvel atribuir macros que so executadas quando ocorre o evento de ndole mais geral sobre o controlo (habitualmente o clique do rato)
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 27

VBA e Excel III


Editor do Visual Basic
Projecto Propriedades Cdigo: a opo (General) contm as declaraes e os procedimentos; cada objecto contm a lista de eventos a ele associado

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 28

VBA e Excel IV
Cdigo VBA como funo do Excel
Uma funo definida pelo utilizador no pode afectar clulas vizinhas (todo o cdigo que afecte clulas vizinhas ignorado)

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 29

VBA e Excel V
Funes do Excel como cdigo VBA
Propriedade WorksheetFunction No possvel usar funes do Excel que dupliquem funes prprias do VBA. Por exemplo, dever usar-se sempre a funo do VBA UCase em lugar da equivalente funo UPPER do Excel

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 30

Objectos I
Conceito
Qualquer coisa que numa aplicao se pode manipular de algum modo

Formas de manipular um objecto


Alterar o seu conjunto de propriedades Activar mtodos especficos do objecto para executar determinadas tarefas Associar procedimentos aos eventos que podem ocorrer sobre o objecto

Classes e instncias
Classe de objectos: conjunto de objectos com as mesmas propriedades, com os mesmos mtodos e que respondem aos mesmos eventos Instncia: todo o objecto particular de uma classe

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 31

Objectos II
Propriedades
As propriedades so os atributos que definem as caractersticas dos objectos ActiveCell.Formula = =A1*10 Certas propriedades so elas mesmas objectos ActiveCell.Font.Italic = True Existem propriedades que so s de leitura col = ActiveCell.Column

Mtodos
Os mtodos so aces que descrevem o que os objectos podem fazer So executados sobre os objectos e podem conter ou no argumentos ActiveCell.Clear ActiveCell.AddComment comentrio

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 32

Objectos III
Eventos
Os eventos so algo que acontece aos objectos Ocorrem em resultado de aces do utilizador, do sistema ou do prprio cdigo Os procedimentos correspondentes aos eventos tm todos a seguinte forma: Private Sub Objecto_Evento(argumentos) necessrio no confundir mtodos com eventos. Por exemplo, o mtodo Activate quando executado sobre um objecto implica a execuo do evento Activate do mesmo objecto: Worksheets(1).Activate Private Sub Worksheet_Activate()

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 33

Objectos IV
Hierarquia de objectos
Application: objecto de topo da hierarquia de objectos Caminhos hierrquicos Application.Workbooks(Livro1).Worksheets(Folha1) Caminhos nicos podem ser abreviados Workbooks(Livro1) ActiveCell

Coleco de objectos (Collection)


Tipo de objecto que resulta da coleco de outros objectos, no necessariamente do mesmo tipo Por exemplo, os objectos Workbooks e Worksheets so objectos do tipo Collection que contm respectivamente todos os objectos do tipo Workbook e Worksheet da aplicao

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 34

Objectos V
Variveis como objectos
Tipo de dados Object A instruo Set A constante Nothing O operador Is

Exemplo
Dim bool as Boolean Dim rng1 As Object, rng2 As Object Set rng1 = Cells(1,1) Set rng2 = Cells(2,2) bool = rng1 Is rng2 Set rng1 = Nothing bool = rng1 Is Nothing As Range bool = False para libertar memria bool = True

Uma varivel do tipo Object tambm fica com o valor Nothing se o objecto a ela associado for fechado/terminado/eliminado
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 35

Objectos VI
A varivel implcita Me
automaticamente disponibilizada em todos os mdulos de classe Referencia a instncia da classe onde o cdigo est a ser executado MsgBox Me.Name

Mltiplas aces sobre um objecto


With objecto [...] End With

Exemplo
With ActiveCell .Formula = =A1*10 With .Font .Italic = True .Bold = True End With End With
Ricardo Rocha DCC-FCUP

ActiveCell.Formula = =A1*10 ActiveCell.Font.Italic = True ActiveCell.Font.Bold = True

Visual Basic for Applications: # 36

Objectos Workbook I
Referenciao
[Application.]: caminho hierrquico implcito Workbooks(Livro1): referncia directa ao nome do livro Workbooks(1): referncia ao primeiro livro a ser aberto ActiveWorkbook: referncia ao livro que tem o foco ThisWorkbook: referncia ao livro onde est o cdigo a ser executado

Workbooks Collection
Workbooks.Open(FileName): mtodo que abre um livro existente Workbooks.Close: mtodo que fecha todos os livros abertos Workbooks.Count: propriedade que indica o nmero de livros abertos

Exemplo
ChDir \My documents\Excel Workbooks.Open Livro1

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 37

Objectos Workbook II
Propriedades
workbook.Name: nome do livro (s de leitura) workbook.Saved: indica se existem alteraes por guardar (pode ser colocada a True para evitar o menu de guardar alteraes)

Mtodos
workbook.Activate: torna o livro activo workbook.Save: guarda as ltimas alteraes workbook.Close(SaveChanges): fecha o livro workbook.Protect(Password, Structure, Windows): protege o livro no que diz respeito sua estrutura (as folhas no podem ser movidas, ocultas, mostradas, eliminadas, os nomes no podem ser alterados nem podem ser inseridas novas folhas) e/ou s janelas (as janelas no podem ser movidas, redimensionadas, ocultas, mostradas ou fechadas) workbook.Unprotect(Password): desprotege o livro

Exemplo
ThisWorkbook.Protect sap, True, False ThisWorkbook.Close SaveChanges:=True
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 38

Objectos Workbook III


Eventos
Private Sub Workbook_Open(): ocorre quando o livro aberto por aco do mtodo Open, ou por intermdio do utilizador Private Sub Workbook_Activate(): ocorre quando o livro passa a ser o livro activo por aco do mtodo Activate, ou por intermdio do utilizador quando abre o livro ou o selecciona Private Sub Workbook_Newsheet(ByVal Sh As Object): ocorre quando inserida uma nova folha (Sh referencia a nova folha)

Exemplos
Private Sub Workbook_Open() Application.Visible = False End Sub Private Sub Workbook_Activate() ThisWorkbook.Worksheets(Folha1).Activate End Sub Private Sub Workbook_NewSheet(ByVal Sh As Object) Sh.Move After:=Worksheets(Worksheets.Count) End Sub
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 39

Objectos Worksheet I
Referenciao
[ActiveWorkbook.]: caminho hierrquico implcito Worksheets(Folha1): referncia directa ao nome da folha Worksheets(1): referncia primeira folha no separador de folhas ActiveSheet: referncia folha que tem o foco

Worksheets Collection
Worksheets.Add(Before, After, Count): mtodo que adiciona novas folhas. Before especifica a folha antes da qual as novas folhas devem ser adicionadas; After especifica a folha depois da qual as novas folhas devem ser adicionadas (por defeito so adicionadas antes da folha activa); Count indica o nmero de folhas a adicionar (por defeito uma) Worksheets.Count: propriedade que indica o nmero de folhas existentes

Exemplo
Worksheets.Add After:=Worksheets(Worksheets.Count)

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 40

Objectos Worksheet II
Propriedades
worksheet.Name: nome da folha worksheet.Visible: visibilidade da folha
xlSheetVisible: visvel xlSheetHidden: oculta (corresponde a ocultar a folha utilizando os menus) xlSheetVeryHidden: invisvel (s utilizando cdigo possvel reverter o estado)

Mtodos
worksheet.Activate: torna a folha activa worksheet.Delete: elimina a folha worksheet.Copy(Before, After): copia a folha worksheet.Move(Before, After): move a folha worksheet.Protect(Passwd, DrawingObjs, Contents): protege a folha no que diz respeito aos seus objectos grficos e/ou ao seu contedo worksheet.Calculate: recalcula todas as frmulas presentes na folha. til para frmulas que utilizam funes volteis como AGORA() e HOJE()
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 41

Objectos Worksheet III


Eventos
Private Sub Worksheet_Change(ByVal Target As Excel.Range): ocorre quando uma ou vrias clulas so modificadas

Exemplos
Private Sub Worksheet_Change(ByVal Target As Excel.Range) For Each cel In Target cel.Interior.ColorIndex = 3 Next End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) For Each cel In Target cel.Value = ... entra em ciclo Next End Sub

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 42

Objectos Range I
Referenciao
[ActiveSheet.]: caminho hierrquico implcito Cells(1, 2): referncia clula na 1 linha e na 2 coluna (clula B1) Range(B2:C3): referncia directa ao intervalo B2:C3 Range(A1, B2:C3): referncia directa clula A1 mais o intervalo B2:C3 Range(Lucro): referncia directa clula ou intervalo com o nome Lucro Range(B2, C3): referncia ao intervalo B2:C3 (B2 o canto superior esquerdo e C3 o canto inferior direito) Range(B2:C3).Cells(1, 2): referncia clula na 1 linha e na 2 coluna dentro do intervalo B2:C3 (clula C2)

Exemplo
For ano = 1 To 100 Range(A & ano).Value = 1999 + ano Next ano
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 43

Objectos Range II
Propriedades
range.Row: nmero da primeira linha do range range.Column: nmero da primeira coluna do range range.Rows(): collection de todas as linhas do range range.Rows(Index): linha de ordem Index do range range.Columns(): collection de todas as colunas do range range.Columns(Index): coluna de ordem Index do range

Exemplo
Function LastRow(rng As range) With rng LastRow =.Rows.Count + .Row 1 LastRow =.Rows(.Rows.Count).Row End With End Function
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 44

Objectos Range III


Propriedades
range.Value: valores das clulas do range

Exemplo
Function MaxValue(rng As range) aux_array = rng.Value rng especifica uma nica clula If Not IsArray(aux_array) Then MaxValue = aux_array Exit Function End If rng especifica mais do que uma clula MaxValue = aux_array(1, 1) For Each aux In aux_array If aux > MaxValue Then MaxValue = aux Next aux End Function
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 45

Objectos Range IV
Propriedades
range.Formula | FormulaLocal | FormulaR1C1 | FormulaR1C1Local: frmulas das clulas do range

Exemplos
Range(A9).Formula = =SUM(A1:A8) Range(A9).FormulaLocal = =SOMA(A1:A8) aspas nas frmulas devem ser duplicadas Range(A1).Formula = =COUNTIF(B1:B9, >0) Range(A1).FormulaLocal = =CONTAR.SE(B1:B9; >0) o exemplo que se segue leva a que B9 =SUM(B1:B8) Range(A9:B9).Formula = =SUM(A1:A8) o exemplo que se segue leva a que A9 =SUM($A$1:$A$8) Range(A9).FormulaR1C1 = =SUM(R1C1:R8C1) Range(A9).FormulaR1C1Local = =SOMA(L1C1:L8C1) o exemplo que se segue leva a que A9 =SUM(A1:A8) Range(A9).FormulaR1C1 = =SUM(R[-8]C:R[-1]C) o exemplo que se segue leva a que A9 =SUM(A$1:$A8) Range(A9).FormulaR1C1 = =SUM(R1C:R[-1]C1)
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 46

Objectos Range V
Propriedades
range.Offset(RowOffset, ColumnOffset): desloca o range RowOffset linhas para cima/baixo e ColumnOffset colunas para a direita/esquerda range.Address(RowAbsolute, ColumnAbsolute): endereo do range range.Count: nmero de clulas do range

Exemplos
Range(C5:D10).Select Selection.Offset(-4, -2).Select Selection.Offset(3, 1).Range(B2).Select Set cel = Cells(1, 1) MsgBox cel.Address() MsgBox cel.Address(RowAbsolute:=False) A1:B6 C5 $A$1 $A1

Ricardo Rocha DCC-FCUP

Visual Basic for Applications: # 47

Objectos Range VI
Mtodos
range.Select: selecciona (Selection referencia o conjunto seleccionado) range.Calculate: recalcula frmulas range.Copy(Destination): copia o contedo range.ClearComments: remove comentrios range.ClearContents: remove contedos range.ClearFormats: remove formataes range.Clear: remove comentrios, contedos e formataes range.FillDown: copia o contedo da 1 linha para as restantes clulas (idntico a seleccionar a 1 linha e arrastar com o rato) range.FillUp: copia o contedo da ltima linha para as restantes clulas range.FillLeft: copia o contedo da ltima coluna para as restantes clulas range.FillRight: copia o contedo da 1 coluna para as restantes clulas

Exemplo
Range(A1:B5).Copy Range(E5) Range(A1:A10).FillDown
Ricardo Rocha DCC-FCUP

copia para E5:F9


Visual Basic for Applications: # 48

Objectos Control I
Propriedades comuns
Name: nome que identifica o controlo Caption: texto presente no controlo Left / Top: posio relativa ao canto superior esquerdo do formulrio/relatrio Height / Width: altura e comprimento do controlo BackColor / ForeColor: cor do fundo e cor do texto do controlo BackStyle: estilo do fundo do controlo (transparente/opaco) SpecialEffect: aparncia do controlo (com relevo, com profundidade, ...) Font: tipo de letra do controlo ControlTipText: texto de ajuda para quando se deixa o rato sobre o controlo TabIndex: ordem de navegao do controlo (utilizando a tecla Tab) TabStop: se False previne a navegao por intermdio da tecla Tab Visible: visibilidade do controlo Enabled: se False previne o controlo de receber o foco e responder a eventos Locked: se True previne o utilizador de editar o valor presente no controlo
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 49

Objectos Control II
UserForm
Show: apresenta o formulrio Hide: esconde o formulrio mas no o remove da memria Unload: remove o formulrio da memria

Text box
Text: texto presente na caixa de texto PasswordChar: caracter especial de edio para introduo de passwords EnterKeyBehavior: se True permite a edio em vrias linhas

Command button
Default: boto seleccionado por defeito quando se abre o formulrio Cancel: boto seleccionado por defeito no caso do formulrio ser cancelado

Option / check / toggle buttons


Value: True se seleccionado; False se no seleccionado; Null se no activo OptionValue: valor do boto no caso de estar inserido num grupo de opes
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 50

Objectos Control III


Combo / list boxes
RowSource: origem dos dados do controlo ColumnCount: nmero de colunas a apresentar ColumnWidths: tamanho de cada coluna BoundColumn: coluna dependente associada propriedade Value TextColumn: coluna dependente associada propriedade Text Value: valor da coluna dependente Text: valor presente na caixa ControlSource: clula ligada propriedade Value da caixa AddItem: mtodo que permite adicionar um novo item

Exemplos
ComboBox1.ColumnCount = 2 ComboBox1.RowSource = a1:b4 ComboBox1.BoundColumn = 1 ComboBox1.TextColumn = 2 ComboBox1.ControlSource = a6
Ricardo Rocha DCC-FCUP Visual Basic for Applications: # 51

Você também pode gostar