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

VBA Notes

Uploaded by

Chrispin Barnigo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

VBA Notes

Uploaded by

Chrispin Barnigo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

BASIC OF VBA

to start programming, lagi dapat na


sub NAMENGTITLE ()

To insert a commant, use " ' " it will be indicated in green and not be part of the
code

*BASIC VBA SENTENCES*


object.method (first is define mo muna ano yung object tapos full stop represent
by " . "
then yung method na gusto mong gawin sa object

*Example on how to add titles on cells*


Range("A1").Value = "Created By"

*Example on how to add values to cells*


Range("A2").Value = Environ("Username") - para ma input yung username ng pc
Range("B2").Value = date - para ma input yung date today

*Example on how to Format cells*


Range("A1:A3").Font.color = vbBlue
Range("A1:A3").Interior.color = rgbLightCyan

*How to select a cell and input data on it*


Worksheets("Sheet1").Range("A3").Select
ActiveCell.Value = 11

*How to include data infinitely*


Range("B3",range("B3").End(xlDown))

*How to Find The end list and offset cells*


Worksheets("Sheet1").Range("A1").End(xlDown).Offset(1,0).Value = 13

*Keyboard ShortCut*
Ctrl+Spacebar - para mag pop up lahat ng mga commands

*Ctrl + space bar and then len command is short for length*
len(FilmName

*When we sa int it will return a whole number*

*When we say mod it will return the remainder of the divided number*

___________________________________________________________________________

VARIABLES

*What is variable*
Basically dito na iistore yung information na nilagay mo

*It is necessary to declare variable?*


Yes to prevent possible misspell errors in the future

*How to declare variable?*


dim NewFilmName as string

*How to connect two subroutine code?*


Call "Input pangalan ng Sub"

*Declare variables before sub routine or after option explicit for it to recognized
in whole module*

*Use public instead of dim if you want the variables to declare even in other
modules*

*Other things is pag public instead of dim ginamit na reretain yung value ng
variable unlike sa dim na nagrereset*

*What is object Variable?*


Dito ang ginagawa is kaya niya mag store ng information sa different object or
range

*How to declare and set object variable?*


dim FilmNameCells as Range
Set FilmNameCells = Range("B2:B13")
FilmNameCells.Font.Color = rgbBlue

*How to store new objects in new worksheets?*


Dim MyNewsheet As worksheet
Worksheets.Add
Set MyNewsheet = ActiveSheet

___________________________________________________________________________

MESSAGE BOXES

*How to Input a message*


Msgbox "I like pizza"

*To join text together use " & "

*How to Put message in the next line?*


Msgbox "I am groot" & vbNewLine & "No you are not"

*How to display message on cell values*


Range("B12").select
Msgbox Activecell.Value & " was released on " & ActiveCell.offset(1,0).Value

*How to display answer to a question in Msgbox?*


Msgbox "Do you like pizza?", vbQuestion + vbYesNo, "Food Question"

*How to store the result of msgbox?"


Dim ButtonClicked As VbMsgBoxResult

ButtonClicked = MsgBox("Do you like pizza?", vbQuestion + vbYesNo, "Food


Question")

if ButtonClicked = vbYes then


Msgbox "Yes, Pizza are my favorite!"
Else
Msgbox "Why not? are you tongue stupid?"
End if

___________________________________________________________________________

INPUT BOXES
*How to capture the results of InputBox*
Dim YourName As string
YourName = inputbox ("Please type your name")
Msgbox "Hello " & YourName

___________________________________________________________________________

*How to convert data types?*


Dim strFilmDate as string
Dim datFilmDate as Date

strFilmDate = inputbox("Type the Released Date")

If strFilmDate = "" then


Msgbox "You didn't Enter a Valid date"
Exit Sub
End if

datFilmDate = CDate(strFilmDate)

___________________________________________________________________________

APPLICATION INPUT BOX

*Advantage of application.inputbox *
Yung mga limitation sa inputbox kaya ma gawan ng paraan sa application.inputbox
Kusa narin mag kakaron ng for example : You did not enter a valid number, etc.
Unlike sa inputbox na i cocode mo pa yung output na yan

*Code niya is application.inputbox*

*How to return a reference to multiple cells?*


Dim CopyRange as range
Dim PasteDestination as range

Set CopyRange = application.inputbox(Prompt:="Choose Cells to Copy, Type:= 8)


Set PasteDestination= application.inputbox(Prompt:="Choose Cells to Paste,
Type:= 8)

CopyRange.copy PasteDestination

___________________________________________________________________________

WITH STATEMENT

*useful siya pag finoformat mo yung mga cell kasi pwedeng di mo na siya paulit ulit
na irefer*
With Range("C3:C15")
.Font.Color = vbBlue
.Font.Italic = True
End With

___________________________________________________________________________

LOOP

*Do while or Do until depends on your codes*


*How to do simple loop?*
Range("A3").select
Do
Activecell.Offset(1,0).Select
Loop

*How to end Do Loop command?*


Range("A3").select
Do until Activecell.Value = ''
Activecell.Offset(1,0).Select
Loop

or

Range("A3").select
Do
Activecell.Offset(1,0).Select
Loop Until Activecell.value = ""

*How to exit Do loop?*


Range("A3").select
Do
if Activecell.Value = 0 then exit do
Activecell.Offset(1,0).Select
Loop

*How to run code faster when using Loop?*


Before the Do function type application.Screenupdating = false
and then after loop function type application.screenupdating = true

*How to turn off copy selection when loop ends?*


After Loop function type Application.CutCopymode = false

___________________________________________________________________________

FOR NEXT LOOP

*what is loop counter?*


to specify how many times you want your loop to run

*what is Step Keyword*


So that you can control how your loop counter is incremented o decremented

*What is the syntax for loop counter?*

Dim LoopCounter As Integer


For LoopCounter = 1 To 10
Debug.Print "LoopCounter = " & LoopCounter
Next LoopCounter

*What if you want to increment it in 2 numbers?*

Dim LoopCounter As Integer


For LoopCounter = 1 To 10 step 2
Debug.Print "LoopCounter = " & LoopCounter
Next LoopCounter

*How to exit from next loop?*


Option Explicit

Sub SimpleForNextLoop()
Dim LoopCounter As Integer
Dim RandomNumber As Double
For LoopCounter = 1 To 10 Step 1
Debug.Print "LoopCounter = " & LoopCounter
RandomNumber = Math.Rnd
If RandomNumber > 0.7 Then Exit For
Next LoopCounter
End Sub

___________________________________________________________________________

FOR EACH NEXT LOOP

*What is For each next loop*?


It allows you to loop over all of the objects in a collection

*Syntax For each next loop*

Sub ListOfWorksheetNames()
Dim SingleSheet As Worksheet
For Each SingleSheet In Worksheets
SingleSheet.Unprotect
Next SingleSheet
End Sub

*How to loop over cells?*

Sub LoopOverCells()

Dim SingleCell As Range


Dim ListofCell As Range

Set ListofCell = Range("A3", Range("A3").End(xlDown))

ThisWorkbook.Activate
Range("E3").Select

For Each SingleCell In ListofCell

If SingleCell.Offset(0, 3).Value < 100 Then


ActiveCell.Value = "Short"
ActiveCell.Offset(1, 0).Select

ElseIf SingleCell.Offset(0, 3).Value < 120 Then


ActiveCell.Value = "Medium"
ActiveCell.Offset(1, 0).Select

Else
ActiveCell.Value = "Long"
ActiveCell.Offset(1, 0).Select

End If
Next SingleCell
*How to do Nested for each loops?*
dim SingleBook as Workbook
dim SingleSheet as Worksheet

for each Singlebook in Workbooks

for each SingleSheet in Singlebook.Worksheet

SingleSheet.Protect

next SingleSheet

Next SingleBook

___________________________________________________________________________

FIND

*How to use find accurately and in whole words*


Range("B3:B15").Find(What:="Ted", Matchcase:=True, LookAt:=xlWhole).Select

*How to find nothing*


Dim FilmCell As Range

Set FilmCell = Range("B3:B15").Find(What:="Brave", MatchCase:=True


LookAt:=xlWhole,)

If FilmCell Is Nothing Then


MsgBox "Nothing is Found"

Else
FilmCell.Select

End If

*How to use FindNext*


Dim FilmName As String
Dim FilmCell As Range
Dim SearchRange As Range
Dim FirstCell As String

FilmName = Application.InputBox( _
Prompt:="Type the name of film", Type:=2)

Set SearchRange = Range("B3", Range("B3").End(xlDown))


Set FilmCell = SearchRange.Find _
(What:=FilmName, MatchCase:=False, LookAt:=xlPart)

If FilmCell Is Nothing Then


MsgBox "Nothing is found"

Else

FirstCell = FilmCell.Address

Do

MsgBox FilmCell.Value & " is released on " & _


FilmCell.Offset(0, 1).Value

Set FilmCell = SearchRange.FindNext(FilmCell)

Loop While FilmCell.Address <> FirstCell

End if

End Sub

___________________________________________________________________________

FUNCTION

*What is a function?*
A function is simply a procedure which returns a value and come in handy
whenever you find yourself writing out the same calculations again and again

*Syntax for function*


Function CustomDate() As String

CustomDate = Format(Date, "dddd dd mmmm yyyy")

End Function

Sub CreateNewWorkSheet()

Worksheets.Add
Range("A1").Value = "Created on " & CustomDate

End Sub

*How to add parameters to the function*


Function CustomDate(DateToFormat As Date) As String

CustomDate = Format(DateToFormat, "dddd dd mmmm yyyy")

End Function
Sub CreateNewWorkSheet()

Worksheets.Add
Range("A1").Value = "Created on " & CustomDate(#8/6/1998#)

End Sub

*Optional parameters must come after the primary paramaters*

___________________________________________________________________________

EVENT PROCEDURES

*What is event procedures?*


is simply a sub routine which runs itself automatically in response to a
certain events

*Example on how to cancel event*

Private Sub Workbook_BeforeClose(Cancel As Boolean)

MsgBox " Who told you to leave!!!?? "

Cancel = True

End Sub

___________________________________________________________________________

ARRAY

*what is an array?*
An array is like a variable which you can store more than 1 value using the
same
variable name

*Option base 1*
para sa 1 mag simula yung count ng array at hindi sa fixed na 0

*Syntax for array na cincosinder na 3 variables nakastore doon*

Sub FixedArray()
Dim TopThreeList(1 To 3) As String
End Sub

*What is multidimensional array*


It is when you can store variables in spreadsheet in multi direction like not
only on the
columns but as well as rows

*Syntax for multidimensional array*


Sub MultiDimensionArray()

Dim TopTenFilms(0 To 9, 0 To 5) As Variant

TopTenFilms(0, 0) = Range("A3")
TopTenFilms(0, 1) = Range("B3")
TopTenFilms(0, 2) = Range("C3")
TopTenFilms(0, 3) = Range("D3")
TopTenFilms(0, 4) = Range("E3")

End Sub

*How to loop over Multidimensional array*

Dim TopTenFilms(0 To 9, 0 To 4) As Variant


Dim Dimension1 As Long, Dimension2 As Long

For Dimension1 = 0 To 9
For Dimension2 = 0 To 4
TopTenFilms(Dimension1, Dimension2) = Range("A3").Offset _
(Dimension1, Dimension2).Value
Next Dimension2
Next Dimension1

*It is good practice to use upperbound and lowerbound


UBound And LBound)*

*Syntax For lbound and ubound for multidimensional array*

Dim TopTenFilms(0 To 9, 0 To 4) As Variant


Dim Dimension1 As Long, Dimension2 As Long

For Dimension1 = LBound(TopTenFilms, 1) To UBound(TopTenFilms, 1)


For Dimension2 = LBound(TopTenFilms, 2) To UBound(TopTenFilms, 2)
TopTenFilms(Dimension1, Dimension2) = Range("A3").Offset _
(Dimension1, Dimension2).Value
Next Dimension2
Next Dimension1

*What are static arrays*


when we have a fixed number of elements in each direction so theyre
referred as fixed size or static arrays

*What are dynamic arrays*


if you dont know how large the array needs to be like for example you cant
predict how many rows you will have etc.

*Syntax for dynamic arrays*

Dim TopTenFilm() As Variant


Dim D1 As Long, D2 As Long

D1 = Range("A3", Range("A3").End(xlDown)).Cells.Count - 1
D2 = Range("A3", Range("A3").End(xlToRight)).Cells.Count - 1

ReDim TopTenFilm(0 To D1, 0 To D2)

*Quicker Way to Dynamic Multidimension Array and how to populate it*

Sub QuickWayDynamicArray()

Dim TopFilms() As Variant

TopFilms = Range("A3", Range("A3").End(xlDown).End(xlToRight)).Value

Worksheets.Add

Range(ActiveCell, ActiveCell.Offset(UBound(TopFilms, 1) - 1, UBound(TopFilms,


2) - 1)).Value = TopFilms

Erase TopFilms

End Sub

___________________________________________________________________________

CHARTS

*How to add charts*


Charts.add in vba

*How to delete charts in all workbook?*

Application.DisplayAlerts = False
On Error Resume Next
Charts.delete

*If you select a single cells, the chart will be based on the entire region*

*How to select non contiguous column to create chart?*

Worksheets("Awards 2015").Activate

Union(Range("A3", Range("A3").End(xlDown)), Range("C3",


Range("C3").End(xlDown))).Select

Charts.Add

*How to declare variable to loop over a range?*

Dim Films As Range, Film As Range, ChartCells As Range

Set Films = Range("A3", Range("A3").End(xlDown))

Set ChartCells = Range("A3", Range("A3").End(xlToRight))


For Each Film In Films

If Film.Offset(0, 2).Value >= 1 Then


Set ChartCells = Union(ChartCells, Range(Film, Film.End(xlToRight)))
End If
Next Film

ChartCells.Select

Charts.Add

*Referencing a Chart*

dim ch as Chart
worksheets("Shee1").select
Range("A3:C19").select

set ch = Charts.add

*How to change chart type and modify it*

dim ch as Chart
worksheets("Shee1").select
Range("A3:C19").select

set ch = Charts.add

ch.chartType = xl3dpie
ch.HasLegend = true
ch.Hastitle = true
ch.ChartTitle.Text = "Noms vs. Wins"

*How to insert axis title*

dim ch as Chart
worksheets("Shee1").select
Range("A3:C19").select

set ch = Charts.add

ch.axes(xlcategory).HasTitle = true
ch.axes(xlcategory).AxisTitle.Text = "Film Name"

ch.axes(xlvalue).HasTitle = true
ch.axes(xlvalue).AxisTitle.Text = "Quantity"

*How to add data labels*

dim ch as Chart
worksheets("Shee1").select
Range("A3:C19").select

set ch = Charts.add

ch.seriescollection(1).hasdatacollections = true
ch.seriescollection(2).hasdatacollections = true
*how to add data labels when there is too many*

dim s as series
dim ch as Chart
worksheets("Shee1").select
Range("A3:C19").select

set ch = Charts.add

for each s in ch.seriescollection


s.hasdatalabels = true
next s

https://www.youtube.com/playlist?list=PLGs61FH9ETZPGqw-RIwteTlfsPPpOp-qP

You might also like