«ByRef» делает одну вещь: он изменяет локальную переменную или свойство, которое передается в качестве аргумента.Если вы не хотите этого делать, и редко делаете, его не следует использовать.
В вашем примере может оказаться возможным придумать сценарий, в котором этот код имеет какой-то смысл, но это никогда не будет действительно ясно.Он одновременно изменяет значение переменной в вызывающем методе и возвращает возможно измененное значение.
Два варианта использования ByRef - это условная инициализация и множественный возврат.Вы код Сорта делает оба.Но это происходит так, что это необычно и не очень полезно.Обычно значение инициализации происходит изнутри метода, в этом случае инициализация должна произойти первой.
Ядром функции является проверка, чтобы увидеть, находится ли цена в определенном диапазоне, но потому что «действительный»может уже иметь значение false, даже если значение 'цена' находится за пределами недопустимого диапазона, оно все равно может возвращать значение false.
Dim valid As Boolean = true
...
valid=valid AndAlso Check(price)
Было бы то же самое и было бы намного легче понять.