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

What's hot (20)

Functions in python slide share
Functions in python slide shareFunctions in python slide share
Functions in python slide share
Devashish Kumar
 
Introduction to Python
Introduction to Python  Introduction to Python
Introduction to Python
Mohammed Sikander
 
Functional programming 101
Functional programming 101Functional programming 101
Functional programming 101
Maneesh Chaturvedi
 
VISUAL BASIC 6 - CONTROLS AND DECLARATIONS
VISUAL BASIC 6 - CONTROLS AND DECLARATIONSVISUAL BASIC 6 - CONTROLS AND DECLARATIONS
VISUAL BASIC 6 - CONTROLS AND DECLARATIONS
Suraj Kumar
 
predefined and user defined functions
predefined and user defined functionspredefined and user defined functions
predefined and user defined functions
Swapnil Yadav
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
relay12
 
Functions
FunctionsFunctions
Functions
Online
 
Savitch Ch 04
Savitch Ch 04Savitch Ch 04
Savitch Ch 04
Terry Yoast
 
SAS Macro
SAS MacroSAS Macro
SAS Macro
Sonal Shrivastav
 
Python functions
Python functionsPython functions
Python functions
Prof. Dr. K. Adisesha
 
Effective Java - Design Method Signature Overload Varargs
Effective Java - Design Method Signature Overload VarargsEffective Java - Design Method Signature Overload Varargs
Effective Java - Design Method Signature Overload Varargs
Roshan Deniyage
 
Function in c++
Function in c++Function in c++
Function in c++
Kumar
 
User defined Functions in MATLAB Part 1
User defined Functions in MATLAB Part 1User defined Functions in MATLAB Part 1
User defined Functions in MATLAB Part 1
Shameer Ahmed Koya
 
Introduction to Matlab Scripts
Introduction to Matlab ScriptsIntroduction to Matlab Scripts
Introduction to Matlab Scripts
Shameer Ahmed Koya
 
Intro to tsql unit 11
Intro to tsql   unit 11Intro to tsql   unit 11
Intro to tsql unit 11
Syed Asrarali
 
Inline function
Inline functionInline function
Inline function
Tech_MX
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
Mohammed Saleh
 
Applicative Functor - Part 2
Applicative Functor - Part 2Applicative Functor - Part 2
Applicative Functor - Part 2
Philip Schwarz
 
Cp module 2
Cp module 2Cp module 2
Cp module 2
Amarjith C K
 
Function C++
Function C++ Function C++
Function C++
Shahzad Afridi
 
Functions in python slide share
Functions in python slide shareFunctions in python slide share
Functions in python slide share
Devashish Kumar
 
VISUAL BASIC 6 - CONTROLS AND DECLARATIONS
VISUAL BASIC 6 - CONTROLS AND DECLARATIONSVISUAL BASIC 6 - CONTROLS AND DECLARATIONS
VISUAL BASIC 6 - CONTROLS AND DECLARATIONS
Suraj Kumar
 
predefined and user defined functions
predefined and user defined functionspredefined and user defined functions
predefined and user defined functions
Swapnil Yadav
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
relay12
 
Functions
FunctionsFunctions
Functions
Online
 
Effective Java - Design Method Signature Overload Varargs
Effective Java - Design Method Signature Overload VarargsEffective Java - Design Method Signature Overload Varargs
Effective Java - Design Method Signature Overload Varargs
Roshan Deniyage
 
Function in c++
Function in c++Function in c++
Function in c++
Kumar
 
User defined Functions in MATLAB Part 1
User defined Functions in MATLAB Part 1User defined Functions in MATLAB Part 1
User defined Functions in MATLAB Part 1
Shameer Ahmed Koya
 
Introduction to Matlab Scripts
Introduction to Matlab ScriptsIntroduction to Matlab Scripts
Introduction to Matlab Scripts
Shameer Ahmed Koya
 
Intro to tsql unit 11
Intro to tsql   unit 11Intro to tsql   unit 11
Intro to tsql unit 11
Syed Asrarali
 
Inline function
Inline functionInline function
Inline function
Tech_MX
 
Applicative Functor - Part 2
Applicative Functor - Part 2Applicative Functor - Part 2
Applicative Functor - Part 2
Philip Schwarz
 

Viewers also liked (10)

Using Functions in Excel
Using Functions in ExcelUsing Functions in Excel
Using Functions in Excel
Casey Robertson
 
Excel functions
Excel functionsExcel functions
Excel functions
cherrybear2014
 
How to find the range of a composite function
How to find the range of a composite functionHow to find the range of a composite function
How to find the range of a composite function
Wee Wen Shih
 
MS excel functions
MS excel functionsMS excel functions
MS excel functions
Marsha Superio
 
Using The Function In Excel 3
Using The Function In Excel 3Using The Function In Excel 3
Using The Function In Excel 3
norzaini
 
MS EXCEL PPT PRESENTATION
MS EXCEL PPT PRESENTATIONMS EXCEL PPT PRESENTATION
MS EXCEL PPT PRESENTATION
Mridul Bansal
 
