Download presentation
Presentation is loading. Please wait.
Published byAlexandra Morrin Modified over 9 years ago
1
AE6382 VBA - Excel l VBA is Visual Basic for Applications l The goal is to demonstrate how VBA can be used to leverage the power of Excel u VBA syntax and usage u the Excel VB programming environment u the Excel object model u an application
2
AE6382 VBA - Excel l What advantage is there in using VBA u extend Excel – new functions u makes it possible to use the Execl GUI environment u makes it possible to respond to events (mouse, …) u makes Windows programming API accessible u Excel can be used to control Automation servers (other software components that expose an API through COM) u by understanding how to use the Excel object model with VBA it is a small step to using Excel as an Automation server (controlled by other program)
3
AE6382 VBA - Excel l In order to run VBA code your security settings must be properly set u Tools | Macro | Security… u At least Medium security must be set – each macro will require user verification to run l Signed code can be run in all cases
4
AE6382 VBA – The Basics l Data types u Integer2 byte integer u Long4 byte integer u Single4 byte floating point u Double8 byte floating point u Currency8 byte real u Stringupto 64K characters u Byte1 byte u Boolean2 byte true or false u Date8 bytes u Object4 bytes – an object reference u Variant16 bytes + 1 byte / character
5
AE6382 VBA – The Basics l The variant data type is special – a variant can hold any type of data l A variable declared as variant (the default) can hold anything l The actual type of the data is kept in the data l It adds flexibility but at a cost – it requires more processing at compute time to determine what it is and how to handle it
6
AE6382 VBA – The Basics l Variables u must start with a letter u can contain _ and numbers u cannot exceed 255 characters in length l Within a procedure declare a variable using If a variable is not declared it will be created when used, the type will be Variant Use Option Explicit in the declarations section to require declaration of variables l VBA variables have scope restrictions u variables declared in a procedure are local to that procedure variables declared in a module can be public or private Dim variable Dim variable As type
7
AE6382 VBA – The Basics l String variables l The first form is variable length l The second form is limited to 50 characters u the variable will be space filled if string is < 50 characters u the string will be truncated if the contents are > 50 characters the Trim and RTrim functions are useful for working with fixed length strings Boolean variables contain either True or False Dim variable As String Dim variable As String * 50
8
AE6382 VBA – The Basics l The Object type is used to store the address (a reference) of an object u this form can be used for any object u this is referred to as late-binding, the object types are checked at runtime (slower) l The declaration of a specific object is u this form will only store Excel Worksheet objects, an attempt to put anything else into it will result in an error u this is referred to as early-binding, the object types are checked at compile time (faster) Dim variable As Object Dim variable As Worksheet
9
AE6382 VBA – The Basics l Arrays are declared using l Arrays can be multidimensional l The lower bound starts at zero u can explicitly specify lower bound can use Option Base command to reset to something other than 0 The last form above is a dynamic array – it must be dimensioned using ReDim before it can be used Use ReDim Preserve to retain any existing entries in array - only the upper bound of array can be changed Dim A (1 To 10) As Double Dim B (1 To 10, 1 To 10) As Double Dim C (4,4,4) As Integer Dim D () As Double Option Base 1
10
AE6382 VBA – The Basics l Constants are declared using l Constants have the same scope limitations as variables Const pi = 3.14159 Const pi As Double = 3.14159
11
AE6382 VBA – The Basics l User defined data types can only be defined in the declarations section of a Module can be Public or Private in scope l Declare variable with this type l Referencing fields Public Type SystemInfo CPU As Variant Memory As Long ColorBits As Integer Cost As Currency PurchaseDate As Date End Type Dim MySystem As SystemInfo MySystem.CPU = “Pentium” If MySystem.PurchaseDate > #1/1/2006# Then … End If
12
AE6382 VBA – The Basics l Watch out for u it is equivalent to Dim a, b, c As Integer Dim a As Variant Dim b As Variant Dim c As Integer
13
AE6382 VBA – The Basics l Objects l VBA can use pre-defined objects – such as intrinsic Excel objects VBA can create user-defined objects – Class Modules l Declaring a variable to contain an object u the first form declares that the variable will contain a reference to an object of the named class u the second form declares the variable then creates an instance of the class l To instantiate a class Dim variable As class Dim variable As New class Set variable = New class
14
AE6382 VBA – The Basics l Objects l To declare a variable that will refer to an instance of the Excel Worksheet class l To put a reference into it l This fragment will print the name of the worksheet “Sheet1” Dim ws1 As Worksheet Set ws1 = Worksheets(“Sheet1”) Dim ws1 As Worksheet Set ws1 = Worksheets("sheet1") Debug.Print ws1.Name
15
AE6382 VBA – The Basics l Objects - Collections l There is a special form of objects known as Collections l They contain references to other objects and collections l It is the mechanism by which the object hierarchy is defined l By convention, collection names are usually plural u Workbooks – list of Workbook objects u Worksheets – list of Worksheet objects u Range – list of objects that represent cells, columns, rows l The following example iterates through Workbooks collection For Each ws In Worksheets Debug.Print ws.Name Next
16
AE6382 VBA – The Basics l Statements l VBA implements common programming statements u logical statements u looping statements u expressions
17
AE6382 VBA – The Basics l Logical statements l The If Then Else statement is the basic logic test If a>10 Then … End If If a>10 Then … ElseIf a<0 Then … Else … End If If a>10 Then … Else … End If
18
AE6382 VBA – The Basics l Logical statements l The Select statement can be used to replace a multi-way if statement Select Case expression Case expr1 … Case expr2 … Case Else … End Select
19
AE6382 VBA – The Basics l Loop statements l Various Do loop forms Do While expr … Loop Do Until expr … Loop Do … Loop While expr Do … Loop Until expr
20
AE6382 VBA – The Basics l Loop statements l A common For loop For i=1 To 10 Debug.print i Next i For i=1 To 10 Step 2 Debug.print i Next i
21
AE6382 VBA – The Basics l Loop statements l Another For loop l Commonly used to iterate through collections For Each element In group … Next element For Each ws In Worksheets Debug.Print ws.Name Next
22
AE6382 VBA – The Basics l Procedures l Procedures in VBA are either Macros or Functions u a macro does not return a value u a function will return a value u Property functions (Get and Let) are used in Class Modules to provide access to private properties Sub Name() … End Sub Function Name() As Double … End Sub
23
AE6382 VBA – The Basics l Dealing with runtime errors l The On Error statement will trap errors l The error name is a label in the code In the error code a Resume statement will cause the statement that caused the error to be executed again In the error code a Resume Next statement will restart execution on the statement after the one that caused the error … On Error GoTo label … On Error GoTo check … check: …
24
AE6382 VBA – Programming Environment l Excel (all Office components) have a VBA programming environment, VBIDE l It consists of u the Visual Basic Editor u an Object Browser u debugging support l These are accessed from the Excel menu l There is also a set of CHM files that document the components and object models of Office (for version 10) u the Excel file is named VBAXL10.CHM u XLMAIN10.CHM is the main help file for Excel and contains VBAXL10.CHM within it u each version of Office has its own set of files u http://www.ae.gatech.edu/classes/ae6382/documents/MS_Scripting/Office10/
25
AE6382 VBA – Programming Environment l To start the Visual Basic Editor from Excel select u Tools | Macro | Visual Basic Editor
26
AE6382 VBA – Programming Environment l Once in the VB Editor – to start the Object Browser select u View | Object Browser
27
AE6382 VBA – Programming Environment l In the Object Browser to select only the Excel objects use the pull down menu at the upper left
28
AE6382 VBA – Programming Environment l To view information on the Worksheet object and its Name property
29
AE6382 VBA – Programming Environment l The usual way to create code is to double-click on one of the Worksheet or Workbook objects in the Project Explorer and enter the code.
30
AE6382 VBA – Programming Environment l By using the menu item Insert it is possible to add other types of procedure containers u forms (GUI) u modules for library-like procedures u class modules for defining classes
31
AE6382 VBA – Excel Objects l Excel exposes all of its functionality through objects l These are directly accessible to the VBA programmer l They are also visible to other applications through COM Automation u matlab u scripting languages u other Office components
32
AE6382 VBA – Excel Objects l The top level object is the Workbook. l A workbook corresponds to an open XLS file l Each Workbook object is kept in the Workbooks collection l To open a workbook file use u Dim wb = Workbooks.Open(“filename) To close a workbook use the Close method on the workbook object or the Workbooks entry Other methods for use with Workbooks are Save and SaveAs
33
AE6382 VBA – Excel Objects l The Worksheet corresponds to a Sheet l Each Worksheet object is kept in the Worksheets collection l To add a single new Worksheet u Dim ws = Worksheets.Add(count:=1) ws.Visible = False will hide the sheet ws.Delete will delete the sheet Worksheets(“Sheet1”).Delete will delete a sheet
34
AE6382 VBA – Excel Objects l The Range object (collection) corresponds to a set of cells l To set a value into a cell u Worksheets(“Sheet1”).Range(“A5”).Value = 3.14159
35
AE6382 VBA – An Example l An example found on the Internet http://www.ae.gatech.edu/classes/ae6382/samples/vba/
36
AE6382 VBA – An Example A view from the Visual Basic Editor
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.