The words are sometimes interchanged with one another in the various texts and websites you will come across. There is no real easy way to describe the differences between them because unfortunately it differs across different programming paradigms and different languages!

Visual basic has a fairly clear view of the difference between procedures and functions which is what we will concentrate on. Putting it simply a function can return a value whilst a procedure can not.

Procedures in visual basic are known as subroutines (or just sub). Below is some example definitions

Sub refreshScreen()

Function min(x As integer, y As Integer)

As a rule of thumb you should use procedures if you do not require a return value. Otherwise use a function.