SlideShare a Scribd company logo
LECTURE 9

Range objects
User-Defined
Functions
SUMMARY
Range objects
Obtaining a range using the RefEdit control
User-Defined Functions
 Without arguments

 With arguments
 Variables, constants, arrays and range objects
RANGE OBJECTS

A cross
between a
named range
and an array
RANGE OBJECTS
Range objects are an alternative to using arrays
and named ranges.

Range objects are preferred when:
 You are using the RefEdit control to allow users to select
data for a program.
 You are creating user defined functions which you want to
use within Excel worksheets (as opposed to using them
solely within your code).
 You are creating an Excel add-in and don’t want to clog up
the user’s workbook with range names.
DECLARING A RANGE OBJECT
A Range is a data type. So we declare a range
object as:
Dim rangeObj as Range
 Where rangeObj is the name you want to assign to the
range object

Assign a range object a range within a procedure:
Set rangeObj = Range

Set rangeObj = Range(“RangeName”)

 Where Range is a range in Excel and RangeName is a
named range in Excel.

 For example,
Set stockRange = Range(Cells(1,1), Cells(1,25))
Set stockRange = Range(“StockPrices”)
METHODS APPLIED TO RANGE OJBECTS
You can do nearly everything the same as a range
or named range in Excel. For example:
 Count rows or columns
rangeObj.Rows.Count

rangeObj.Columns.Count

 Refer to cells within the range
rangeObj.Cells(i, j).Value
REFEDIT CONTROL

Letting the
user select
the range of
data
REFEDIT
RefEdit is a UserForm control:

Allows user to select a range in Excel
Set this selection as a range object in your code
Set rangeObj = Range(RefEdit.Value)

 Where RefEdit is the (Name) of the control

Then use the range however you need to
 In a built-in function
 In a user defined function
 In place of a named range
EXERCISE 1. REFEDIT
Open Lecture 9 Student Example.xlsm
Open UserForm2
In the sub for the command button code the
following:
 Declare a range object called userSelect
 Set this range object equal to the value of the RefEdit
control
 Test that the works by outputting the range object to some
cells
 Use the .Columns.Count and .Rows.Count property to assist you
 Start the output in Cells(1,6) of Sheet 1
 Remember, to ‘copy’ or ‘output’ you just need to set the two
ranges equal to each other
 (make sure to put .Value at the end of each range)
USER DEFINED
FUNCTIONS

Create a
function in
VBA
WHAT IS A USER DEFINED FUNCTION?
Designed/created by YOU, the USER
 Similar to an Excel built-in function

Returns a value: number, text, True/False
Always goes into a Module

(not a UserForm module)

 Private Function – Only used in the module it’s in
 Public Function – Used in any module or in Excel

Can be executed in two ways:
 Called from within a Sub Procedure in VBA, OR
 Used from an Excel worksheet:
 Click on a cell, type =, then the name of your function
FUNCTION DOS AND DON’TS
Functions only do calculations
Functions DO NOT output to cells or userforms
 Do not put commands to write to cells in your function
 Do not put commands to write to userform controls in your
function

A Sub procedure performs a series of actions
 Call your function from a Sub and write the result to cells
or userforms from your Sub
ARGUMENT . AN EXAMPLE USING THE SUM FUNCTION.

This is called the ARGUMENT.
 Apply an operation to the argument and output the result
 For SUM(), it specifies what this function should sum
 In this case, we are specifying an array/range

User defined functions can have arguments too
ARGUMENT . WHEN IS IT NEEDED?
 The function operates on an argument to return a
value.

1 or more numbers

1 or more arrays/ranges

1 number

 Some functions can return a value without
operating on a variable.
NO argument needed
EXAMPLE 1. MULTIPLY 2 NUMBERS
Remember
Functions go in Modules!
EXAMPLE 1. MULTIPLY 2 NUMBERS
Requires 2 variables as the argument
(because I want it to multiply 2 numbers together)
I’ve named them x & y
EXAMPLE 1. MULTIPLY 2 NUMBERS