Composition and inverse of functions
Composition  and inverse of functionsComposition  and inverse of functions
Composition and inverse of functions
Charliez Jane Soriano
 
Composite functions
Composite functionsComposite functions
Composite functions
Jessica Garcia
 
Inverse composite functions
Inverse composite functionsInverse composite functions
Inverse composite functions
Debra Wallace
 
Composition Of Functions
Composition Of FunctionsComposition Of Functions
Composition Of Functions
sjwong
 
Using Functions in Excel
Using Functions in ExcelUsing Functions in Excel
Using Functions in Excel
Casey Robertson
 
How to find the range of a composite function
How to find the range of a composite functionHow to find the range of a composite function
How to find the range of a composite function
Wee Wen Shih
 
Using The Function In Excel 3
Using The Function In Excel 3Using The Function In Excel 3
Using The Function In Excel 3
norzaini
 
MS EXCEL PPT PRESENTATION
MS EXCEL PPT PRESENTATIONMS EXCEL PPT PRESENTATION
MS EXCEL PPT PRESENTATION
Mridul Bansal
 
Composition and inverse of functions
Composition  and inverse of functionsComposition  and inverse of functions
Composition and inverse of functions
Charliez Jane Soriano
 
Inverse composite functions
Inverse composite functionsInverse composite functions
Inverse composite functions
Debra Wallace
 
Composition Of Functions
Composition Of FunctionsComposition Of Functions
Composition Of Functions
sjwong
 

Similar to MA3696 Lecture 9 (20)

Python programming variables and comment
Python programming variables and commentPython programming variables and comment
Python programming variables and comment
MalligaarjunanN
 
Powerpoint presentation for Python Functions
Powerpoint presentation for Python FunctionsPowerpoint presentation for Python Functions
Powerpoint presentation for Python Functions
BalaSubramanian376976
 
python slides introduction interrupt.ppt
python slides introduction interrupt.pptpython slides introduction interrupt.ppt
python slides introduction interrupt.ppt
Vinod Deenathayalan
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
home
 
functions.pptx
functions.pptxfunctions.pptx
functions.pptx
KavithaChekuri3
 
Py-Slides-3 difficultpythoncoursefforbeginners.ppt
Py-Slides-3 difficultpythoncoursefforbeginners.pptPy-Slides-3 difficultpythoncoursefforbeginners.ppt
Py-Slides-3 difficultpythoncoursefforbeginners.ppt
mohamedsamydeveloper
 
Chapter9 more on database and sql
Chapter9 more on database and sqlChapter9 more on database and sql
Chapter9 more on database and sql
KV(AFS) Utarlai, Barmer (Rajasthan)
 
JNTUK python programming python unit 3.pptx
JNTUK python programming python unit 3.pptxJNTUK python programming python unit 3.pptx
JNTUK python programming python unit 3.pptx
Venkateswara Babu Ravipati
 
C language 3
C language 3C language 3
C language 3
Arafat Bin Reza
 
C Programming - Refresher - Part II
C Programming - Refresher - Part II C Programming - Refresher - Part II
C Programming - Refresher - Part II
Emertxe Information Technologies Pvt Ltd
 
C functions
C functionsC functions
C functions
University of Potsdam
 
10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD
10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD
10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD
RuzelAmpoan1
 
Functional Objects & Function and Closures
Functional Objects  & Function and ClosuresFunctional Objects  & Function and Closures
Functional Objects & Function and Closures
Sandip Kumar
 
Javascript functions
Javascript functionsJavascript functions
Javascript functions
Alaref Abushaala
 
Module 3-Functions
Module 3-FunctionsModule 3-Functions
Module 3-Functions
nikshaikh786
 
All chapters C++ - Copy.pdfyttttttttttttttttttttttttttttt
All chapters C++ - Copy.pdfytttttttttttttttttttttttttttttAll chapters C++ - Copy.pdfyttttttttttttttttttttttttttttt
All chapters C++ - Copy.pdfyttttttttttttttttttttttttttttt
jacobdiriba
 
Python programming - Functions and list and tuples
Python programming - Functions and list and tuplesPython programming - Functions and list and tuples
Python programming - Functions and list and tuples
MalligaarjunanN
 
Python Functions.pptx
Python Functions.pptxPython Functions.pptx
Python Functions.pptx
AnuragBharti27
 
Python Functions.pptx
Python Functions.pptxPython Functions.pptx
Python Functions.pptx
AnuragBharti27
 
functions _
functions                                 _functions                                 _
functions _
SwatiHans10
 
Python programming variables and comment
Python programming variables and commentPython programming variables and comment
Python programming variables and comment
MalligaarjunanN
 
Powerpoint presentation for Python Functions
Powerpoint presentation for Python FunctionsPowerpoint presentation for Python Functions
Powerpoint presentation for Python Functions
BalaSubramanian376976
 
python slides introduction interrupt.ppt
python slides introduction interrupt.pptpython slides introduction interrupt.ppt
python slides introduction interrupt.ppt
Vinod Deenathayalan
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
home
 
