0% found this document useful (0 votes)
97 views

Intro VBA

The document provides an introduction to Visual Basic for Applications (VBA). It discusses what VBA is, how it can be used to automate tasks in Excel and other Microsoft applications. It covers VBA concepts like objects, properties, methods and events. It also demonstrates how to record macros, edit macro code, and write VBA code to develop user-defined functions and interact with workbooks, worksheets and external data files. The document uses examples and quizzes to help explain VBA fundamentals and programming.

Uploaded by

faizan
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views

Intro VBA

The document provides an introduction to Visual Basic for Applications (VBA). It discusses what VBA is, how it can be used to automate tasks in Excel and other Microsoft applications. It covers VBA concepts like objects, properties, methods and events. It also demonstrates how to record macros, edit macro code, and write VBA code to develop user-defined functions and interact with workbooks, worksheets and external data files. The document uses examples and quizzes to help explain VBA fundamentals and programming.

Uploaded by

faizan
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 39

Using Excel/VBA to Speed-up

Daily Data Processing

An Introduction to VBA
Yongjun Chen

Current
EXCEL
Status
VBA
Waiting
101 Click Me to Start …
An Introduction to VBA
- Agenda
What is VBA
What is Object
How to Record Macro
VBA Editor Window
Example 1
VBA Fundamental
Create User Defined Functions (Example 2)
Work with Workbook & Worksheet
I/O with External Data Files (Example 3)
Capture Built-in Event (Example 4)
An Introduction to VBA
- What is VBA

 An abbreviation for Visual Basic for Applications


 Official name is "Visual Basic, Applications Edition."
 VBA is Microsoft's common application programming
(macro) language for Word, Excel, Access, etc.
 Also being implemented in other Microsoft applications
such as Visio and is at least partially implemented in
some other applications such as AutoCAD...
 VBA and VB have a lot in common, but they are
different. VB is a programming language that lets you
create standalone executable programs.
An Introduction to VBA
- What Can You Do With VBA
 Write Macros to Automate Labor-Intensive and Repetitive
Tasks

 Create User-Defined Functions to Achieve Complicated


Functionality

 Create Standard Windows Menu/Tool Bars for Interface

 Interact with Other Windows Programs (like Matlab)

 I/O with External Files

 Database Operation ….
An Introduction to VBA
- VBA- Object Based Programming Language
 C++, Java, etc. are OOP (Object Oriented Programming)
Language

 VBA is an Object Based Programming Language

 What is Object?
An Introduction to VBA
- VBA Object Based Programming Language

 Concepts – Containers or Collections


 A Group of Similar Objects Share Common Properties,
Methods and Events
 Such as Workbooks, Worksheets, etc.
 Worksheets is a collection of all the Worksheet objects
in the specified or active workbook.
 Worksheets(1) refers to the 1st worksheet of current
active workbook.
 Worksheets (“mooring”) refers to the worksheet named
“mooring”.
An Introduction to VBA
- VBA Object Based Programming Language

 Concepts – Objects
 Such as Worksheet, Workbook, Range, Cell, Chart,
Name, etc.
 Worksheets(1) is an Object Referring to the First Sheet
 Range("A1:B15") is an Object Referring to a Range
 Cells(1,1) or Range(“A1”) is an Object Referring to
Range “A1”
An Introduction to VBA
- VBA Object Based Programming Language

 Concepts – Properties
 Properties are the Physical Characteristics of Objects
and Can be Measured or Quantified.
 Properties for Collections
 - Worksheets.Count (Read Only)
 - Worksheets.Visible = True (Read and Write)
 Properties for Object
 - Range("A1:B15").Rows.Count (Read Only)
 - Range("A1:B15").Font.Bold = True (Read and Write)
An Introduction to VBA
- VBA Object Based Programming Language

 Concepts – Methods
 Methods are the Actions that Can be Performed by
Objects or on Objects
 Methods for Collections
 - Worksheets.Add
 - Worksheets.Delete
 Methods for Objects
 - Range("A1:B15").ClearContents
 - ActiveCell.Copy
An Introduction to VBA
- VBA Object Based Programming Language

 Concepts – Events
 Objects Can Respond to Events, Such as Mouse Click,
Double Click on a Cell, Active a Worksheet,
Open/Close/Save a Workbook, etc.
 Worksheet Events –
 Such as Activate, Deactivate, Change, Selection
Change, Before Double Click, etc.
 Workbook Events-
 Such as Activate, Deactivate, Open, Before Close,
Before Saving, Before Print, New Sheet.
An Introduction to VBA
- VBA Object Based Programming Language

 Concepts – Referring To
 Use brackets () to refer to member object
 Worksheets(“mooring”)
 Use dot . to refer to child object or object’s
properties and methods
 Worksheets(“mooring”).Range(“A1:B3”).Font.Bold
