70-165: Microsoft Visual Basic 5.0 Programming


I recently decided to become a Microsoft Certified Professional (MCP), starting with the VB 5 exam. I passed it with a score of 898/1000, which I’m pleased about. I can tell you what I did to prepare for this exam, although I can’t guarantee that the same thing will work for you. I should mention that I’ve been using VB since August 1994 (I taught myself version 3 by reading the supplied manuals), so I wasn’t starting from scratch here. Essentially, I already knew how to use VB (it’s what I do for a living), so I just wanted to know how to pass the exam.

Outside help

With this in mind, I bought (and read!) the Exam Cram VB5 book. According to the cover, this is the “first and last book you need to read before taking your certification exam”. I took this to mean that it was the only book you would need to read, but it actually meant “Read this first, then read other study guides, then read this again before you take the exam”. I personally think that this is rather misleading, but it may just be a misunderstanding.

This book achieves its aims of highlighting the areas that you need to study, but it really falls down on accuracy. The publisher’s website used to contain errata for the first and second printings (although those web pages are no longer available), but there are many other errors that they’ve missed. Because of this, I don’t plan to buy any other books in the “Exam Cram” range, and I can’t really recommend this book. On the other hand, it is a lot cheaper than many exam guides, and it did help me to pass, so you might want to use it.

If you want to investigate alternatives, Amazon has a list of VB study guides (with reviews).

I also read through Microsoft’s Exam Preparation Guide for exam 70-165 (no longer available on their website), which basically tells you the syllabus for the exam.

You can buy practice exams from companies like Transcender, but I didn’t bother, so I don’t know how good they are. I downloaded and installed the Personal Exam Prep (PEP) Tests from Microsoft (unfortunately these are no longer available on their website). These include sample questions for the VB 5 exam, which are just as difficult as the real thing. However, I recommend that you leave this until last, as you don’t have very many, so you don’t want to waste them by memorising the answers rather than the skills.

Once I’d summarised the gaps in my knowledge, I read through the Books Online that came with VB 5. One interesting thing here was that doing the study did show me that there were gaps, so I have benefited from studying for this exam.

Revision notes

Here are the notes I made for myself while I was revising. These are just brief notes to jog my memory on points that I was vague on. They may or may not be helpful to you, but you’re welcome to peruse them …

Any control can be dragged, except a menu, timer, line, or shape.

TypeOf doesn’t use brackets: If TypeOf MyControl Is TextBox Then

PictureBox and Image controls both have a Picture property.

Input() used with Put or Print #. Input or Binary files only.
Input # used with Write #. Input or Binary files only.
Line Input # used with Print #.
Write # is universal.
Print # uses system-dependent locale settings.

Option Private Module: Public variables are only visible in current project.
Option Private: Public procedures are only visible in current project.
Both are basically irrelevant in VB – would be useful in Excel.

The DDB function is used to calculate depreciation.

If you put Declare (API stuff) in a form or class, it must be declared as Private.
Procedure names are case-sensitive.
For core Windows libraries (User32, Kernel32, or GDI32), you don’t need to say “.dll”.
User defined types can’t be passed to DLLs by value.

AddressOf doesn’t use brackets.
It can only be used in standard modules, not classes or forms.
It can only be used in argument lists.
It can only be used with user defined subs or functions – not Declared ones.

Memory used by an array – size of elements, plus 20 bytes array overhead, plus 4 bytes per dimension.

Deftype applies to functions too.

The following names cannot be used as property or method names, because they belong to the underlying IUnknown and IDispatch interfaces: QueryInterface, AddRef, Release, GetTypeInfoCount, GetTypeInfo, GetIDsOfNames, and Invoke. These names will cause a compilation error.

Booking the exam

I called Sylvan Prometric on 0800 592873, and it cost me £76.38 (i.e. £65 + 17.5% VAT). One thing to be aware of is that this company doesn’t play by their own rules when it comes to exam cancellations. They say that if you don’t give two days notice then you still get charged for the exam. However, I was originally due to take this exam on a Saturday morning, then I found a message on my answerphone on Friday evening telling me that the exam had been “descheduled” and that I would need to phone them up to arrange a new date. This resulted in a three week delay.

The exam itself

Once I turned up, and went into the exam room, I left my coat and bag in a side room, which was then locked. When I was partway through the exam, I got bored and started reading through some instructions next to the computer, which said that you’re not allowed to bring in bags, mobile phones, or pagers. Oops. I had my pager on, but because it was covered by my T-shirt the staff at the exam centre hadn’t noticed it. There wasn’t actually anybody invigilating there, and so I figured that it would be simpler to just keep quiet, rathe than trying to find someone and turn myself in. Of course, I knew that I wasn’t going to cheat. Mind you, while I can see the objections to a mobile phone, I think that the idea of cheating by pager is quite amusing. Since your accomplice wouldn’t know what the questions were, they’d be sending you hot tips at random, while you’d be fuming away “No, not that one!” Anyhoo…

Before I started the exam, I took the practice test, which is solely intended to make you familiar with the interface. The questions I saw were all to do with astronomy, i.e. nothing to do with the exam subject. Actually, the interface in the practice was worse than the actual test itself, since it included sample questions where you type in text, or click on part of pictures. The actual test itself consisted of two types of multiple-choice question:

  • Those with only one correct answer, where they use option buttons.
  • Those with more than one correct answer, where they use check boxes. In these cases, they always indicated the correct number of responses, e.g. “Which two of these code samples will work?”. In other words, you don’t have to guess, and this helps you to use a process of elimination.

When the exam asks you for the difference between two objects, wrong answers generally fall into two categories: those which don’t apply to the first object, and those which apply to both. For example, if they said “A Form is different from a TextBox because the Form has a SetFocus method”, this is wrong because a TextBox does too. If they said “A Form is different from a TextBox because the Form has a Length property” this is wrong because a Form doesn’t have a Length property.

You should also be alert for things that don’t exist, e.g. the Kirk property of a TextBox.

As well as knowing what attributes mean, you also need to know what they are called. For instance, if you want to know the length of text in a TextBox, do you use the Length property or the TextLength property?

Timing was not a problem for me at all in the exam. It lasts 75 minutes, and I answered all the questions in the first 30, although I marked the ones that I wasn’t sure about. I then spent the next 20 minutes reviewing these marked questions (the software helps you with this), and gradually whittling the list down. In some cases, I changed my answer. In other cases, I said to myself “Well, I’m still not sure that this is right, but I don’t see myself changing it, so I’ll unmark it”. I then spent the next 20 minutes doing a complete review of all the questions in the exam, which left me five minutes. At this point, I’d done all the checking I could, so I decided to finish early. The computer marks your test immediately, although you have to get past the comment screens before it tells you whether you’ve passed. Once you know that, you can get a transcript from the test centre, which shows you your percentage in each of the four sections.

As an aside, once the exam was over, it took me ages to find someone who could unlock the coat room and give me my transcript, so I think this vindicates my earlier decision to stay put.


I thought that this was a fair exam. I found it quite easy, but you need to know a lot about Visual Basic to pass. However, there were areas that I’ve only read about, and haven’t actually used, so this qualification doesn’t necessarily reflect experience.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.