Py-Slides-3 difficultpythoncoursefforbeginners.ppt
Py-Slides-3 difficultpythoncoursefforbeginners.pptPy-Slides-3 difficultpythoncoursefforbeginners.ppt
Py-Slides-3 difficultpythoncoursefforbeginners.ppt
mohamedsamydeveloper
 
10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD
10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD
10 Functions.pptx DSDFDFDFDFDFDFDFDFFDFDFD
RuzelAmpoan1
 
Functional Objects & Function and Closures
Functional Objects  & Function and ClosuresFunctional Objects  & Function and Closures
Functional Objects & Function and Closures
Sandip Kumar
 
Module 3-Functions
Module 3-FunctionsModule 3-Functions
Module 3-Functions
nikshaikh786
 
All chapters C++ - Copy.pdfyttttttttttttttttttttttttttttt
All chapters C++ - Copy.pdfytttttttttttttttttttttttttttttAll chapters C++ - Copy.pdfyttttttttttttttttttttttttttttt
All chapters C++ - Copy.pdfyttttttttttttttttttttttttttttt
jacobdiriba
 
Python programming - Functions and list and tuples
Python programming - Functions and list and tuplesPython programming - Functions and list and tuples
Python programming - Functions and list and tuples
MalligaarjunanN
 

More from Brunel University (9)

MA3696 Lecture 8
MA3696 Lecture 8MA3696 Lecture 8
MA3696 Lecture 8
Brunel University
 
MA3696 Lecture 7
MA3696 Lecture 7MA3696 Lecture 7
MA3696 Lecture 7
Brunel University
 
MA3696 Lecture 6
MA3696 Lecture 6MA3696 Lecture 6
MA3696 Lecture 6
Brunel University
 
MA3696 Lecture 5
MA3696 Lecture 5MA3696 Lecture 5
MA3696 Lecture 5
Brunel University
 
Ma3696 lecture 4
Ma3696 lecture 4Ma3696 lecture 4
Ma3696 lecture 4
Brunel University
 
Ma3696 Lecture 3
Ma3696 Lecture 3Ma3696 Lecture 3
Ma3696 Lecture 3
Brunel University
 
Ma3696 Lecture 2
Ma3696 Lecture 2Ma3696 Lecture 2
Ma3696 Lecture 2
Brunel University
 
Ma3696 Lecture 0
Ma3696 Lecture 0Ma3696 Lecture 0
Ma3696 Lecture 0
Brunel University
 
Ma3696 Lecture 1
Ma3696 Lecture 1Ma3696 Lecture 1
Ma3696 Lecture 1
Brunel University
 

Recently uploaded (20)

Sinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_NameSinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_Name
keshanf79
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdfBiophysics Chapter 3 Methods of Studying Macromolecules.pdf
Biophysics Chapter 3 Methods of Studying Macromolecules.pdf
PKLI-Institute of Nursing and Allied Health Sciences Lahore , Pakistan.
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public SchoolsK12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
dogden2
 
P-glycoprotein pamphlet: iteration 4 of 4 final
P-glycoprotein pamphlet: iteration 4 of 4 finalP-glycoprotein pamphlet: iteration 4 of 4 final
P-glycoprotein pamphlet: iteration 4 of 4 final
bs22n2s
 
SPRING FESTIVITIES - UK AND USA -
SPRING FESTIVITIES - UK AND USA            -SPRING FESTIVITIES - UK AND USA            -
SPRING FESTIVITIES - UK AND USA -
Colégio Santa Teresinha
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessUltimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Mark Soia
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 4-30-2025.pptx
YSPH VMOC Special Report - Measles Outbreak  Southwest US 4-30-2025.pptxYSPH VMOC Special Report - Measles Outbreak  Southwest US 4-30-2025.pptx
YSPH VMOC Special Report - Measles Outbreak Southwest US 4-30-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
apa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdfapa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdf
Ishika Ghosh
 
Operations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdfOperations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdf
Arab Academy for Science, Technology and Maritime Transport
 
Sinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_NameSinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_Name
keshanf79
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
New Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptxNew Microsoft PowerPoint Presentation.pptx
New Microsoft PowerPoint Presentation.pptx
milanasargsyan5
 
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Niamh Lucey, Mary Dunne. Health Sciences Libraries Group (LAI). Lighting the ...
Library Association of Ireland
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx2541William_McCollough_DigitalDetox.docx
2541William_McCollough_DigitalDetox.docx
contactwilliamm2546
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public SchoolsK12 Tableau Tuesday  - Algebra Equity and Access in Atlanta Public Schools
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schools
dogden2
 
P-glycoprotein pamphlet: iteration 4 of 4 final
P-glycoprotein pamphlet: iteration 4 of 4 finalP-glycoprotein pamphlet: iteration 4 of 4 final
P-glycoprotein pamphlet: iteration 4 of 4 final
bs22n2s
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessUltimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Mark Soia
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
apa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdfapa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdf
Ishika Ghosh
 

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.