Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lab 2 Introduction to VBA (II) ► Lab 1 revisited - Sub & Function procedures - Data types and variable declaration ► Recording.

Similar presentations


Presentation on theme: "Lab 2 Introduction to VBA (II) ► Lab 1 revisited - Sub & Function procedures - Data types and variable declaration ► Recording."— Presentation transcript:

1 http://blackboard.umbc.edu Lab 2 Introduction to VBA (II) ► Lab 1 revisited - Sub & Function procedures - Data types and variable declaration ► Recording macros ► Working with Ranges ► Exercise

2 http://blackboard.umbc.edu Lab 1 Revisited Don’t forget to go to Excel: Tools -> Macro -> Security and change the Security level from High to Medium When you save the file in Excel or VBE, it saves both the Excel file and the VBA code you write The string concatenation symbol – the ampersand (&) - has to be surrounded by a space on BOTH sides An ampersand (&) is required when you break strings across lines, e.g. MsgBox "John Doe traveled 100 miles and paid a total of " & _ "6.40 dollars on gas.", vbInformation, "Travel Information"

3 http://blackboard.umbc.edu VBA Procedure Declaration Sub procedure: a set of instructions that performs some action. Function procedures. a set of instructions that returns a single value or an array Sub procedure Syntax [ Private | Public | Friend] [Static] Sub name ([arglist]) [statements] [Exit Sub] [statements] End Sub Private: accessible only to other procedures in the same module Public: accessible to all procedures in ALL other modules in the workbook. (By default, a procedure is Public) Static: procedure’s variables are preserved when procedure ends Arglist:a list of variables that receive arguments passed to the procedure Exit Sub: Immediate exit from a Sub procedure.

4 http://blackboard.umbc.edu Function Procedure Declaration Function procedure Syntax [Public | Private | Friend] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function Private: accessible only to other procedures in the same module Public: accessible to all procedures in ALL other modules in the workbook. (By default, a procedure is Public) Static: procedure’s variables are preserved when procedure ends Arglist:a list of variables that receive arguments passed to the procedure Exit Function: Immediate exit from a Function procedure.

5 http://blackboard.umbc.edu A variable is a named storage location in a computer’s memory It can accommodate a variety of data types –Such as Boolean, Integer, Long, Single, Double, Date, String, Variant Make your variable names descriptive, and the first character must be alphabetic Good names usually have mixed case (InterestRate) or underscore (Interest_Rate) No spaces and periods are allowed in variable names Variables

6 http://blackboard.umbc.edu You don’t have to declare the data type of a variable in VBA – VBA uses the default data type – Variant. BUT: slower execution and less efficiently use of memory. To declare a variable is to tell VBA its name and data type. Two benefits of declaring variables: –Your programs run faster and use memory more efficiently –You avoid problems involving misspelled variable names. To FORCE yourself to declare all variables in VBE, Go to Tools->Options->Editor, and check the “Require Variable declaration” box – Good habit Variable Continued

7 http://blackboard.umbc.edu String – texts (a sequence of contiguous characters including letters, numbers, spaces, and punctuation) surrounded by double quotes Currency - for monetary values Boolean - for variables that can be True or False Integer - Range: -32,768 to 32,767 Long - for large integers beyond the Integer range Date - Range: Jan. 1, 0100 to Dec. 31, 9999 Single – for numbers with decimals Double – for numbers with decimals where you require more accuracy than with singles Variant – a catchall, where you let VBA decide how to deal with the variable etc… Some VBA’s Built-in Data Types

8 http://blackboard.umbc.edu To declare several variables: –use a separate line for each variable, but can be a very long list; –use one single Dim, followed by a list of declarations separated by commas BUT: you must follow each variable with the keyword As and then the variable type e.g. Dim i As Integer, Name As String, j As Single If: Dim I, J, K As Integer ′ only K is declared as Integer ′ I & J are declared As Variant instead of Integer Variable Declaration Tips

9 http://blackboard.umbc.edu Define variable R as a Range object: Dim R as Range Set R = ActiveWorkbook.Worksheets(“Sheet1”).Range(“A1:A10”) Note: the ‘Set’ statement is only used for object variables Now, instead of writing ActiveWorkbook.Worksheets(“Sheet1”).Range(“A1:A10”).Font.Size = 14 you can simply write: R.Font.Size = 14 Object Variable

