Тим охватил то, что вы просили напрямую, но следует еще кое-что иметь в виду, что любая переменная ссылочного типа, например, определенный пользователем класс, даже если она передается по значению, позволит вам вносить изменения в свойства этих экземпляров и т.д., которые остаются. Однако это не позволит вам изменить весь объект. Возможно, именно поэтому вам показалось, что по умолчанию используется ссылка
Public Sub (Something As WhateverClass)
Something = New WhateverClass 'will result in no changes when outside this method
Something.Property1 = "Test" 'will result in an updated property when outside this method
End Sub
С MSDN :
Значением ссылочного типа является указатель на данные в другом месте в памяти.
Это означает, что когда вы передаете ссылочный тип по значению,
код процедуры имеет указатель на данные базового элемента,
даже если он не может получить доступ к самому базовому элементу. За
Например, если элемент является переменной массива, код процедуры
не имеет доступа к самой переменной, но он может получить доступ к массиву
члены.