MUST assign each argument a data type
EXAMPLE 1. MULTIPLY 2 NUMBERS
The Function itself MUST be assigned a value
WITHIN the Function
If you don’t, it will NOT return a value
USE YOUR FUNCTION IN EXCEL
Use your function like a built-in Excel function
• Type = then the name of the
User-Defined function.
• Select the function from the
list.

• Select/Enter the arguments.
• Separate the arguments
with a comma.
EXERCISE 2. CREATE AN ADD FUNCTION
Open Lecture 9 Student Example.xlsm
Open Module1
Insert a function called Add2numbers
 Give this function 2 arguments, x and y
 Write code so that this function adds the value of x and y

Test your code in an Excel worksheet – does it
work?
CALLING FUNCTIONS FROM A SUB
CALLING FUNCTIONS FROM A SUB
CALLING FUNCTIONS FROM A SUB

The name of the
Function
CALLING FUNCTIONS FROM A SUB

This function
needs 2
arguments.
CALLING FUNCTIONS FROM A SUB
CALLING FUNCTIONS FROM A SUB

The name of the
Function
CALLING FUNCTIONS FROM A SUB

This function
needs 2
arguments.
EXERCISE 3. CALLING FUNCTIONS

Type this code and run the
UserForm.
Does it work (numbers only)?
FUNCTIONS USING ARRAYS
EXAMPLE 2. AVERAGE OF AN ARRAY

The name of
the Function
EXAMPLE 2. AVERAGE OF AN ARRAY

The argument
is an array

Any array we send to
this function will be
called array1 within
the function
EXAMPLE 2. AVERAGE OF AN ARRAY

The number of rows
in array1() is not
known in the function

Ubound(array1) returns the
number of rows in array1
EXAMPLE 2. AVERAGE OF AN ARRAY

The Function is
given a value
within the
Function
EXAMPLE 2. AVERAGE OF AN ARRAY
We can’t use it like a built-in function because the
argument is an array.

Call it from a Sub procedure
CALL A FUNCTION FROM A PROCEDURE
CALL A FUNCTION FROM A PROCEDURE
CALL A FUNCTION FROM A PROCEDURE
CALL A FUNCTION FROM A PROCEDURE
FUNCTION

V

SUB

PROCEDURE

Function procedures
 Used to return a value

Sub procedures
 Use to run a series of commands
 Does NOT return a value

For example,
 If you want to output the result of a calculation in a cell
 Do the calculation in a function
 In a Sub Procedure, output that function to a cel l

Let the cells =
the value of the
function within
the Sub
EXERCISE 4. FUNCTIONS USING ARRAYS
Open Module2
Insert a function called AverageArray2D
Inside this function write code to find the average
of a 2D array.
 You can start with the code for the 1D array and just
modify it.
 The code to calculate the number of columns in an array is
UBound(arrayName, 2)
 Recall the code to calculate the number of rows in a array is
Ubound(arrayName)

 To check that your code works,
 modify Sub MainSub() so that you read in a 2D array from Excel
(use the first 2 or 3 columns – it’s up to you)
 Output AverageArray2D from a MsgBox in Sub MainSub()
FUNCTIONS USING
RANGE OBJECTS
EXAMPLE 3. SUM A RANGE OBJECT
Insert a function called SumOfRange
In this function add together all elements of the
range:
Range object
Count the number of rows
and cols for the loops

Use a nested loop
because you have rows
and columns of data

Use .Cells() just like
with a named range

Test this function in an Excel Worksheet
EXERCISE 5. FUNCTIONS USING RANGES
Open Module2
Insert a function called AverageOfRange
 Write code to calculate the average
 All you really need to do is modify one of your previous functions

Test your function in Excel – make sure it works
CALLING PROCEDURES
CALLING A SUB FROM WITHIN ANOTHER SUB
Very similar to calling a Function
Just write Call followed by the name of the Sub