10 http://blackboard.umbc.edu The With Construction Very useful: saves a lot of typing and performs multiple operations on a single object when working with objects and their properties and methods. Now compare: Not using the “With…End With” construction –Worksheets(“March”).Range(“A1”).Value = “Sales for March” Worksheets(“March”).Range(“A1”).Font.Name = “Arial” Worksheets(“March”).Range(“A1”).Font.Bold = True Worksheets(“March”).Range(“A1”).Font.Size = 14 Using the “With…End With” construction –With Worksheets(“March”).Range(“A1”).Value = “Sales for March” With.Font.Name = “Arial”.Bold = True.Size = 14 End With

11 http://blackboard.umbc.edu Recording Macros (TRY THIS) ● Learn VBA by using the Macro recorder –Activate a worksheet in the workbook –Select the Tools->Macro->Record New Macro command Or: Click on Record Macro tool at the Visual Basic Toolbar –Accept the defaults or change them. Then, click OK to begin recording your actions Macro name: The name of the macro Shortcut key: You can specify a key combination that executes the macro Store macro in: The location for the macro Description: A description of the macro. By default, Excel inserts the date and your name. You can add additional information if you like –Make some changes in the workbook: Click on File->Page Setup ->Orientation ->Landscape –Click the Stop Recording button on the toolbar –Open the module in VBE and see the code that has been generated automatically

12 http://blackboard.umbc.edu Recording Macros – An Example Record a macro that changes the formatting for the current range selection. The macro format the contents in the selected range into Arial 16-point type, boldface, and red. The corresponding steps include: 1. Enter some value or text into a cell – anything is okay. 2. Select the cell(s) that contains the value or text that you entered in the preceding step 3. Select Tools->Macro->Record New Macro. Excel displays the Record Macro dialog box 4. Enter a new Name for the macro, e.g., FormattingMacro 5. Assign this macro to the shortcut key Ctrl+Shift+F 6. Click OK. This closes the dialog box and displays a toolbar called Stop Recording 7. Select Format->Cells and then click the Font tab. Choose Arial font, Bold, 16-point type, and make the color red. Click OK 8. Click the Stop Recording button on the Stop Recording toolbar 9. Test the macro: enter some value in other cells, then select them and press Ctrl+Shift+F 10. View the code in VBE module TRY THIS

13 http://blackboard.umbc.edu Recording Macros – Sort Method Input some data into an Excel sheet 1. Activate Sheet1 of the workbook. 2. Turn on the recorder 3. Accept all the default values of the Record Macro dialog box 4. Use the Sort method in Excel to sort the data and display the data by cost ascending. 5. Click the Stop Recording button on the Stop Recording toolbar 6. View the code in VBE module 7. Unsort the data and run the macro; note the results TRY THIS

14 http://blackboard.umbc.edu Sort Method Object.Sort(Key1, Order1, Key2, Order2, Key3, Order3, Header,..) Example: Range("A1:G13").Sort Key1:=Range("G3"), _ Order1:=xlAscending, Header:= xlYes –Key1: The first sort field –Order1: The sort order for the field or range specified in Key1 –Header Optional xlYesNoGuess. Specifies whether or not the first row contains headers To specify a range that is to be sorted, it suffices to specify any cell within this range. To specify the column to sort on (in the key1 argument), it suffices to specify any cell within this column.

15 http://blackboard.umbc.edu More on Recording Macros Personal.xls – a special workbook. Macros recorded in this workbook are available all the times as you work in Excel, but it is a hidden file. Limitations –It cannot record everything (e.g., loops and control logic) –The automatically generated code is often far from elegant

16 http://blackboard.umbc.edu Specify Range With VBA (1) Use an address e.g. Range(″A1:B10″).Value = 2 ‘Value is the default property of Range object, can be omitted Range(″A1″, ″B10″).ClearContents Use a range name e.g. To create a range name: Range("A1:F1").Name = "NameList" -> Range(″NameList″) Use a variable for a range name E.g., SalesName = Range(“Sales”).Name Then, this range can be referred to as Range(SalesName) Use Range(ColumnIndex & RowIndex) e.g. Range(“A” & 5)

