200 likes | 575 Views
VBA in Excel. Walter Milner. Introduction. VBA = Visual Basic for Applications Enables end-user programming In MS Office applications Formulae and macros OK for simple actions, but.. Advantages over formulae and macros: Multiple nested if is easy Loops easy Debugging easy.
E N D
VBA in Excel Walter Milner
Introduction • VBA = Visual Basic for Applications • Enables end-user programming • In MS Office applications • Formulae and macros OK for simple actions, but.. • Advantages over formulae and macros: • Multiple nested if is easy • Loops easy • Debugging easy
Getting started View..Toolbars..Control
Add a button Click the button button Drag on sheet to create one
Format it Right click on button Select properties Set as required Note distinction between name and caption
Program it Right click button Select View code:
Test it On Control Toolbox, click set square This toggles run/design Click the button
Referring to cells Private Sub CommandButton1_Click() Dim x As Integer Dim y As Integer Dim z As Integer Dim result As Integer x = Cells(1, 2).Value y = Cells(2, 2).Value z = Cells(3, 2).Value result = x * y + z Cells(4, 2).Value = result End Sub
The VBA Excel Object model • Hierarchy of classes • Use to refer to things in an Excel application • Very large number of classes, properties and methods • Have to use on-screen help for reference
The VBA Excel Object model • Object is a thing • Property is some property of an object • Method is something the object can be told to do • Event is something that can happen to the object • Collection is a set of related objects • Enumeration is action returning complete set of things (eg all fonts on system)
Example properties of Application Program a button which sets a value for this property and see what happens Try it in a loop for a bizarre effect
Example method Program a button which calls the findfile method of the application
Example collection - Display the count property of the worksheets collection in a msgbox to show how many sheets there are in the workbook
Using For Each .. Next in a collection Private Sub CommandButton4_Click() Dim w As Worksheet For EachwIn Application.Worksheets MsgBox (w.Name) Next End Sub
The RangeSelection property of the ActiveWindow This is a Range object So it has the properties of a Range object Use them to program a button which displays the total of the numbers in the cells selected
2d array exercise Use the RangeSelection property to program a button which does a vertical flip of selected cells