For Example
If I had a Sub Procedure called EnableControls()
and wanted to call it from within a different Sub,
I’d write:
Call EnableControls

If the sub has arguments, then write them in
brackets, just like for a function
USING SUB PROCEDURES
Use Sub procedures for
 Tasks you want to repeat in your code

For Example
Enable textboxes
Call this sub from within another procedure
USING SUB PROCEDURES
Use Sub procedures for
 Tasks you want to repeat in your code
 Breaking a large chunk of code into smaller bits

For Example
USING SUB PROCEDURES
Use Sub procedures for
 Tasks you want to repeat in your code
 Breaking a large chunk of code into smaller bits

Using Subs in this way is ‘good practice’, but not
obligatory.
LEARNING OUTCOMES
You are ready to move on when…
 LO35: You can declare and assign a range to a range object.
You also understand when and why a range object would
be used in place of a named range or array.
 LO36: You can describe what the RefEdit tool is used for. In
addition, you can assign the value of the RefEdit tool to a
range object.
 LO37: You can describe the difference between a Sub
procedure and Function procedure. Further, you can
define what arguments are in relation to functions.
 LO38: You can write and read functions with and without
arguments (to a reasonable standard). In addition, for
functions with arguments you understand the difference
between using an array, variable or range object and can
apply that knowledge in practice.
THE END

More Related Content

PPT
Python Built-in Functions and Use cases
PPTX
Function Parameters
PPTX
Python functions part12
PPT
Create and analyse programs
DOC
Java Script Language Tutorial
PPTX
PPTX
Functions1
PDF
Functional programming java
Python Built-in Functions and Use cases
Function Parameters
Python functions part12
Create and analyse programs
Java Script Language Tutorial
Functions1
Functional programming java

What's hot (20)

PPTX
Functions in python slide share
PDF
Introduction to Python
PDF
Functional programming 101
PPTX
VISUAL BASIC 6 - CONTROLS AND DECLARATIONS
PPTX
predefined and user defined functions
PPT
Advanced Javascript
PPT
Functions
PPT
Savitch Ch 04
PPTX
SAS Macro
PDF
Python functions
PPT
Effective Java - Design Method Signature Overload Varargs
PPTX
Function in c++
PPTX
User defined Functions in MATLAB Part 1
PPTX
Introduction to Matlab Scripts
PPT
Intro to tsql unit 11
PPTX
Inline function
PPT
Lecture 4
PDF
Applicative Functor - Part 2
PDF
Cp module 2
PPTX
Function C++
Functions in python slide share
Introduction to Python
Functional programming 101
VISUAL BASIC 6 - CONTROLS AND DECLARATIONS
predefined and user defined functions
Advanced Javascript
Functions
Savitch Ch 04
SAS Macro
Python functions
Effective Java - Design Method Signature Overload Varargs
Function in c++
User defined Functions in MATLAB Part 1
Introduction to Matlab Scripts
Intro to tsql unit 11
Inline function
Lecture 4
Applicative Functor - Part 2
Cp module 2
Function C++
Ad

Viewers also liked (10)

PDF
Using Functions in Excel
PPTX
Excel functions
PPT
How to find the range of a composite function
PPT
MS excel functions
PPT
Using The Function In Excel 3
PPTX
MS EXCEL PPT PRESENTATION
PPTX
Composition and inverse of functions
PPT
Composite functions
PPT
Inverse composite functions
PPT
Composition Of Functions
Using Functions in Excel
Excel functions
How to find the range of a composite function
MS excel functions
Using The Function In Excel 3
MS EXCEL PPT PRESENTATION
Composition and inverse of functions
Composite functions
Inverse composite functions
Composition Of Functions
Ad

Similar to MA3696 Lecture 9 (20)

