Transcript

Class 3

Programming in Visual Basic

Class Objectives

• Learn about input/output• Learn about strings• Learn about subroutines• Learn about arrays• Learn about Boolean operations

Addressing Spreadsheet Cells

A B C D

1

2 45

3

4

Rows

Columns

Cell C2

A1 Reference Style

Addressing Spreadsheet Cells

A B C D

1

2 45

3

4

Rows

Cell (2, 3)

R1C1 Reference Style

row, column

Columns

VBA Interaction with Excel

Excel

VBA Function

0, 1, 2, 3 … numbers

1 number

Excel

VBA Subroutine

0, 1, 2, 3 … numbers

1, 2, 3 … numbers

Our focus today

Strings

Sub string_demo() Cells(10, 1) = "First" Cells(10, 2) = "Second" Cells(10, 3) = "Third"End Sub

Using the VBA editor, enter the following program…

While in VBA editor, press F5 to run

SubroutineName

Stringsin double quotes

No arguments passed

Results

Sample Subroutine with Calculation

Sub sum_and_product_of_five_numbers() 'This program gives the sum and product of 'five numbers located in Cells B1 to B5 Dim row As Integer Dim sum, product As Double sum = 0 product = 1 For row = 1 To 5 sum = sum + Cells( row, 2) product = product * Cells( row, 2) Next row Cells(6, 1) = "sum" Cells(7, 1) = "product" Cells(6, 2) = sum Cells(7, 2) = productEnd Sub

Subroutine name

Comment

Declare variables

Initialize variables

Start loop

Input and calculate

End loop

Output

End

In VBA editor, enter this program.

Example (con’t)

Enter fivenumbers incells B1 to B5

Example (con’t)1. Press

Alt+F8

2. Select

3. Press Run

Result

An easier way to execute a subroutine You can link a

subroutine to a keyboard control character.

Assignment is made under Options in the Macro dialog box.

Using Macro Options Under Options, fill in a

letter next to “ctrl+” and the selected macro can be executed by pressing that key combination.

Be careful. If you choose a character that is a standard Windows function (e.g., ctrl+c), VBA will overwrite the Windows function with your macro.

Arrays

Dim list (5) as integer

Example 1

0 4

1 7

2 89

3 8

4 45

5 -3

Indices

Default: Index starts with zero

Numbersstoredinarray

Arrays

Dim list (1 to 5) as integer

1 7

2 89

3 8

4 45

5 -3

Indices

Override: Index starts with one

Numbersstoredinarray

Example 2

Arrays

Dim list (1 to 5, 1 to 2) as integer

1 7 32

2 89 9

3 8 46

4 45 -8

5 -3 8

Row Indices

1 2

Column Indices

This is a two-dimensional array. Up to 60 dimensions are allowed.

Example 3

Sample ProgramSub array_demo() Dim list(1 To 5) As Integer Dim i As Integer Dim sum As Integer sum = 0 i = 1 list(1) = 1 list(2) = 4 list(3) = 9 list(4) = 16 list(5) = 25 Do While sum < 16 sum = sum + list( i) i = i + 1 Loop Cells(15, 1) = "sum =" Cells(15, 2) = sumEnd Sub

Title

Declare variables

Initialize variables

Start loop

Calculate

End loop

Output

EndEnter and run this program.

ResultsSub array_demo() Dim list(1 To 5) As Integer Dim i As Integer Dim sum As Integer sum = 0 i = 1 list(1) = 1 list(2) = 4 list(3) = 9 list(4) = 16 list(5) = 25 Do While sum < 16 sum = sum + list( i) i = i + 1 Loop Cells(15, 1) = "sum =" Cells(15, 2) = sumEnd Sub

Boolean Operations

Truth Tables

A B Y0 0 00 1 01 0 01 1 1

And

A B Y0 0 00 1 11 0 11 1 1

Or

A Y0 11 0

Not

result = expression1 Or expression2

result = Not expression

result = expression1 And expression2

0 = false1 = true

Y A B

Example Program

Option ExplicitSub Boolean_test() Dim truth As Boolean Dim a, b As Integer a = 1 b = 2 truth = False If a = 1 And b = 2 Then truth = True End If Cells(1, 1) = truthEnd Sub

Title

Declare variables

Initialize

Boolean operationAssign

OutputEnd

Enter and run this program. To see what happens, play with various Boolean operators, and different initial values of a and b.

Function Exercise The value of (the ratio of a circle’s circumference to its

diameter) has been estimated for about 4000 years. Several methods for calculating are presented in the Math

Supplement (pages 8-10). Excel’s built in function for is only accurate to 14 decimal

places (van Rooman did better in 1593). As a team, pick ~4 (1 per team member) of the various

methods used to estimate using infinite series (avoid Methods a, c, e and k).

Program your function to calculate the first 50 terms, or stop when the value does not change by more than 10-6.

Subroutine Exercise Convert your function into a subroutine. The subroutine should title Column A as and

Column B as that is, the change in from the previous iteration.

Then beginning in Cells A2 and B2 and going down, output the successive terms of .

Stop the iteration after the first 200 terms, or if an additional term does not change the value of by more than 10-10.

For each method selected by your teammates, compare the rate that they converge to an accurate value of


Top Related