E N D
1. VBA & Excel.ppt 1 Primer on VBA & Excel for Discrete-Event Simulation
2. VBA & Excel.ppt 2 Visual Basic for Applications VBA a significant subset of the stand-alone Visual Basic programming language
It is integrated into Microsoft Office applications (and others, like Arena)
It is the macro language of Excel
You can add
Forms for dialog boxes with user input
Classes for object definitions
Modules containing procedures
3. VBA & Excel.ppt 3 VBA & Excel for Discrete-Event Simulation Advantages
VBA is a full-featured programming language
You have access to Excel functions for computation and Excel for storing and analyzing outputs – including USER INTERACTION!
Disadvantages
VBA is interpreted, not compiled, so execution is slow (can be overcome by compiling VB)
Excel functions can be buggy
4. VBA & Excel.ppt 4 Accessing VBA in Excel Tools ? Macros ? Visual Basic Editor
Enter VBA through the navigation buttons in the top toolbars
5. VBA & Excel.ppt 5 VB Edit Window
6. VBA & Excel.ppt 6 Structure of VBA Project Modules are collections of VBA code
Procedures (Subroutines - Subs) and Functions
Declarations come before any Subs or Functions that are global to the Module
UserForms are graphic objects for user input and output; we will not have to work with UserForms
7. VBA & Excel.ppt 7 Variables Declare by Dim varname As Type
Better to use Data Types: Dim amount As Double ‘note double precision is useful for us!
Dim year As Integer Dim name As String
Other data types: Boolean, Byte, Currency, Date
Default (no type) is Variant
Option Explicit forces all variables to be declared
8. VBA & Excel.ppt 8 Variables(cont’d.) Can declare type by appending a symbol:% - integer & - long integer ! - single # - double@ currency $ - string
Can modify scope (outside Subs & Fcns)
Private L As Integer(only current module)
Public billsPaid As Currency (available to any module)
9. VBA & Excel.ppt 9 Constants & Statics [Public|Private] Const constantName [As type] = expression
Value cannot be changed
Public Const PI = 3.1, NumPLANETS = 9
Oops, make that 8 as of August 2006!
Static causes variables in Subs and Functions to retain their values (normally lost when you exit Sub or Function)
Static yourName As String
10. VBA & Excel.ppt 10 Arrays Dim vect(1 to 100) as IntegerDim Elf(0 to 5, 0 to 20) as String
You can also dynamically allocate and reallocate an arrayDim Calendar() as IntegerReDim Calendar (1 to 31) as Integer
11. VBA & Excel.ppt 11 Control Structures Decisions If anyDate < Now Then anyDate = Now End If Next, consider If … Then … Else
12. VBA & Excel.ppt 12 Decisions(cont’d.) If Index = 0 Then X = X + 1 Y = VBA.Sqr(X)Else If Index = 1 Then Y = VBA.Sqr(X)Else If Index = 2 Then Y = XElse X = 0 End If
13. VBA & Excel.ppt 13 Decisions(cont’d.) Select Case IndexVariable Case 0 statements… Case 1 to 10 statements… Case Is < 0 statements… Case NumSteps statements… Case Else statements…End Select
14. VBA & Excel.ppt 14 Loops/Iterations Do {While|Until} …condition statements… Loop-------------------------------------------
Do statements… Loop {While|Until} …condition
15. VBA & Excel.ppt 15 Loops(cont’d.) For counter = start To end [Step increment] …statements
Next counter
--------------------------------
For Each element In group …statements
Next element
16. VBA & Excel.ppt 16 Exiting Control Structures For J = 1 To 10 Step 2 [statement block] Exit For [statement block]Next J-----------------------Do
[statement block] Exit Do [statement block]Loop Until Check = False
17. VBA & Excel.ppt 17 Exit Command Details
Exit Do Provides a way to exit a Do...Loop statement. It can be used only inside a Do...Loop statement. Exit Do transfers control to the statement following the Loop statement. When used within nested Do...Loop statements, Exit Do transfers control to the loop that is one nested level above the loop where Exit Do occurs.
Exit For Provides a way to exit a For loop. It can be used only in a For...Next or For Each...Next loop. Exit For transfers control to the statement following the Next statement. When used within nested For loops, Exit For transfers control to the loop that is one nested level above the loop where Exit For occurs.
Exit Function Immediately exits the Function procedure in which it appears. Execution continues with the statement following the statement that called the Function.
Exit Sub Immediately exits the Sub procedure in which it appears. Execution continues with the statement following the statement that called the Sub procedure.
18. VBA & Excel.ppt 18 Code Modules Excel Objects (ThisWorkbook, Sheet#)
Modules
Typically we put our code here
A Module is a collection of Subs and Functions
Insert ? Module
More:
Class Modules (see “master” used for simlib)
User Forms
19. VBA & Excel.ppt 19 Procedures Sub name(arguments) (i.e., subroutine)
no value returned in the sense of a “function,” but variables are modified.
Called as needed via Call mySub(param1, param2)
Function name(arguments) AS type (i.e., function)
value returned
assign return value to function name: e.g.,X = myFunction(2, 7, Z)
20. VBA & Excel.ppt 20 Subs can also have Public or Private scope (default is Public)
Public Sub MM1_main() this is a common way to begin a sub that is “public” and all variables to be communicated to the routine calling it are public.
Basic syntax{Public|Private} Sub name(arguments) [statements…] Exit Sub [statements…]End Sub Subs
21. VBA & Excel.ppt 21 Functions Functions can also have Public or Private scope (default is Public)
Public Function Timer() As String ‘e.g., Timer returned as Failure
Basic syntax{Public|Private} Function fname(arguments) AS type [statements…] fname = valu Exit Function [statements…]End Function
22. VBA & Excel.ppt 22 Pass by Reference (default) means that changes to the value of the variable will be returnedSub stuff(item As String, price as Integer)
Pass by Value means only the value is passed so the original variable is unchangedSub stuff(ByVal item As String, ByVal price as Integer) Arguments for Procedures
23. VBA & Excel.ppt 23 Some Useful Code for Interacting with Excel The following are some pieces of code that are useful for doing VBA with Excel.
See the code on the course web site for other examples.
Basic_Simulation_Modeling.xls
IOE574-startup.xls
… others yet to come.
24. VBA & Excel.ppt 24 Writing to a Sheet Put the absolute value of the variable Fudge in row 2 (or I), column 20 (or J) of the Worksheet named mySheet.
25. VBA & Excel.ppt 25 Ways to use .Range Method
26. VBA & Excel.ppt 26 Reading from a Worksheet To read in a value, use the .Value method, applying the same ideas used for writing: X = Worksheets(“mySheet”).Range(“T2”).Value
note: T = column 20, so T2 is col. 20, row2
Excel likes the (column, row) order rather than (row, column) when using “Range”
27. VBA & Excel.ppt 27 Use an Excel Function VBA has a limited number of built-in functions, but you can access the plethora of Excel worksheet functions.
This example uses the Excel Max function
28. VBA & Excel.ppt 28 Running the Code Your modules will as appear as Macros that can be run from Excel underTools ? Macro ? Macros ? dialogue-box
Perhaps the easiest way to run the code is to place your cursor in the module you want to run and press the Run Sub/UserForm button. (there is a green play button on the toolbar, too)
29. VBA & Excel.ppt 29 Debugging
30. VBA & Excel.ppt 30
31. VBA & Excel.ppt 31
32. VBA & Excel.ppt 32
33. VBA & Excel.ppt 33
34. VBA & Excel.ppt 34 Finishing Up Exercise: Write a Sub that inserts a worksheet named “Count” into the Workbook, then writes the numbers 1,2,…,10 in the first row, the first ten columns. Use a loop to do this.
35. VBA & Excel.ppt 35 Finding/Creating a Sheet