An Introduction to VBA
- VBA Object Based Programming Language

 Concept Collections
(worksheets)
Summary

Objects
(worksheet)

Properties Method
name Add

Event
Activate
An Introduction to VBA
- VBA Object Based Programming Language

 Understand Object Concepts


Workbooks("book1.xls").Worksheets("sheet1").Range("A1").Font.Bold = True

ActiveWorkbook.ActiveSheet.Cells(1, 1).ClearContents

Private Sub Workbook_Open()


MsgBox "Thank you for choosing VBA"
End Sub
An Introduction to VBA
- VBA Object Based Programming Language

 Quiz 1
 Which of the following is not a valid Excel object
 i) ActiveWorkbook
 ii) ActiveSheet
 iii) ActiveCell
 iv) ActiveRange

A) None B) i C) iii D) iv
An Introduction to VBA
- First Step to VBA : Macros

 Record Macro
 Similar to audio/video recorder
 Record all the steps you conduct and write them
in VBA code

If macros are disabled when


you start Excel, change the
security level to medium
An Introduction to VBA
- First Step to VBA : Macros

 Assign Macro to An Event


 Normally User Run Macros from VBA Edit
Window – Unnecessary
 User Can Assign Macro to An Event, Normally a
Button Click Event
 Easy to Execute and Easy to Remember
 Give a Good Name for The Button and Click the
Button to Run the Macro
An Introduction to VBA
- First Step to VBA : Macros

 Assign Macro to An Event


An Introduction to VBA
- Second Step to VBA : Edit Macro

 VBA Editor Window


 Press Alt+F11 to Activate VBA Window
 Or Go to Menu Tools>Macros>Visual Basic
Editor

 Project Explore Window


 Properties Window
 Code Window
 Tools>Options>Docking Window
An Introduction to VBA
- Second Step to VBA : Edit Macro

 VBA Editor Window


 Use Tools/Options to Enable Auto Syntax
Check, Auto List Members, etc.
 Use Tools/Properties to Protect Your Code with
Password – You Must Remember the Password
 Insert Module, Procedure, Form
An Introduction to VBA
- Second Step to VBA : Edit Macro

 Sample

 Record Macro
See Demo
 Understand Macro
 Modify Macro
 Assign Macro to Button Click Event
An Introduction to VBA
- Second Step to VBA : Edit Macro

 Understand VBA Editor Window


Project window
Shows files, sheets Auto list member
and modules Auto list data /
parameter

Property window Code window


Show properties of VBA codes are
active object and here.
let user to modify
the properties
An Introduction to VBA
- Second Step to VBA : Edit Macro

 Quiz 2
 For the following four actions
 i) Type formula in another workbook/file
 ii) Change macro security level
 iii) Print another worksheet in the same workbook
 iv) Open a Word file

What can not be recorded in a macro


A) ii only B) iv only C) ii & iv D) iii & iv
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Fundamental of VBA

 Variables: can be define explicit or implicit use dim statement


 Constant use const pi =3.1415926
 Function: pair of function … end function
 Subroutine: pair of sub … end sub
 Comment use single quotation ‘
 Continuation use underline _
 Use with … end with for object
 Assign object use set and assign data variable use =
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Fundamental of VBA

 Decision Making use If… elseif…else…end if


 Multiple Selection/Decision Making
Select Case Var… Case A … Case B…Case Else… End Select
 Loop use
Do While … Loop Do … Loop Until
For … Next For Each … Next
 Array – dim Data(10) as integer , Val(2 to 8) as object
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Fundamental of VBA

 Function
 Public , Private, Return Value
 Parameter

 Subroutine
 Public, Private, No Return Value
 Parameter
An Introduction to VBA
- Third Step to VBA : Write VBA Code
 Understand Code
Worksheets("sheet1").Activate
Range("A1:A10").ClearContents 1) Make sheet1 active

For i = 1 To 10 2) Clear range A1:A10


Range("A" & i) = i ^ 2
Next 3) Type 1,4,9,…100 in to range
Range("A1:A10").Font.Bold = True A1, A2, … A10
For Each cl In Range("A1:A10")
If cl.Value < 25 Or cl.Value > 75 Then 4) Set font to bold for all cells in
cl.Font.Italic = True the range
Else
cl.Font.Underline = True 5) Make cell italic if the cell’s
End If
Next value is <25 or >75,
otherwise underline
Msgbox “All done”
6) Display message “All done”
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Quiz 3
 Function myTest(a as integer, b as integer) as integer
 myTest = a + b
 myTest = myTest + 1
 Range("D1").Value = myTest
 MsgBox "All done”
 End function
Which statement will cause problem for myTest
A) 1st one B) 2nd one C) 3rd one D) 4th one
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Create User-Defined Functions See Demo

Public Function myFun(x As Integer, y As Integer) As Integer


myFun = x * y + x / y
End Function

Arguments Return Value Type


