In contrast to TechGnome's post, I really wouldnt use ByRef to return multiple different values from a function; I would still always seek a way to encapsulate related data in a class, and if a function did several different things to data so disparate that it wouldnt make sense to encapsulate it, I would question whether it would make sense to have one function to do all that manipulation.