VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications...

23
VBA 101: BACK TO BASICS Tim Heng Director at SumProduct, Excel MVP www.sumproduct.com | @timaheng | https://www.linkedin.com/in/timheng/ 1

Transcript of VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications...

Page 1: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

VBA 101: BACK TO BASICSTim Heng

Director at SumProduct, Excel MVPwww.sumproduct.com | @timaheng | https://www.linkedin.com/in/timheng/

1

Page 2: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Session outline:

• Recording and adapting macros

• Understand the high-level do’s and don’ts of working in VBA

• Learning how to use simple loops and conditions

• What to consider before you copy and paste code from forums and websites.

2

Page 3: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Recording and adapting macrosWhat is VBA and how do we get started?

Page 4: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

What is VBA?

• Visual Basic for Applications

• Relatively simple coding language used in Excel and other Office applications

• Object-based programming

• Objects (nouns), properties (adjectives) and methods (verbs)

• Object.Property = X

• NotMyDog.Coat = TooHairy

• Object.Method

• VeryHungryCaterpillar.Eats OneApple, TwoPears, ThreePlums

4

Page 5: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

What is VBA?

• Objects (nouns), properties (adjectives) and methods (verbs)

• Range(“A1:C5”).Font.Name = “Arial”

Object Properties

• Selection.Copy

Object Method

5

Page 6: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Recording Macros

Easy to start recording – click and go

Long form: View -> Macros -> Record Macro

6

Page 7: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Common characteristics of recorded macros

Task VBA recording Recommended adaptation

Select a cell Range(“A1”).Select Range(“CellName”).Select

Select the next sheet ActiveSheet.Next.Select Sheets(“SheetName”).Select

Copy a range Range("C6").SelectSelection.Copy

Range(“C6”).Copy

Paste into a range Range("D6").SelectActiveSheet.Paste

orSelection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False

Range(“D6”).PasteSpecial xlPasteAll

7

Page 8: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Common characteristics of recorded macros

Task VBA recording Recommended adaptation

Change the font to Arial With Selection.Font.Name = "Arial".Size = 22.Strikethrough = False.Superscript = False.Subscript = False.OutlineFont = False.Shadow = False.Underline = xlUnderlineStyleNone.ThemeColor = xlThemeColorLight1.TintAndShade = 0.ThemeFont = xlThemeFontNone

End With

Range(“A1”).Font.Name = “Arial”

8

Page 9: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Using variables

• Variables allow you to store values while your code is run

• Useful for a range of purposes:

• Tracking the number of times a loop is run

• Storing a value temporarily while you make changes to the spreadsheet

• Best practice to declare (dimension) the variable before using it

• Dim VariableName as String

• Dim LoopCounter as Integer

9

Page 10: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

High level do’s and don’ts

Page 11: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Things to avoid

• Don’t use cell references (e.g. “C5”)

• Use Named Ranges instead of cell references (e.g. “Macro_Check”)

• Remove unnecessary / unintended macro steps

• Try to avoid using .Copy (minimise interaction with the clipboard)

11

Page 12: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Things to do

• Instead of copying and pasting, use X = Y type code instead:

• Range(“Macro_Paste”).Value = Range(“Macro_Copy”).Value

• Range(“Macro_Paste”).Formula = Range(“Macro_Copy”).Formula

• Combine Select / Selection steps into one

• Range(“A1”).Select // Selection.Copy => Range(“A1”).Copy

12

Page 13: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Things to do

• Pay attention to sheet context

• Range(“A1”) <> Sheets(“Sheet1”).Range(“A1”)

• Use comments

• ‘Single inverted comma at the front of a line

• Can use the Comment Block tool in the Edit toolbar

• Option Explicit

• Forces variables to be declared

• Helps identify cases where variable names are misused

13

Page 14: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Simple loops and conditions

Page 15: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

If… Then… Else

• Allows for conditional rules to be checked

• Syntax:

If <true/false condition> Then

<do something here>

Else

<do something else>

End If

15

Page 16: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Do… Loop

• Repeats a set of code a variable number of times

• Syntax:

Do

<do something here>

Loop

• Optional formats:

• Do While <X is true> check a condition and perform loop if true

• Loop while <X is true> loop once then check and perform loop again if true

16

Page 17: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

For… Next

• Repeats a set of code a fixed number of times

• Syntax:

For x = 1 to 10

<do something here>

Next x

• x is an integer variable – a range of different items can be used

• The value x increments each time it loops through the code

• Can use some other formats too: For Each Sheet in Sheets()

17

Page 18: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Copying and pasting code from onlineHow to choose between A or B

Page 19: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

How to pick good code

• Does it follow good coding practice?• Is it well laid out using indenting and comments?

• Does it used named ranges instead of direct cell references?

• Are variables declared explicitly?

• Is it well regarded by the community? (Likes, upvotes, MVP blogs, etc.)

• Most importantly – can you follow what it’s doing?

19

Page 20: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Questions?

Page 21: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

VBA 101: Back to BasicsFeedback:

CBA Non-CBA

Downloads: https://www.sumproduct.com/Excel-Summit-2019/Excel-Summit-Sydney-2019

www.sumproduct.com | @timaheng | https://www.linkedin.com/in/timheng/

Page 22: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Thursday’s sessions

22

What’s New in Excel8:30 – 9:55

Rolling Budgets and Charts10:25 – 11:35 Excel 365 v Excel 2016

Dynamic Data4:00 – 5:00 Advanced Chart Tricks for the Non-Advanced User

Morning Tea and Networking Break9:55 – 10:25

Real & Unusual Needs / Uses for Excel11:40 – 12:40 Creating More Effective Charts

Lunch12:40 – 1:25

Painting to Present Your Data1:25 – 2:25 CTRL + ENTER: Start Using it Yesterday!

Excel Tips & Tricks2:30 – 3:30 Testing Models

Afternoon Tea and Networking Break3:30 – 4:00

Q&A Session (What’s on Your Excel Wish List?)5:00 – 5:30

Room A Room B

Page 23: VBA 101: BACK TO BASICS - sumproduct-4634.kxcdn.com...What is VBA? •Visual Basic for Applications •Relatively simple coding language used in Excel and other Office applications

Friday’s sessions

23

Microsoft 365: Unlocking the Power of Your Enterprise Data8:30 – 9:30

Forecasting Tips10:00 – 10:55 Time Intelligence in Power Pivot

Three Real Business Solutions Using Power BI for Excel4:00 – 5:00 PivotTables and Slicers

Morning Tea and Networking Break9:30 – 10:00

VBA 101: Back to Basics11:00 – 11:55 Assessing Client Needs

Lunch12:55 – 1:35

Real-World Case Studies Using Power BI and Power Query2:35 – 3:30 Conditional Formatting

Out of the Box Use of Well-Known Excel Functions1:35 – 2:30 Deep Dive into All Six Joins in Power Query

Afternoon Tea and Networking Break3:30 – 4:00

Q&A Session (Part 2)5:00 – 5:30

Room A Room B

Data Model in Power BI: Different Approaches12:00 – 12:55 Going from Excel to PowerPoint