Must start with
Keyword “Function”
and end with “End The return value must be
Function” assigned to the function name
An Introduction to VBA
- Third Step to VBA : Write VBA Code
' Refer A Workbook
 Work Workbooks(1) ' Use Index
with Workbooks("Results.Xls") ' Use Name
ActiveWorkbook ' Refers to the Active Workbook
Workbook
' Create A New Workbook
Dim NewWkBk as Workbook
Set NewWkBk = Workbooks.Add
With NewWkBk
.Title = "Analysis Resultd"
Use With
Statement
.Subject = "Results for Analysis"
.SaveAs Filename:="Results.xls"
(faster) End With
An Introduction to VBA
- Third Step to VBA : Write VBA Code
' Open / Activate / Save /Close Workbook
Fname ="C:\AnalysisResutls\Results.xls"
Workbooks.Open(Fname)
Workbooks("Results.xls").Activate
Workbooks("Results.xls").Save
Workbooks("Results.xls").Close SaveChanges:=True ‘
For Each
' Loop All Open Workbooks Statement
Dim wkbk As Workbook
For Each wkbk In Workbooks
Msgbox "Workbook " & wkbk.Name & " Has " &
Workbooks(k).Sheets.Count & " Sheets", vbInformation
Next
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Work ' Refer A Worksheet


Worksheets(1) ' Use Index Worksheets("Sheet1") ' Use
with Name ActiveWorksheet ' Active Worksheet
Worksheet Workbooks("TestSht.xls").Worksheets("Sht2")
' Add /Activate/Delete A New Worksheet
Workbooks("TestSht.xls").Worksheets.Add
Sheets("NewSht").Activate
Workbooks(“A.xls").Sheets(“B").Activate
Sheets("NewSht").Delete
An Introduction to VBA
- Third Step to VBA : Write VBA Code

‘Rename / Extract A Worksheet


Workbooks("TestSht.xls").Sheets("NewSht").name = "NewSht2"
MsgBox "Current Sheet Name is " & ActiveSheet.Name
' Count Sheets
MsgBox "Current Workbook Has " & Sheets.Count & " sheets"

' Loop All Sheets


Dim sht As Worksheet
For Each sht In ActiveWorkbook.Sheets
MsgBox sht.Name & " A1 = " & Range(“A1").Value
Next
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 I/O with External Data Files


Sub Output00()
Open ThisWorkbook.Path & "\test.dat" For Output As #1
Print #1, "This is a test of using VBA to output results"
Print #1, "The result is " &
Worksheets(“Summary").Range(“A1").Value
Print #1, "End of Test File"
Close #1
End Sub
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 I/O with External Data Files See Demo


Sub Input00()
Dim tmpstr As String
Open ThisWorkbook.Path & "\test.dat" For Input As #1
Line Input #1, tmpstr
Line Input #1, tmpstr
Range(“A1").Value = tmpstr
Close #1
End Sub
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Capture Built-In Event See Demo


Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox “ …”
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Msgbox “ …”
End Sub
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Review/Understand of Our First Macro


Sub MySummarize()
'
' Modified from Summarize Macro
'

'1) Define variables - worksheet and file id


Dim sht As Worksheet, wkbk As Workbook
Dim ifile As Integer, sfile As String

'2) Assign variable: object use set and data use =


Set sht = Sheets.Add
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Review/Understand of Our First Macro

With sht ' use with to speed up and save typing


.Name = "Summary2"
.Range("A1").Value = "Case Name"
.Range("A2") = "Case ID" ' default property is value
.Range("A3") = "Weight"
.Range("A4") = "XCG"
.Range("A5") = "YCG"
.Range("A6") = "ZCG"
.Range("A1:A6").Font.Bold = True
.Range("A1:A6").HorizontalAlignment = xlLeft
An Introduction to VBA
- Third Step to VBA : Write VBA Code

 Review/Understand of Our First Macro


For ifile = 1 To 3 Step 1 ' loop all files
sfile = "Case" & ifile & ".xls" ' create file name
sfile = ThisWorkbook.Path & "\" & sfile ' specify file path
Set wkbk = Workbooks.Open(sfile) ' open file
wkbk.ActiveSheet.Range("B1:B6").Copy ' copy data
.Paste .Cells(1, ifile + 1) ' paste to this workbook
wkbk.Close SaveChanges:=False ' close file
Next
.Columns("A:D").AutoFit
End With

MsgBox "File Summarize are Done", vbInformation, "VBA Demo"


An Introduction to VBA
- Learning via Practice & Ask

Questions / Comments
Where to get help:
Use F1 key in VBA editor (like type keyword msgbox to search help)
Microsoft Users Excel Programming Discussion
www.microsoft.com/office/community/en-
us/default.mspx?dg=microsoft.public.excel.programming&lang=en&cr=US
http://www.excelforum.com/

You might also like