VBA and Macro creation (using Excel) DSC340 Mike Pangburn.

Slides:



Advertisements
Similar presentations
Using VB with MS Applications R. Juhl, Delta College.
Advertisements

© Paradigm Publishing, Inc Excel 2013 Level 2 Unit 2Managing and Integrating Data and the Excel Environment Chapter 7Automating Repetitive Tasks.
Computer Science & Engineering 2111 Text Functions 1CSE 2111 Lecture-Text Functions.
Object Oriented Programming A programming concept which views programs as objects with properties and ways to manipulate the object and the properties.
Essence of programming  Branching  Repetitions.
Visual Basic for Applications. What it does Extends the features and built in functions of Excel – Create and run VB procedures – Some may be easy to.
Tutorial 7: Developing an Excel Application
Developing an Excel Application
Tutorial 8: Developing an Excel Application
Some computer fundamentals and jargon Memory: Basic element is a bit – value = 0 or 1 Collection of “n” bits is a “byte” Collection of several bytes is.
Microsoft Office Excel 2013 Core Microsoft Office Excel 2013 Core Courseware # 3253 Lesson 8: Macros, Importing and Exporting Data.
Objectives Understand the software development lifecycle Perform calculations Use decision structures Perform data validation Use logical operators Use.
MACROS CS1100 Computer Science and its Applications CS11001.
Tutorial 12: Enhancing Excel with Visual Basic for Applications
Introduction to Computing Science and Programming I
Programming in Visual Basic
String Variables Visual Basic for Applications 4.
Using the Visual Basic Editor Visual Basic for Applications 1.
Chapter 1 Program Design
Introduction to Array The fundamental unit of data in any MATLAB program is the array. 1. An array is a collection of data values organized into rows and.
Adding Automated Functionality to Office Applications.
COMPREHENSIVE Excel Tutorial 8 Developing an Excel Application.
Exploring Microsoft Excel 2002 Chapter 8 Chapter 8 Automating Repetitive Tasks: Macros and Visual Basic for Applications By Robert T. Grauer Maryann Barber.
Introduction to VBA. This is not Introduction to Excel We’re going to assume you have a basic level of familiarity with Excel If you don’t, or you need.
Spreadsheets in Finance and Forecasting Presentation 11 Visual Basic.
Object Variables Visual Basic for Applications 3.
XP New Perspectives on Microsoft Office Access 2003 Tutorial 11 1 Microsoft Office Access 2003 Tutorial 11 – Using and Writing Visual Basic for Applications.
Microsoft Excel 2007 © Wiley Publishing All Rights Reserved. The L Line The Express Line to Learning L Line.
EXCEL 2007 MACROS.  TOM FARRAR OF CNEXTWAVE INC.  GOAL : LEARNING ABOUT EXCEL MACROS.  PRESENTATION INCLUDES DISCUSSION AND DEMONSTRATION.  QUESTIONS.
Copyright 2007, Paradigm Publishing Inc. EXCEL 2007 Chapter 7 BACKNEXTEND 7-1 LINKS TO OBJECTIVES Record & run a macro Record & run a macro Save as a macro-
Microsoft Excel Macros & Excel Solver (IENG490)
Introduction to Python
INSERT BOOK COVER 1Copyright © 2011 Pearson Education, Inc. Publishing as Prentice Hall. Exploring Microsoft Office Excel 2010 by Robert Grauer, Keith.
Copyright © 2008 Pearson Prentice Hall. All rights reserved. 1 Microsoft Office Excel Copyright © 2008 Pearson Prentice Hall. All rights reserved
Class 3 Programming in Visual Basic. Class Objectives Learn about input/output Learn about strings Learn about subroutines Learn about arrays Learn about.
The Java Programming Language
Productivity Programs Common Features and Commands.
Visual Basic for Applications Macro Programming For Microsoft Office.
VBA Lab 2 I ns.Samia Al-blwi. Visual Basic Grammar Object: Visual Basic is an object-oriented language. This means that all the items in Excel are thought.
CONTENTS Processing structures and commands Control structures – Sequence Sequence – Selection Selection – Iteration Iteration Naming conventions – File.
Chapter 9 Macros And Visual Basic For Applications.
Lab 6 (2) Arrays ► Lab 5 (1) Exercise Review ► Array Concept ► Why Arrays? ► Array Declaration ► An Example of Array ► Exercise.
A lesson approach © 2011 The McGraw-Hill Companies, Inc. All rights reserved. Microsoft® Excel 2013.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Introduction to Scripting.
Introduction to Python Dr. José M. Reyes Álamo. 2 Three Rules of Programming Rule 1: Think before you program Rule 2: A program is a human-readable set.
Chapter 10 Using Macros, Controls and Visual Basic for Applications (VBA) with Excel Microsoft Excel 2013.
Introduction to Microsoft Excel Macros COE 201- Computer Proficiency.
Visual Basic Objects / Properties / Methods PropertyAdjective ObjectNoun Part of the application Attribute MethodVerb Action to do something.
Controlling Program Flow with Decision Structures.
An electronic document that stores various types of data.
1 Agenda  Unit 7: Introduction to Programming Using JavaScript T. Jumana Abu Shmais – AOU - Riyadh.
Macros in Excel Using VBA Time Required – 5 hours.
McGraw-Hill/Irwin The Interactive Computing Series © 2002 The McGraw-Hill Companies, Inc. All rights reserved. Microsoft Excel 2002 Using Macros Lesson.
COMPREHENSIVE Excel Tutorial 12 Expanding Excel with Visual Basic for Applications.
Excel Tutorial 8 Developing an Excel Application
IE 8580 Module 4: DIY Monte Carlo Simulation
Exploring Excel Chapter 7 Automating Repetitive Tasks: Macros and
Outline In this module, the following topics will be covered:
VBA - Excel VBA is Visual Basic for Applications
More VBA IE 469 Fall 2017.
Microsoft Office Illustrated
Learning Excel Session 9 and 10 Dr. Chaitali Basu Mukherji.
Introducing VBA Macros
Introduction to VBA IE 469 Spring 2018.
Exploring Microsoft Excel
More VBA IE 469 Spring 2018.
T. Jumana Abu Shmais – AOU - Riyadh
Language Constructs Construct means to build or put together. Language constructs refers to those parts which make up a high level programming language.
Microsoft Excel 2007 – Level 2
Presentation transcript:

