An article by Scott GreenBerger on GeeksWithBlogs points this out in a way that is easy to understand: http://www.geekswithblogs.net/sgreenberger/articles/ExaminingByVal.aspx
As Scott pointed out, this means that if you pass the object by value (ByVal), ONLY the reference to it is passed by value. That means if you pass an object Car (or in Scott's article a Beer Object :) ) to another procedure (or friend in this case) By Value, and the procedure executes car.Wreck(), the Car Object that you have passed by value will also be wrecked! Easy enough to understand? Yes, I had a little trouble wrapping my brain around this one at first until I read more of Scott's article.
Scott does a great job of explaining it in his article.