410 likes | 424 Views
Spreadsheet-Based Decision Support Systems. Chapter 12: Recording Macros. Prof. Name name@email.com Position (123) 456-7890 University Name. Overview. 12.1 Introduction 12.2 Macros 12.3 Customizing toolbars and menu options
E N D
Spreadsheet-Based Decision Support Systems Chapter 12: Recording Macros Prof. Name name@email.com Position (123) 456-7890 University Name
Overview • 12.1 Introduction • 12.2 Macros • 12.3 Customizing toolbars and menu options • 12.4 Summary
Introduction • Recording a macro. • Writing simple VBA procedures. • Creating event procedures. • Assigning macros to drawing objects in Excel. • Customizing toolbars and menu items by assigning macros.
Macros • Recording Macros • The VBA Code • Event Procedures
Recording Macros • Macros are technically defined as units of VBA code. • Macros can be thought of as a way to automate a series of actions in a spreadsheet application. • Macros can either be created directly with VBA code in the Visual Basic Editor, or recorded in Excel. • To record a macro, we must know exactly the actions we wish to perform and then use the Macro Recorder.
Figure 12.1 • Let us record a macro which copies and pastes data. • A dealer wants to send the information from the first three columns and last column of the data table to the newspaper.
Preparation • First we should review/practice the steps we will take when recording the macro • Highlight the first three columns of data with the cursor (C4:E13) • Copy (using CTL+C, right-click and Copy, or the Edit option) • Place the cursor in cell C19 • Paste (using CTL+P, right-click and Paste, or Edit option) • Highlight the last column (K4:K13) • Copy • Place cursor in cell F19 • Paste
Record • Now we are ready to record the macro • Tools > Macro > Record New Macro • Record button from VBE Toolbar • When the Record Macro dialog box appears, we enter a name for the macro.
Stop • Once you begin recording, notice that the Recordbutton transforms to a Stop button. • After finishing the steps needed to copy and paste the information, you can stop recording. • Tool > Macro > Stop Recording Macro • Stopbutton from the VBE Toolbar
Play • Once you have recorded a macro, you can play it to ensure it works correctly. • Tools > Macros > Macros • Playbutton from VBE Toolbar
Result • We can see that the macro works correctly.
VBA Code • As we learned earlier, each time a macro is recorded in Excel, VBA code is automatically generated. • Let us review what code was generated for this macro • Go the VBE window • A module has been created in the Project Explorer • Select the module to see the code in the Code Window
VBA Code (cont) Sub CarCopyPaste() Range("C5:E14").Select Selection.Copy Range("C20").Select ActiveSheet.Paste Range("K5:K14").Select Selection.Copy Range("F20").Select ActiveSheet.Paste Range("A1").Select End Sub • This is the initial statement of every sub procedure. • The Select method of the Range object selects the specified range of cells. • The Copy method is used on the Selection object. • The Paste method is used on the ActiveSheet object. • These steps are repeated to copy and paste the last column. • This last cell selection can be added to avoid leaving the cells highlighted. • This is the last statement of every sub procedure.
Starting in VBA • Since we can study the VBA code generated when we record a macro, we can easily learn how to create a similar macro directly from VBA by copying the code generated. • We will now learn how to use Sort and Filter functions in VBA by first recording a macro and then using the generated VBA code to create similar macros starting in VBA.
Figure 12.5 • Suppose there is a database for the Miami Airport which lists Flight Destinations, Number of Stops, Class and Price. • We want to be able to filter this information so that we can do the following: • View flights to Beijing • View flights to Hong Kong • View all flights • We also want to be able to sort the data by • Number of Stops • Price
Filtering • We will begin by recording the macro to filter the data for viewing Beijing flights only. • To prepare for recording a macro to filter the data table, we review the steps we will perform • Highlight all data (B3:E15) • Data > Filter > AutoFilter • Select the drop-down button for “Destination” column • Filter for Beijing flights • Select cell A1
Excel to VBE • We can check this recorded macro to ensure it works. • Now we can go to VBE to view the code generated.
Creating New Code • Now that we know the basic structure of the code, we can simply modify it to accomplish the other filtering macros. Sub ViewBeijingFlights() Range("B3:E15").Select Selection.AutoFilter Field:=1, Criteria1:="Beijing" Range("A1").Select End Sub • The Sub titles will change for each new macro • The AutoFilter method will be used on the same selection to generate the filtering drop-down arrows • Field:=1 denotes the “Destination” column, we can modify this value • Criteria1:=“Beijing” is the value which is filtered, we can also modify this value
New Macros from VBA • We can now create a macro to view Hong Kong flights and view All flights by using the code from the recorded macro. ------------------------------------------------------ Sub ViewHongKongFlights() Range("B3:E15").Select Selection.AutoFilter Field:=1, Criteria1:="Hong Kong" Range("A1").Select End Sub ------------------------------------------------------ Sub ViewAllFlights() Range("B3:E15").Select Selection.AutoFilter Field:=1 Range("A1").Select End Sub ------------------------------------------------------
Sorting • We will now record a macro to sort the data by number of stops. • To prepare for recording a macro to sort the data table, we review the steps we will perform • Highlight all data (B3:E15) • Data > Sort • Select “Stops” from the Sort by list • Select Descending as the order • Select cell A1
Excel to VBE • We can check this recorded macro to ensure it works. • Now we can go to VBE to view the code generated.
Creating New Code • Now that we know the basic structure of the code, we can simply modify it to accomplish the other sorting macros. Sub SortByStops() Range("B3:E15").Select Selection.Sort Key1:=Range("C4"), Order1:=xlDescending Range("A1").Select End Sub • The Sub titles will change for each new macro • The Sort method will be used on the same selection • Key1:=Range(“C4”) denotes the “Stops” column • Order1:= xlDescending is the order in which the data will be sorted
New Macro from VBA • We can now create a macro to sort by price by using the code from the recorded macro. ------------------------------------------------------ Sub SortByPrice() Range("B3:E15").Select Selection.Sort Key1:=Range("E4"), Order1:=xlDescending Range("A1").Select End Sub ------------------------------------------------------
Event Procedures • Event Procedures connect events or actions of an Excel object to a specific macro of VBA code. • Click • Change • Activate • To find a list of available/applicable event procedures in VBE, look at the top of the Code Window. • Choose and object from the object list • Choose an event from the event list
Event Procedures (cont) • For example, the Activate event can be used on the Worksheet object. • Once an object and event are selected, a sub procedure will be initiated.
Control Toolbox • The Control Toolbox is a set of objects to which event procedures are usually assigned. • View > Toolbars > Control Toolbox • Icon from VBA Toolbar • Click and drag from toolbar to spreadsheet • There are many controls available to put on the spreadsheet • Text, labels • Spin buttons, toggle buttons • List box, combo box • Check boxes, option buttons
Control Properties • Each control has its own set of properties which can be modified • Name = name of the control, this will be used to identify it in VBA (ex: cmdButton) • Caption = text which appears on the control (ex:“Click Here”) • The Click event procedure can now be associated with this new object by titling are sub procedure • Sub cmdButton_Click()
Command Button • Let us add a command button to perform one of the filtering macros we previously wrote in VBA and set the following properties. • Name = cmdHongKong • Caption = “View Hong Kong Flights”
Event Procedure • We can now copy and paste the code for this macro to a new sub procedure as follows. Sub cmdHongKong_Click() Range("B3:E15").Select Selection.AutoFilter Field:=1, Criteria1:="Hong Kong" Range("A1").Select End Sub • This title can be automatically generated if we select the command button cmdHongKong from the list of objects and then select Click from the list of events.
Drawing Controls • We can also make a button instead of using a command button from the control toolbox. • Create rectangle and then add text to it by right-clicking and choosing Add Text; then format the rectangle as desired.
Assigning the Macro • You can now simply right-click on the button you created and select Assign Macro from the drop-down list. • A list of all macros in the open workbooks will appear, select one and your button has become activated.
Buttons • We can now create buttons for each of the macros we previously wrote. • Assign a macro to each new button respectively.
Customizing Toolbars and Menu Options • Create a toolbar with icons associated with a particular macro. • View > Toolbars > Customize • There are three tabs in the Customize window: • Toolbars = list of all current toolbars, option to create a New toolbar • Commands = list of commands to add to a toolbar, option to assign macros, option to create New Menu • Options = general options
Custom Toolbar • Let us create a new toolbar and place some icons to associate with the filtering macros we wrote. • First, choose New from the Toolbars tab of the Customize window. • Enter the name “Filter”
Custom Toolbar (cont) • Now go to the Commands tab and find the Macros category. • Since we are creating a toolbar, we select Custom Button. • Drag this button to the new toolbar.
Custom Toolbar (cont) • We now use the Modify Selection button to • Name the button • Change the button image • Assign a macro
Customizing Menu Options • Customizing a menu option is done in a similar way. • We can ignore the Toolbars tab and move to the Commands tab and choose NewMenu from the Categories list.
Custom Menu • Let us create a new menu option for our sorting macros. • We select New Menu and then use Modify Selection to give a name to the new menu item.
Custom Menu(cont) • We now again choose Macros from the Commands tab and this time select Custom Menu Item. • Again use Modify Selectionto give a name and new icon to the new menu item, then assign a macro.
Summary • Macros are technically defined as units of VBA code. • Macros can either be created directly with VBA code in the Visual Basic Editor, or recorded in Excel. • Steps to Record a Macro: • 1. Choose Tools > Macros > Record New Macro or choose the Record icon from the VBA toolbar; • 2. Perform a sequence of actions in Excel; • 3. Choose Tools > Macros > Stop Recording or choose the Stop icon from the VBA toolbar. • Events are actions that can take place in the Excel window that cause an action to occur in the VBA code. • An event procedure is just like a sub procedure, except that it is associated with a particular action of an Excel object.
Additional Links • (place links here)