VBA and Macro creation (using Excel) DSC340 Mike Pangburn

Agenda for Today Object-Oriented Programming Creating Macros with VBA

OBJECT ORIENTED PROGRAMMING: VBA

What is O-O programming?  A programming style that uses “objects” to comprise programs.  Objects:  In a pure O-O language, every thing in the program is an object.  An object is a data structure consisting of attributes (data fields) and methods (actions).  The attributes of the object hold its current information  The methods of the object determine what the object can do

Different objects types: classes  Each programming environment comes with many different kinds of predefined objects.  An object type is called a class. A class is thus some type of object.  All objects within a class hold the same kind of information (identical attributes) and can perform the same actions (identical methods).  A class is the “cookie cutter”/template you use to create new object instances. Hollywood analogy: in Battlestar Galactica there are 12 “classes” of human robots. One of these 12 model types was the Sharon model.

Creating and using objects  You 1 st need a class class Sharon Attributes : height, 3Dbodyshape, faceimage, currentlocation, currentlove, pastexperienceslog Methods : imitateHuman, fallInLove(person), doSecretMission(password)  You then “declare” a new object and can subsequently assign its attribute value and invoke its methods.  Example: declaring a new Sharon object, assigning a value, and calling a method Sharon sharonNo55 sharonNo55.currentlocation = “KA.493.X7.1034” sharonNo55.fallInLove(Helo)

Object Oriented Programming Fundamentals Appropriate object classes (their attributes and methods) heavily depend on the problem you are working on. Example: A system for a bank: ◦ Objects: Customers, Accounts, etc. ◦ Attributes: First Name, Last Name, SSN, Address, etc. ◦ Methods: Withdraw, Open an account, Deposit, Cash check, etc.

