lvgangqiang's picture From lvgangqiang rss RSS  subscribe Subscribe

VBA & Excel 



 
Views:  14072
Downloads:  152
Published:  February 26, 2008
 
3
save to favorite
ask author to add audio Ask author to add audio
Share plick with friends Share
mark as inappropriate Mark as inappropriate
 
Related Plicks
Introduction to EXCEL VBA Part I

Introduction to EXCEL VBA Part I

From: lvgangqiang
Views: 24321 Comments: 0

 
 Implementing Legacy Statistical Algorithms in a Spreadsheet Environment

Implementing Legacy Statistical Algorithms in a Spreadsheet Environment

From: lvgangqiang
Views: 3886 Comments: 0

 
Excel VBA Programming for Solving Chemical Engineering Problems

Excel VBA Programming for Solving Chemical Engineering Problems

From: lvgangqiang
Views: 28403 Comments: 1

 
See all 
 
More from this user
 Computer Technology 202 Applications of Spreadsheets

Computer Technology 202 Applications of Spreadsheets

From: lvgangqiang
Views: 3539
Comments: 0

Excel VBA Programming for Solving Chemical Engineering Problems

Excel VBA Programming for Solving Chemical Engineering Problems

From: lvgangqiang
Views: 28403
Comments: 1

Introduction to EXCEL VBA Part I

Introduction to EXCEL VBA Part I

From: lvgangqiang
Views: 24321
Comments: 0

Design Optimization With  Excel

Design Optimization With Excel

From: lvgangqiang
Views: 7734
Comments: 0

VBA教程

VBA教程

From: lvgangqiang
Views: 16951
Comments: 0

 Implementing Legacy Statistical Algorithms in a Spreadsheet Environment

Implementing Legacy Statistical Algorithms in a Spreadsheet Environment

From: lvgangqiang
Views: 3886
Comments: 0

See all 
 
Place your Ad here for $2.00 a month
Sample Ad
Advertise your business on myplick.
Only $2.00 a month.
 
 URL:          AddThis Social Bookmark Button
Embed Thin Player: (fits in most blogs)
Embed Full Player :
 
 

Name

Email (will NOT be shown to other users)

 

 
 
