MS Visual Basic Applications Walter Milner Eventdriven programming
MS Visual Basic Applications Walter Milner
Event-driven programming l l l 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 l l l 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 l l Option Explicit YES! Constants – Private Const My. Int As Integer = 5
Comments, line continuation and hex Comments start with an apostrophe l 'and run to the end of the line l A very long statement can use a_ to continue onto the next line l Hex constants written like &HFF 0012 l
Data types l l l l l 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 function Converts an expression to 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 Command. Button 1_Click() Dim x As Integer Dim y As Integer Dim z As Integer x = Text. Box 1. Value y = Text. Box 2. Value z=x+y Label 1. Caption = z End Sub Copy this Correct it Add other buttons
VB Core II l l l Conditional statements Exception handling Loops Arrays Debugging
if statements If c > 5 Then x = 1: y = 3 If c > 5 Then x=1 y=3 End If If c > 5 Then x=1 y=3 Else z=7 End If If c > 5 Then x=1 y=3 Else. If c = 4 Then z=7 Else x=9 End If
select Dim 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 l l l 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 Command 1_Click() Dim num 1 As Integer Dim num 2 As Integer Dim result As Integer On Error Go. To my. Error. Handler num 1 = Textbox 1. Text num 2 = Textbox 2. Text result = num 1 + num 2 Label 1. Caption = result Exit Sub Exercise Try this out in the calculator program Then deal with divide by zero (11) my. Error. Handler: If Err. Number = 13 Then Msg. Box ("Please enter a valid number") Else Msg. Box (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. . l l l a for next 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 c=1 Do While c < 5 c=c+1 Loop Dim c As Integer c=1 Do c=c+1 Loop While c < 5 Dim c As Integer c=1 Do Until c >4 c=c+1 Loop Dim c As Integer, x as integer c=1 x=2 Do 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 l l Fill an 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
Dynamic arrays Dim x() As Integer Re. Dim x(5) Dim i, j As Integer For i = 1 To 5 x(i) = 99 Next Re. Dim 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
- Slides: 21