VBA: Visual Basic for Applications VBA is a specialized version of Microsoft’s well-known Visual Basic language. VBA is an Object-Oriented language within Microsoft Office suite: ◦ Excel, Word, Access, and Power Point. ◦ We will focus on Excel. ◦ Shortcut to access the VBA interface in Excel: Alt+F11. Excel treats everything in a spreadsheet as objets. So, VBA lets us play with all these objects. ◦ Object that we are interested in: Workbooks, worksheets, cells, rows, ranges. ◦ There are over 200 different class (types of objects) in Excel.

Coding with VBA There are two approaches to write a code in VBA: Standard Coding Macro Recording The Macro approach “records” a series of mouse-clicks and keyboard strokes. Advantage: Corresponding VBA code is created automatically and recorded for you. Disadvantage: It’s limited. To tackle this limitation, we use a mixed approach: First, record a simple macro. Then, tweak it to achieve more complex tasks.

Problem Definition We have data spanning 3 columns and 13 rows (C6:F18). ◦ Data should be stored in the given range in order to use it for other application. ◦ Unfortunately, there are some errors in the data entry process, so some of the rows are shifted to the right by one column.

◦◦◦◦◦◦◦◦ Declare and name variables. Create Subroutines and Functions (We’ll learn what they are shortly). Use conditional statements. Create repetitions. Problem Definition We have data spanning 3 columns and 13 rows (C6:F18). ◦ Data should be stored in the given range in order to use it for other application. ◦ Unfortunately, there are some errors in the data entry process, so some of the rows are shifted to the right by one column. Our job is to correct all these mistakes: ◦ First, record a simple macro that correct a specific row (say Row 8). ◦ Then, tweak it to make correction in any given row. ◦ Finally, we let the code check any mistake and correct it. While doing this, we learn how to

Our First Macro  Download and open VBA_Example_class.xlsm  In Excel 2010, we should save the file as a Macro Enabled Workbook (i.e., in the.xlsm format).

Our First Macro ◦◦◦◦◦◦◦◦ Select the range D8:F8. Cut the selected cells. Select cell C8. Paste the cut cells. To see the VBA code generated by your actions, go into VBA (Alt+F11) and then near the upper left of the window expand the Modules folder and double-click on Module1. Find the Macros option under the Excel 2010 View tab to record a VBA macro. Let’s call our Macro “Shifter.” We want our macro to do the following:

Subroutines Notice that the code starts with Sub command and ends with End Sub command. Sub refers to the Subroutines. ◦ Subroutine: A portion of code within a larger program that performs a specific task and is relatively independent of the remaining code. ◦ We can use a subroutine in a different subroutine by “calling” it. ◦ e.g., Call Shifter().

Execution of Subroutines Each line of a subroutine is executed sequentially. Let’s see how our macro is executed. (The first three green lines following each ‘ are simply comments/documentation.) The real first line is Range("D8:F8").Select, and it selects the cells we want to select. The second line, Selection.Cut, cuts the selected cells. The third line, Range("C8").Select, selects the cell C8. Finally, the last line, ActiveSheet.Paste, pastes the cut values to the selected cell of the worksheet.

Subroutines with Input Arguments The limitation of Shifter is that it only corrects Row 8. We can solve this by creating a subroutine which will take a row number as an input parameter. Sub ShiftOneColumn (RowNum As Integer) CODE BLOCK End Sub ◦ RowNum is the input variable. We name it. ◦ As Integer part declares the data type of our input variable. ◦ Common Data Types: Data Type Boolean Integer Double String Description Holds either TRUE or FALSE value. Integers between and Double precision numbers, can hold fractional numbers (The range of double number is very large) A set of characters (like sentences)

Shifting Any Given Column Sub ShiftOneColumn (RowNum As Integer) Range("D" & RowNum & ":F" & RowNum).Select Selection.Cut Range("C" & RowNum).Select ActiveSheet.Paste End Sub How do we tell VBA to shift the row according to our input, RowNum? ◦ Currently, we select cells D8,E8,F8 by writing "D8:F8". ◦ We will construct that D#:F# syntax, for our row # (i.e., RowNum) Range("D" & RowNum & ":F" & RowNum).Select ◦ In Excel and VBA the & operator simply combines (“concatenates”) text together