17 http://blackboard.umbc.edu Specify Range With VBA (2) Use a Range object variable E.g., Dim R As Range Set R = Range(“Sales”) R.Font =12 Use top left and bottom right arguments E.g. Range(Range(“C1”), Range(“D10”))‘C1:D10 Use the Cells property Use the Offset property Use the End property Object Browser in VBE – a helpful tool to learn object properties and methods (can be accessed by pressing F2)

18 http://blackboard.umbc.edu The Cells Property (1) Used to refer to a particular cell of a Range object Three syntaxes: 1.Object.Cells(rowIndex, columnIndex) row: 1-65536, column: 1-256 2.Object.Cells(Index) 3.Object. Cells Example – Syntax 1: e.g. Worksheets("Sheet1").Cells(1,1) = 9 ' - A1 ActiveSheet.Cells(3,4) = 7 ' - D3 Example – Syntax 2: e.g. ActiveSheet.Cells(513) = 2 ' - A3 Example – Syntax 3: - returns all cells on the referenced worksheet e.g.ActiveSheet.Cells.ClearContents

19 http://blackboard.umbc.edu The Cells Property (2) More examples: –Range(“B5:B14”).Cells(3), which cell? –Answer: B7 –Range(“C5:E15”).Cells(4, 2), which cell? –Answer: D8 –Range(“A1:D10”).Cells(5) = 2000, which cell? –Answer: A2

20 http://blackboard.umbc.edu The Offset Property (1) Used to return a reference relative to a range, where the range is usually a single cell. Syntax: Object.Offset(rowOffset, columnOffset) Two arguments correspond to the relative position from the upper-left cell of the specified Range: –Positive: down or right –Negative: up or left –Zero: same row/column Examples: –ActiveCell.Offset(1,0).Value = 2 ' right below –ActiveCell.Offset(-1,0).Value = 15 ' Right above

21 http://blackboard.umbc.edu Range(“A5”).Offset(2, 3), which cell? Answer: D7 Range(“A5”).Offset(0,3), which cell? Answer: D5 Range("A5").Offset(-3, 0).Font.ColorIndex = 4 Answer: A2 turns green Font.ColorIndex: 1: Black, 3: Red, 4: Green, 5:Blue, 6: Yellow The Offset Property (2)

22 http://blackboard.umbc.edu The End Property To select large Ranges – same as using Shift + the End-Arrow key combination in Excel You don’t need to know the size of the range The End property takes one argument – determines the direction in which the selection is extended –xlUp, xlDown, xlToRight, xlToLeft Make sure you don’t have empty rows and columns in your data; otherwise, the End, Offset, and Cells properties won’t work. Anchor cell cannot be merged with any other cells.

23 http://blackboard.umbc.edu The End Property Examples With Sheet1.Range("A1")′ A1 treated as an anchor Range(.Cells(1, 1), _.End(xlDown).End(xlToRight)).Select End With With ActiveSheet.Range("A1") Range(.Offset(0, 1),.End(xlToRight)).Name = _ "ScoreNames" Range(.Offset(1, 0),.End(xlDown)).Name = _ "EmployeeNumbers" Range(.Offset(1, 1), _.End(xlDown).End(xlToRight)).Name = "ScoreData" End With

24 http://blackboard.umbc.edu Exercise Download Lab2_Student.xls from Blackboard. 1)Use the Offset and End properties of Range object to name range from A2 to the end of the column as “NEmployees”, range B1 to the end of the row as “NScores”, and the rest of the range - B2 to F19 as “ScoreData”. 2)Do some formatting using the range names and the With-End With construction: make the font of the NEmployees Range in bold and blue color; change the font of the NScores Range to italic, in red and centralize the text (using the HorizontalAlignment property).


Download ppt "Lab 2 Introduction to VBA (II) ► Lab 1 revisited - Sub & Function procedures - Data types and variable declaration ► Recording."

Similar presentations


Ads by Google