Comments:
 
 
Notes:
 
 
Slide 1: Primer on VBA & Excel for Discrete-Event Simulation VBA & Excel.ppt 1
Slide 2: Visual Basic for Applications • VBA a significant subset of the standalone 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 VBA & Excel.ppt 2
Slide 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 VBA & Excel.ppt 3
Slide 4: Accessing VBA in Excel • Tools  Macros  Visual Basic Editor • Enter VBA through the navigation buttons in the top toolbars “Design mode” is the time during which no code from the project is running and events from Excel or your project will not execute. Visual Basic Editor VBA & Excel.ppt VBA Design Mode 4
Slide 5: VB Edit Window Project Explorer Code Window Property Inspector VBA & Excel.ppt 5
Slide 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 VBA & Excel.ppt 6
Slide 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 VBA & Excel.ppt 7
Slide 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) VBA & Excel.ppt 8
Slide 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 VBA & Excel.ppt 9
Slide 10: Arrays • Dim vect(1 to 100) as Integer Dim Elf(0 to 5, 0 to 20) as String • You can also dynamically allocate and reallocate an array Dim Calendar() as Integer ReDim Calendar (1 to 31) as Integer VBA & Excel.ppt 10
Slide 11: Control Structures • Decisions If anyDate < Now Then anyDate = Now End If Next, consider If … Then … Else VBA & Excel.ppt 11
Slide 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=X Else X=0 End If VBA & Excel.ppt 12
Slide 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 VBA & Excel.ppt Notice that the “cases” can be constants, ranges, conditions and variables; this is a powerful control structure that we will use to select events to execute 13
Slide 14: Loops/Iterations Do {While|Until} …condition statements… Loop ------------------------------------------Do statements… Loop {While|Until} …condition VBA & Excel.ppt 14
Slide 15: Loops(cont’d.) For counter = start To end [Step increment] …statements Next counter -------------------------------For Each element In group …statements Next element VBA & Excel.ppt 15
Slide 16: Exiting Control Structures For J = 1 To 10 Step 2 [statement block] Exit For Optional statements to [statement block] allow early exit from the Next J loop before the termination condition ----------------------Do Use with caution, [statement block] reluctantly. Exit Do [statement block] Loop Until Check = False VBA & Excel.ppt 16
Slide 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. VBA & Excel.ppt 17
Slide 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 VBA & Excel.ppt 18
Slide 19: Procedures • Sub name(arguments) (i.e., subroutine) – no value returned in the sense of a “function” – Called when needed Call mySub(param1, param2) • Function name(arguments) AS type (i.e., function) – value returned – assign return value to function name X = myFunction(2, 7, Z) VBA & Excel.ppt 19
Slide 20: Subs • Subs can also have Public or Private scope (default is Public) • Basic syntax {Public|Private} Sub name(arguments) [statements…] Optional way to leave the Sub Exit Sub before reaching the End statement [statements…] End Sub VBA & Excel.ppt 20
Slide 21: Functions • Functions can also have Public or Private scope (default is Public) • Basic syntax {Public|Private} Function fname(arguments) AS type [statements…] Fname returned to module fname = valu with value “valu” Exit Function [statements…] End Function Optional way to leave the Function before reaching the End statement VBA & Excel.ppt 21
Slide 22: Arguments for Procedures • Pass by Reference (default) means that changes to the value of the variable will be returned Sub stuff(item As String, price as Integer) • Pass by Value means only the value is passed so the original variable is unchanged Sub stuff(ByVal item As String, ByVal price as Integer) VBA & Excel.ppt 22
Slide 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. VBA & Excel.ppt 23
Slide 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. Worksheets(“mySheet”).Cells(2,20) = VBA.Abs(Fudge) Worksheets(“mySheet”).Cells(I,J) = VBA.Abs(Fudge) Worksheets(“mySheet”).Range(“T2”)=VBA.Abs(Fudge) Range is general – see next page VBA & Excel.ppt This is how you address VBA intrinsic functions 24
Slide 25: Ways to use .Range Method Range("A1") Range("A1:B5") Range("C5:D9,G9:H16") Range("A:A") Range("1:1") Range("A:C") Range("1:5") Range("1:1,3:3,8:8") Range("A:A,C:C,F:F") Cell A1 Cells A1 through B5 A multiple-area selection Column A Row 1 Columns A through C Rows 1 through 5 Rows 1, 3, and 8 Columns A, C, and F VBA & Excel.ppt 25
Slide 26: Reading from a Worksheet • To do 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” VBA & Excel.ppt 26
Slide 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 W = WorksheetFunction.Max(0, W + S - a) VBA & Excel.ppt 27
Slide 28: Running the Code • Your modules will as appear as Macros that can be run from Excel under Tools  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) VBA & Excel.ppt 28
Slide 29: Useful tools in the Debug menu Debugging Setting break points causes code to stop when the point is reached (F5 to continue) Passing the cursor over variables shows their current value VBA & Excel.ppt 29
Slide 30: IN-CLASS EXAMPLE An apostrophe indicates a comment These variables are global since they are declared before any Sub or Function Dim Clock As Double ' simulation clock Dim NextFailure As Double ' time of next failure event Dim NextRepair As Double ' time of next repair event Dim S As Double ' system state Dim Tlast As Double ' time of previous event Dim Area As Double ' area under S curve Public Function Timer() As String ' Determine the next event and advance time If NextFailure < NextRepair Then Timer = "Failure" Clock = NextFailure NextFailure = 1000000 Else Timer = "Repair" Clock = NextRepair NextRepair = 1000000 End If End Function VBA & Excel.ppt Notice that Function must be typed Value "Failure" is returned as Timer, the name of the function. 30
Slide 31: Public Sub MainProgram() ' Program to generate a sample path for the reliability example Dim NextEvent As String S=2 Clock = 0 Tlast = 0 Area = 0 NextFailure = WorksheetFunction.Floor(6 * Rnd(), 1) + 1 NextRepair = 1000000 NextEvent is local to this Sub since it is declared within the Sub Note use of an Excel function Do Until S = 0 NextEvent = Timer Select Case NextEvent Case "Failure" An Until loop and a Select Case Call Failure statement Case "Repair" Call Repair End Select Loop MsgBox ("System failure at time " _ & Clock & " with average # components " & Area / Clock) End Sub VBA & Excel.ppt 31
Slide 32: Public Sub Failure() 'Failure event Area = Area + (Clock - Tlast) * S Tlast = Clock S=S-1 If S = 1 Then NextFailure = Clock + WorksheetFunction.Floor(6 * Rnd(), 1) + 1 NextRepair = Clock + 2.5 End If End Sub VBA & Excel.ppt 32
Slide 33: Public Sub Repair() 'Repair event Area = Area + (Clock - Tlast) * S Tlast = Clock S=S+1 If S = 1 Then NextRepair = Clock + 2.5 NextFailure = Clock + WorksheetFunction.Floor(6 * Rnd(), 1) + 1 End If End Sub VBA & Excel.ppt 33
Slide 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. VBA & Excel.ppt 34
Slide 35: FYI –useful solution to exercise Finding/Creating a Sheet Dim found As Boolean Dim sheetNext As Worksheet ' Set up mySheet sheet for output found = False For Each sheetNext In Worksheets If sheetNext.Name = “mySheet" Then found = True Exit For End If Next sheetNext If found = True Then Worksheets(“mySheet").Select ActiveSheet.UsedRange.Clear Else Worksheets.Add ActiveSheet.Name = “mySheet" End If VBA & Excel.ppt 35

   
Time on Slide Time on Plick
Slides per Visit Slide Views Views by Location
close
Please fill out the form below. You will be asked to make your payment to Myplick (Eastar Technologies) via Paypal. Your request will be processed within 24 hours after your submission.
 
Title (max 25 characters)
Link (placed on title)
Content (max 100 characters)
You have successfully submitted your ad request. Please send your payment to ericandlei@myplick.com via PAYPAL.
Ad submission failed. Please report the problem to ericandlei@myplick.com.