Shifting Repeatedly We now have a subroutine that can correct any given row. We want to apply this subroutine to any rows between 6 and 18. We use a loop (e.g., a FOR-NEXT Loop) for this task: For-Next Loop Syntax For varName=start_val To end_val Step step_size CODE BLOCK Next varName ◦ The above code assigns the value of variable varName to start_val. ◦ Then, executes the code inside the loop. ◦ After that, increases the value of variable varName by step_size ◦ And, runs the code again. ◦ Repeats that until the value of variable varName reaches end_val.

Shifting Repeatedly Sub ShifterLoop For RowNum=6 To 18 Step 1 Call ShiftOneColumn(RowNum) Next RowNum End Sub Let’s create our FOR-NEXT Loop. ◦ The variable whose value we change is RowNum. ◦ The Start value is 6. The End value is 18. ◦ And, the Step Size is 1. In each step, we call the subroutine ShiftOneColumn. Notice that we have started to use the value called RowNum that we introduced….

Variable Declaration The subroutine ShiftOneColumn requires an integer input. We decided to introduce something called RowNum which stores a row number. ◦ We want the data type for RowNum to be Integer. The VBA interpreter will attempt to guess (scary!) the data type if you forget to declare your variables. To avoid that problem, we need to define the variables we use properly: Variable Declaration in VBA Dim varName As dataType Some rules about variable declaration: ◦ Variables names have to start with a letter, and have no spaces. ◦ VBA is not case sensitive (RowNum and rownum are the same). ◦ Names that are more than one word are usually written with the first letter of words capitalized; it’s not required but it’s fairly standard practice).

Shifting Repeatedly So, we add a line before the loop where we declare our variable RowNum. Sub ShifterLoop Dim RowNum As Integer For RowNum=6 To 18 Step 1 Call ShiftOneColumn(RowNum) Next RowNum End Sub

Checking If First Column is Empty We need to check whether the first column of a row is empty or not. VBA’s conditional statement IF-THEN-ELSE allows us to achieve this goal. IF-THEN-ELSE Syntax If test_cond Then... CODE BLOCK executed if test_cond holds... Else... CODE BLOCK executed if test_cond fails... End If

A Function to Check the First Column We could write our conditional statement to check the first column within the subroutine, but we will define a separate “Function” for the checking task. Functions are very similar to the subroutines. Then, why a function? ◦ Unlike a subroutine, but Functions return a value. ◦ Useful for reporting the result of a calculation or other results. ◦ Our function will return… 1 if the first column is empty 0 otherwise.

More on Functions vs. Subroutines Functions are not always the right choice: ◦ A function cannot directly write data back to the spreadsheet. ◦ We can write data to the spreadsheet via subroutines. Easiest way: How to write data to cells Cells(row_num,col_num).Value= x ◦ e.g., Cells(10,3).Value= "Ducks Rock" writes Ducks Rock to the cell C10. (Try it!) ◦ In this example, our function doesn’t need to change the value of cell, but our function does return a value.

A Function to Check the First Column Let’s go back to our task: Creating a function to check the first column. We name our function as CheckColOne. What is our input argument? Row Number. Function to check the first column Function CheckColOne (RowNum as Integer) If Cells(RowNum,3).Value="" Then CheckColOne=1 Else CheckColOne=0 End If End Function How do we check if the first column is empty? ◦◦◦◦◦◦◦◦ We can use Cells(row_num,col_num).Value. Then, check whether it is empty. We know the row number: It’s our input argument, RowNum. The column number is 3 since the first column of data is in Column C. So, our test condition is if Cells(RowNum,3).Value="".

Using the Check Function in the Main Subroutine Sub ShifterLoop () Dim RowNum As Integer For RowNum=6 To 18 Step 1 If CheckColOne(RowNum) Then Call ShiftOneColumn(RowNum) End If Next RowNum End Sub

Practice: Extending our program  How would we extend our program if we wanted to have the program highlight each moved row with a yellow background?  Remember the approach most business people using VBA take:  Perform “Macro Recording” to start  Use/modify the resulting code