You are on page 1of 21

MS Visual Basic

Applications

Walter Milner
Event-driven programming

 Standard approach for GUIs


 Contrast with old character interfaces – program
determines what happens
 In GUI, the user triggers what application does
(mostly)
 Event examples are key press, mouse move, timer
timeouts
 Correspond to native Windows Messages (next
slide)
 Event handler = a subroutine which will execute
when that event happens
Variables

 Dim x as Integer
 Dim x,y as Integer NO!
 Is case sensitive (kind of)
 Variable naming conventions
• Microsoft Simonyi Hungarian Reddick
• House rules
 Assignment statement –
x=4
 Option Explicit YES!
 Constants –
Private Const MyInt As Integer = 5
Comments, line continuation and hex

 Comments start with an apostrophe


 'and run to the end of the line

 A very long statement can use a_

to continue onto the next line


 Hex constants written like &HFF0012
Data types

 Integer Long
 Single Double
 Currency
 Byte unsigned 0 - 255
 String
 Boolean
 Date
 Object
 Variant NO!
Data type conversion
DIM x as integer
x = Cint("10")

Conversion Converts an expression to


function
Cbool Boolean
Cbyte Byte
Ccur Currency
Cdate Date
CDbl Double
Cint Integer
CLng Long
CSng Single
CStr String
Cvar Variant
CVErr Error
Controls
Private Sub CommandButton1_Click()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = TextBox1.Value
y = TextBox2.Value
z=x+y
Label1.Caption = z
End Sub

Copy this
Correct it
Add other buttons
VB Core II

 Conditionalstatements
 Exception handling

 Loops

 Arrays

 Debugging
if statements
If c > 5 Then x = 1: y = 3

If c > 5 Then
x=1 If c > 5 Then
y=3 x=1
End If y=3
ElseIf c = 4 Then
z=7
If c > 5 Then
Else
x=1
x=9
y=3
End If
Else
z=7
End If
select

Dim Number
Number = 8 ' Initialize variable.
Select Case Number ' Evaluate Number.
Case 1 To 5 ' Number between 1 and 5, inclusive.
x=4
Case 6, 7, 8 ' Number between 6 and 8.
x=5
Case 9 To 10 ' Number is 9 or 10.
x=6
Case Else ' Other values.
x=7
End Select
Error and exception handling

 exception = problem event at run-time


 usually related to I/O
 eg file not found, server connection lost,
invalid user input
 not a programming bug
 VB calls exception errors
 (Unlike Java) VB does not force
exception handling – but should do
Error handlers – example - invalid numbers
Private Sub Command1_Click()
Dim num1 As Integer
Dim num2 As Integer
Dim result As Integer

On Error GoTo myErrorHandler


num1 = Textbox1.Text Exercise
num2 = Textbox2.Text
Try this out in the calculator
result = num1 + num2
program
Label1.Caption = result
Exit Sub Then deal with divide by zero (11)

myErrorHandler:
If Err.Number = 13 Then
MsgBox ("Please enter a valid number")
Else
MsgBox (Err.Description)
End If
Resume Next

End Sub
For next loops

Dim x as Integer, total As Integer


total = 0
For x = 1 To 5
total = total + x
Next

Dim x as Integer, total As Integer


total = 0
For x = 1 To 5 Step 2
total = total + x
Next
Debugging
Exercises – Use the debugger to watch..

a for next loop looping from 1 to 5


 outputting the multiples of 3 from 99 to 3

 adding up the odd numbers between 1


and 9
Other loops

Dim c As Integer Dim c As Integer


c=1 c=1
Do While c < 5 Do Until c >4
c=c+1 c=c+1
Loop Loop

Dim c As Integer Dim c As Integer, x as integer


c=1 c=1
Do x=2
c=c+1 Do
Loop While c < 5 c=c+1
Loop Until c>4 And x<>3
Arrays (fixed size)

Dim x(100) As Integer


Dim i As Integer
For i = 0 To 100
x(i) = 99
Next
Exercise – use the debugger – check each stage

 Fillan array with 25 random integers in


the range 1 to 100 (Rnd() gives a
random single between 0 and 1 )
 Find the total

 Find the largest

 Search the array for a value given in


cell(1,1)
Arrays (2 d)

Dim x(1 To 3, 1 To 3) As Integer


Dim i as integer, j As Integer
For i = 1 To 3
For j = 1 To 3
x(i, j) = 99
Next
Next
Dynamic arrays

Dim x() As Integer


ReDim x(5)

Dim i, j As Integer
For i = 1 To 5
x(i) = 99
Next

ReDim Preserve x(10)


For i = 6 To 10
x(i) = 100
Next
Exercise

Use the =RAND() function to fill a column of a sheet


with 20 random numbers

Then set up a button and write VB code which will –


•read those 20 numbers into an array
•sort the array into increasing order (bubblesort)
•display the numbers in the next column of the
spreadsheet

You might also like