PDF
Unit iii vb_study_materials
PPTX
Vba introduction
PPTX
Ma3696 Lecture 1
DOC
Excel Vba Basic Tutorial 1
PDF
MA3696 Lecture 5
PPT
Spreadsheets: Functional Programming for the Masses
PDF
Excel formulas-manual
PPTX
Vba Class Level 1
PPTX
MIS 226: Chapter 2
PPT
Excell vba
PDF
Excel-Quick-Reference-Guide.pdf
PDF
200 Mega eBook Collection- http://bit.ly/3WEZuYJ
PPTX
Unit 6: Functions and Subroutines
PDF
procedures and arrays
PPTX
Excel 2016 VBA PPT Slide Deck - For Basic to Adavance VBA Learning
PPT
ملخص البرمجة المرئية - الوحدة الخامسة
PDF
Online Advance Excel & VBA Training in India
DOCX
Formula of Excel for new user around the world.docx
PPTX
Unit 7: Built-In Functions
PDF
MS Excel Overall Power Point Presentatio
Unit iii vb_study_materials
Vba introduction
Ma3696 Lecture 1
Excel Vba Basic Tutorial 1
MA3696 Lecture 5
Spreadsheets: Functional Programming for the Masses
Excel formulas-manual
Vba Class Level 1
MIS 226: Chapter 2
Excell vba
Excel-Quick-Reference-Guide.pdf
200 Mega eBook Collection- http://bit.ly/3WEZuYJ
Unit 6: Functions and Subroutines
procedures and arrays
Excel 2016 VBA PPT Slide Deck - For Basic to Adavance VBA Learning
ملخص البرمجة المرئية - الوحدة الخامسة
Online Advance Excel & VBA Training in India
Formula of Excel for new user around the world.docx
Unit 7: Built-In Functions
MS Excel Overall Power Point Presentatio

More from Brunel University (7)

PDF
MA3696 Lecture 8
PDF
MA3696 Lecture 7
PDF
MA3696 Lecture 6
PDF
Ma3696 lecture 4
PDF
Ma3696 Lecture 3
PDF
Ma3696 Lecture 2
PPTX
Ma3696 Lecture 0
MA3696 Lecture 8
MA3696 Lecture 7
MA3696 Lecture 6
Ma3696 lecture 4
Ma3696 Lecture 3
Ma3696 Lecture 2
Ma3696 Lecture 0

Recently uploaded (20)

PPTX
Institutional Correction lecture only . . .
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PPTX
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
Cell Types and Its function , kingdom of life
PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Classroom Observation Tools for Teachers
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
Anesthesia in Laparoscopic Surgery in India
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
PPH.pptx obstetrics and gynecology in nursing
Institutional Correction lecture only . . .
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Cell Types and Its function , kingdom of life
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
Final Presentation General Medicine 03-08-2024.pptx
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Abdominal Access Techniques with Prof. Dr. R K Mishra
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Classroom Observation Tools for Teachers
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Microbial diseases, their pathogenesis and prophylaxis
Anesthesia in Laparoscopic Surgery in India
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
O5-L3 Freight Transport Ops (International) V1.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Microbial disease of the cardiovascular and lymphatic systems
PPH.pptx obstetrics and gynecology in nursing

MA3696 Lecture 9

  • 2. SUMMARY Range objects Obtaining a range using the RefEdit control User-Defined Functions  Without arguments  With arguments  Variables, constants, arrays and range objects
  • 3. RANGE OBJECTS A cross between a named range and an array
  • 4. RANGE OBJECTS Range objects are an alternative to using arrays and named ranges. Range objects are preferred when:  You are using the RefEdit control to allow users to select data for a program.  You are creating user defined functions which you want to use within Excel worksheets (as opposed to using them solely within your code).  You are creating an Excel add-in and don’t want to clog up the user’s workbook with range names.
  • 5. DECLARING A RANGE OBJECT A Range is a data type. So we declare a range object as: Dim rangeObj as Range  Where rangeObj is the name you want to assign to the range object Assign a range object a range within a procedure: Set rangeObj = Range Set rangeObj = Range(“RangeName”)  Where Range is a range in Excel and RangeName is a named range in Excel.  For example, Set stockRange = Range(Cells(1,1), Cells(1,25)) Set stockRange = Range(“StockPrices”)
  • 6. METHODS APPLIED TO RANGE OJBECTS You can do nearly everything the same as a range or named range in Excel. For example:  Count rows or columns rangeObj.Rows.Count rangeObj.Columns.Count  Refer to cells within the range rangeObj.Cells(i, j).Value
  • 7. REFEDIT CONTROL Letting the user select the range of data
  • 8. REFEDIT RefEdit is a UserForm control: Allows user to select a range in Excel Set this selection as a range object in your code Set rangeObj = Range(RefEdit.Value)  Where RefEdit is the (Name) of the control Then use the range however you need to  In a built-in function  In a user defined function  In place of a named range
  • 9. EXERCISE 1. REFEDIT Open Lecture 9 Student Example.xlsm Open UserForm2 In the sub for the command button code the following:  Declare a range object called userSelect  Set this range object equal to the value of the RefEdit control  Test that the works by outputting the range object to some cells  Use the .Columns.Count and .Rows.Count property to assist you  Start the output in Cells(1,6) of Sheet 1  Remember, to ‘copy’ or ‘output’ you just need to set the two ranges equal to each other  (make sure to put .Value at the end of each range)
  • 11. WHAT IS A USER DEFINED FUNCTION? Designed/created by YOU, the USER  Similar to an Excel built-in function Returns a value: number, text, True/False Always goes into a Module (not a UserForm module)  Private Function – Only used in the module it’s in  Public Function – Used in any module or in Excel Can be executed in two ways:  Called from within a Sub Procedure in VBA, OR  Used from an Excel worksheet:  Click on a cell, type =, then the name of your function
  • 12. FUNCTION DOS AND DON’TS Functions only do calculations Functions DO NOT output to cells or userforms  Do not put commands to write to cells in your function  Do not put commands to write to userform controls in your function A Sub procedure performs a series of actions  Call your function from a Sub and write the result to cells or userforms from your Sub
  • 13. ARGUMENT . AN EXAMPLE USING THE SUM FUNCTION. This is called the ARGUMENT.  Apply an operation to the argument and output the result  For SUM(), it specifies what this function should sum  In this case, we are specifying an array/range User defined functions can have arguments too
  • 14. ARGUMENT . WHEN IS IT NEEDED?  The function operates on an argument to return a value. 1 or more numbers 1 or more arrays/ranges 1 number  Some functions can return a value without operating on a variable. NO argument needed
  • 15. EXAMPLE 1. MULTIPLY 2 NUMBERS Remember Functions go in Modules!
  • 16. EXAMPLE 1. MULTIPLY 2 NUMBERS Requires 2 variables as the argument (because I want it to multiply 2 numbers together) I’ve named them x & y
  • 17. EXAMPLE 1. MULTIPLY 2 NUMBERS MUST assign each argument a data type
  • 18. EXAMPLE 1. MULTIPLY 2 NUMBERS The Function itself MUST be assigned a value WITHIN the Function If you don’t, it will NOT return a value
  • 19. USE YOUR FUNCTION IN EXCEL Use your function like a built-in Excel function • Type = then the name of the User-Defined function. • Select the function from the list. • Select/Enter the arguments. • Separate the arguments with a comma.
  • 20. EXERCISE 2. CREATE AN ADD FUNCTION Open Lecture 9 Student Example.xlsm Open Module1 Insert a function called Add2numbers  Give this function 2 arguments, x and y  Write code so that this function adds the value of x and y Test your code in an Excel worksheet – does it work?
  • 23. CALLING FUNCTIONS FROM A SUB The name of the Function
  • 24. CALLING FUNCTIONS FROM A SUB This function needs 2 arguments.
  • 26. CALLING FUNCTIONS FROM A SUB The name of the Function
  • 27. CALLING FUNCTIONS FROM A SUB This function needs 2 arguments.
  • 28. EXERCISE 3. CALLING FUNCTIONS Type this code and run the UserForm. Does it work (numbers only)?
  • 30. EXAMPLE 2. AVERAGE OF AN ARRAY The name of the Function
  • 31. EXAMPLE 2. AVERAGE OF AN ARRAY The argument is an array Any array we send to this function will be called array1 within the function
  • 32. EXAMPLE 2. AVERAGE OF AN ARRAY The number of rows in array1() is not known in the function Ubound(array1) returns the number of rows in array1
  • 33. EXAMPLE 2. AVERAGE OF AN ARRAY The Function is given a value within the Function
  • 34. EXAMPLE 2. AVERAGE OF AN ARRAY We can’t use it like a built-in function because the argument is an array. Call it from a Sub procedure
  • 35. CALL A FUNCTION FROM A PROCEDURE
  • 36. CALL A FUNCTION FROM A PROCEDURE
  • 37. CALL A FUNCTION FROM A PROCEDURE
  • 38. CALL A FUNCTION FROM A PROCEDURE
  • 39. FUNCTION V SUB PROCEDURE Function procedures  Used to return a value Sub procedures  Use to run a series of commands  Does NOT return a value For example,  If you want to output the result of a calculation in a cell  Do the calculation in a function  In a Sub Procedure, output that function to a cel l Let the cells = the value of the function within the Sub
  • 40. EXERCISE 4. FUNCTIONS USING ARRAYS Open Module2 Insert a function called AverageArray2D Inside this function write code to find the average of a 2D array.  You can start with the code for the 1D array and just modify it.  The code to calculate the number of columns in an array is UBound(arrayName, 2)  Recall the code to calculate the number of rows in a array is Ubound(arrayName)  To check that your code works,  modify Sub MainSub() so that you read in a 2D array from Excel (use the first 2 or 3 columns – it’s up to you)  Output AverageArray2D from a MsgBox in Sub MainSub()
  • 42. EXAMPLE 3. SUM A RANGE OBJECT Insert a function called SumOfRange In this function add together all elements of the range: Range object Count the number of rows and cols for the loops Use a nested loop because you have rows and columns of data Use .Cells() just like with a named range Test this function in an Excel Worksheet
  • 43. EXERCISE 5. FUNCTIONS USING RANGES Open Module2 Insert a function called AverageOfRange  Write code to calculate the average  All you really need to do is modify one of your previous functions Test your function in Excel – make sure it works
  • 45. CALLING A SUB FROM WITHIN ANOTHER SUB Very similar to calling a Function Just write Call followed by the name of the Sub For Example If I had a Sub Procedure called EnableControls() and wanted to call it from within a different Sub, I’d write: Call EnableControls If the sub has arguments, then write them in brackets, just like for a function
  • 46. USING SUB PROCEDURES Use Sub procedures for  Tasks you want to repeat in your code For Example Enable textboxes Call this sub from within another procedure
  • 47. USING SUB PROCEDURES Use Sub procedures for  Tasks you want to repeat in your code  Breaking a large chunk of code into smaller bits For Example
  • 48. USING SUB PROCEDURES Use Sub procedures for  Tasks you want to repeat in your code  Breaking a large chunk of code into smaller bits Using Subs in this way is ‘good practice’, but not obligatory.
  • 49. LEARNING OUTCOMES You are ready to move on when…  LO35: You can declare and assign a range to a range object. You also understand when and why a range object would be used in place of a named range or array.  LO36: You can describe what the RefEdit tool is used for. In addition, you can assign the value of the RefEdit tool to a range object.  LO37: You can describe the difference between a Sub procedure and Function procedure. Further, you can define what arguments are in relation to functions.  LO38: You can write and read functions with and without arguments (to a reasonable standard). In addition, for functions with arguments you understand the difference between using an array, variable or range object and can apply that knowledge in practice.